Commit 20bba69b authored by Nikolay Igotti's avatar Nikolay Igotti

Reworked signing.

parent 20e72842
...@@ -316,11 +316,10 @@ fun localSign(signer: String, lib: File): File { ...@@ -316,11 +316,10 @@ fun localSign(signer: String, lib: File): File {
return lib return lib
} }
fun remoteSign(signHost: String, lib: File): File { fun remoteSign(signHost: String, lib: File, out: File) {
println("Remote signing $lib on $signHost") println("Remote signing $lib on $signHost")
val user = skiko.signUser ?: error("signUser is null") val user = skiko.signUser ?: error("signUser is null")
val token = skiko.signToken ?: error("signToken is null") val token = skiko.signToken ?: error("signToken is null")
val out = file("${lib.absolutePath}.signed")
val cmd = """ val cmd = """
TOKEN=`curl -fsSL --user $user:$token --url "$signHost/auth" | grep token | cut -d '"' -f4` \ TOKEN=`curl -fsSL --user $user:$token --url "$signHost/auth" | grep token | cut -d '"' -f4` \
&& curl --no-keepalive --http1.1 --data-binary @${lib.absolutePath} \ && curl --no-keepalive --http1.1 --data-binary @${lib.absolutePath} \
...@@ -339,8 +338,6 @@ fun remoteSign(signHost: String, lib: File): File { ...@@ -339,8 +338,6 @@ fun remoteSign(signHost: String, lib: File): File {
println(out) println(out)
println(err) println(err)
throw GradleException("Cannot sign $lib: $err") throw GradleException("Cannot sign $lib: $err")
} else {
return out
} }
} }
...@@ -431,10 +428,27 @@ val skikoJvmJar: Provider<Jar> by tasks.registering(Jar::class) { ...@@ -431,10 +428,27 @@ val skikoJvmJar: Provider<Jar> by tasks.registering(Jar::class) {
from(kotlin.jvm().compilations["main"].output.allOutputs) from(kotlin.jvm().compilations["main"].output.allOutputs)
} }
val createChecksums by project.tasks.registering(org.gradle.crypto.checksum.Checksum::class) { val maybeSign by project.tasks.registering {
val linkTask = project.tasks.withType(LinkSharedLibrary::class.java).single { it.name.contains(buildType.id) } val linkTask = project.tasks.withType(LinkSharedLibrary::class.java).single { it.name.contains(buildType.id) }
dependsOn(linkTask) dependsOn(linkTask)
files = linkTask.outputs.files.filter { it.isFile } + val lib = linkTask.outputs.files.single { it.name.endsWith(".dll") || it.name.endsWith(".dylib") || it.name.endsWith(".so") }
inputs.files(lib)
val output = file(lib.absolutePath + ".maybesigned")
outputs.files(output)
doLast {
if (skiko.signHost != null) {
remoteSign(skiko.signHost!!, lib, output)
} else {
lib.copyTo(output, overwrite = true)
}
}
}
val createChecksums by project.tasks.registering(org.gradle.crypto.checksum.Checksum::class) {
dependsOn(maybeSign)
files = maybeSign.get().outputs.files +
if (targetOs.isWindows) files(skiaDir.map { it.resolve("out/${buildType.id}-x64/icudtl.dat") }) else files() if (targetOs.isWindows) files(skiaDir.map { it.resolve("out/${buildType.id}-x64/icudtl.dat") }) else files()
algorithm = Checksum.Algorithm.SHA256 algorithm = Checksum.Algorithm.SHA256
outputDir = file("$buildDir/checksums") outputDir = file("$buildDir/checksums")
...@@ -442,20 +456,12 @@ val createChecksums by project.tasks.registering(org.gradle.crypto.checksum.Chec ...@@ -442,20 +456,12 @@ val createChecksums by project.tasks.registering(org.gradle.crypto.checksum.Chec
val skikoJvmRuntimeJar by project.tasks.registering(Jar::class) { val skikoJvmRuntimeJar by project.tasks.registering(Jar::class) {
archiveBaseName.set("skiko-$target") archiveBaseName.set("skiko-$target")
dependsOn(createChecksums)
from(skikoJvmJar.map { zipTree(it.archiveFile) }) from(skikoJvmJar.map { zipTree(it.archiveFile) })
val linkTask = project.tasks.withType(LinkSharedLibrary::class.java).single { it.name.contains(buildType.id) } from(maybeSign.get().outputs.files)
val lib = linkTask.outputs.files.single { it.isFile } rename {
val maybeSigned = if (lib.name.endsWith(".dylib")) { // Not just suffix, as could be in middle of SHA256.
println("Resulting dylib: $lib") it.replace(".maybesigned", "")
skiko.signHost?.let { signHost ->
remoteSign(signHost, lib)
} ?: lib
} else {
lib
} }
from(maybeSigned)
rename("${lib.name}.signed", lib.name)
if (targetOs.isWindows) { if (targetOs.isWindows) {
from(files(skiaDir.map { it.resolve("out/${buildType.id}-x64/icudtl.dat") })) from(files(skiaDir.map { it.resolve("out/${buildType.id}-x64/icudtl.dat") }))
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment