* add strict versioned JSON profile documents and canonical serialization * package validated built-in end-entity profile templates * persist immutable profile versions with canonical hashes * require explicit atomic profile activation * resolve issuance profiles only from validated active store references * enforce deny-by-default subject and SAN policies * support typed DNS, IP, URI, and RFC822 SAN identities * remove requester control over certificate serials and reserved fields * bind issued credentials to exact profile ID, version, and hash * enforce closed end-entity and CA credential profile-binding variants * validate issued DER against the complete approved profile * add real SAN issuance, CSR rejection, malicious-backend, lifecycle, snapshot, and redaction coverage BREAKING CHANGE: replaces direct and mutable pre-release profile handling with strict JSON import, immutable version persistence, explicit activation, and exact credential profile bindings.
60 lines
1.6 KiB
Groovy
60 lines
1.6 KiB
Groovy
plugins {
|
|
id 'buildlogic.java-application-conventions'
|
|
id 'com.palantir.git-version'
|
|
}
|
|
|
|
group='org.egothor'
|
|
|
|
dependencies {
|
|
implementation 'org.apache.commons:commons-text'
|
|
implementation 'commons-cli:commons-cli'
|
|
implementation platform('tools.jackson:jackson-bom:3.1.5')
|
|
implementation 'tools.jackson.core:jackson-core'
|
|
implementation project(':lib')
|
|
}
|
|
|
|
application {
|
|
// Define the main class for the application.
|
|
mainClass = 'zeroecho.pki.PkiApplication'
|
|
}
|
|
|
|
jar {
|
|
manifest {
|
|
attributes(
|
|
'Main-Class': application.mainClass,
|
|
'Implementation-Title': rootProject.name,
|
|
'Implementation-Version': "${version}"
|
|
)
|
|
}
|
|
|
|
from sourceSets.main.output
|
|
|
|
dependsOn configurations.runtimeClasspath
|
|
|
|
// Include each JAR dependency
|
|
configurations.runtimeClasspath.findAll { it.exists() && it.name.endsWith('.jar') }.each { jarFile ->
|
|
def jarName = jarFile.name.replaceAll(/\.jar$/, '')
|
|
|
|
from(zipTree(jarFile)) {
|
|
// Exclude signature-related files
|
|
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
|
|
|
|
// Rename license/notice files to avoid conflicts
|
|
eachFile { file ->
|
|
if (file.path ==~ /META-INF\/(LICENSE|NOTICE)(\..*)?/) {
|
|
file.path = "META-INF/licenses-from-${jarName}/${file.name}"
|
|
}
|
|
}
|
|
|
|
includeEmptyDirs = false
|
|
}
|
|
}
|
|
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
}
|
|
|
|
javadoc {
|
|
options.links("https://www.egothor.org/javadoc/zeroecho/lib")
|
|
}
|
|
|