diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index 3fb7452e0..ed4ace1b8 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Build klibs run: ./gradlew iosArm64MainKlibrary iosX64MainKlibrary - name: Build XCFrameworks diff --git a/.github/workflows/build-jvm.yml b/.github/workflows/build-jvm.yml index b0746fdbb..8fe78c212 100644 --- a/.github/workflows/build-jvm.yml +++ b/.github/workflows/build-jvm.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Build jar run: ./gradlew assemble - name: Upload jar datatypes diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml index ac58de059..b769ae71b 100644 --- a/.github/workflows/publish-dry-run.yml +++ b/.github/workflows/publish-dry-run.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Publish to Maven Local run: ./gradlew clean datatypes:publishToMavenLocal datatypes-jws:publishToMavenLocal datatypes-cose:publishToMavenLocal env: diff --git a/.github/workflows/publish-pages-only.yml b/.github/workflows/publish-pages-only.yml index 7c29b950e..e4bf9728a 100644 --- a/.github/workflows/publish-pages-only.yml +++ b/.github/workflows/publish-pages-only.yml @@ -15,6 +15,10 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' - name: Build Dokka HTML run: ./gradlew dokkaHtmlMultiModule - name: Setup Pages diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d96ad476a..7b0ec2a01 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Publish to Sonatype run: ./gradlew clean datatypes:publishToSonatype datatypes-jws:publishToSonatype datatypes-cose:publishToSonatype closeSonatypeStagingRepository env: diff --git a/.github/workflows/test-ios.yml b/.github/workflows/test-ios.yml index e102ff37d..b50b8ea3c 100644 --- a/.github/workflows/test-ios.yml +++ b/.github/workflows/test-ios.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Build klibs run: ./gradlew iosArm64MainKlibrary iosX64MainKlibrary - name: Run tests diff --git a/.github/workflows/test-jvm.yml b/.github/workflows/test-jvm.yml index 19edf1321..34aac1f76 100644 --- a/.github/workflows/test-jvm.yml +++ b/.github/workflows/test-jvm.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' - name: Run tests run: ./gradlew allTests - name: Test Report diff --git a/CHANGELOG.md b/CHANGELOG.md index 41857c580..0d44794fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,7 +29,7 @@ * Throw new type `Asn1Exception` for ASN.1-related errors * Throw `IllegalArgumentException` for input-related errors * Add `xxxOrNull()` functions for all encoding/decoding/parsing functions - * Add `xxxSafe()` functions to encapsulate endocing/decoding in `KmmResult` + * Add `xxxSafe()` functions to encapsulate encoding/decoding in `KmmResult` * Return `KmmResult` for conversions between different key representations ( i.e. `CryptoPublicKey`, `CoseKey` and `JsonWebKey`) ### 2.2.0 @@ -45,4 +45,8 @@ * New `CryptoAlgorithm` class * New `CryptoSignature` class for easy Asn1 - RawByteArray conversion * Rename function in file `JcaExtensions.kt` from `.toPublicKey` to `.toJcaPublicKey` to reflect connection to JVMname function in file `JcaExtensions.kt` from `.toPublicKey` to `.toJcaPublicKey` to reflect connection to JVM -* Remove VcLib-specific constants \ No newline at end of file +* Remove VcLib-specific constants + +#### 2.2.1 +* Update conventions + * Rename CBOR annotations \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 51c2d6c3f..8ff572838 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.dokka.gradle.DokkaMultiModuleTask plugins { - id("at.asitplus.gradle.conventions") version "1.9.20+20231114" //version can be omitted for composite build + id("at.asitplus.gradle.conventions") version "1.9.22+20240115" //version can be omitted for composite build } group = "at.asitplus.crypto" diff --git a/datatypes-cose/build.gradle.kts b/datatypes-cose/build.gradle.kts index 11940ded8..c26259cc0 100644 --- a/datatypes-cose/build.gradle.kts +++ b/datatypes-cose/build.gradle.kts @@ -8,7 +8,7 @@ plugins { id("at.asitplus.gradle.conventions") } -version = "2.2.0" +version = "2.2.1" kotlin { jvm() diff --git a/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseHeader.kt b/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseHeader.kt index de601c2df..372579e49 100644 --- a/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseHeader.kt +++ b/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseHeader.kt @@ -6,7 +6,7 @@ import io.matthewnelson.encoding.base16.Base16 import io.matthewnelson.encoding.core.Encoder.Companion.encodeToString import kotlinx.serialization.* import kotlinx.serialization.cbor.ByteString -import kotlinx.serialization.cbor.SerialLabel +import kotlinx.serialization.cbor.CborLabel /** * Protected header of a [CoseSigned]. @@ -14,28 +14,28 @@ import kotlinx.serialization.cbor.SerialLabel @OptIn(ExperimentalSerializationApi::class) @Serializable data class CoseHeader( - @SerialLabel(1) + @CborLabel(1) @SerialName("alg") val algorithm: CoseAlgorithm? = null, - @SerialLabel(2) + @CborLabel(2) @SerialName("crit") val criticalHeaders: String? = null, - @SerialLabel(3) + @CborLabel(3) @SerialName("content type") val contentType: String? = null, - @SerialLabel(4) + @CborLabel(4) @SerialName("kid") @ByteString val kid: ByteArray? = null, - @SerialLabel(5) + @CborLabel(5) @SerialName("IV") @ByteString val iv: ByteArray? = null, - @SerialLabel(6) + @CborLabel(6) @SerialName("Partial IV") @ByteString val partialIv: ByteArray? = null, - @SerialLabel(33) + @CborLabel(33) @SerialName("x5chain") @ByteString // TODO this is wrong in the ISO example of IssuerAuth!? diff --git a/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseKey.kt b/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseKey.kt index f838a2ef0..16e91ffa2 100644 --- a/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseKey.kt +++ b/datatypes-cose/src/commonMain/kotlin/at/asitplus/crypto/datatypes/cose/CoseKey.kt @@ -14,7 +14,7 @@ import kotlinx.serialization.* import kotlinx.serialization.builtins.ArraySerializer import kotlinx.serialization.builtins.ByteArraySerializer import kotlinx.serialization.cbor.ByteString -import kotlinx.serialization.cbor.SerialLabel +import kotlinx.serialization.cbor.CborLabel import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder @@ -180,46 +180,46 @@ object CoseKeySerializer : KSerializer { @Serializable private class CoseKeySerialContainer( - @SerialLabel(1) + @CborLabel(1) @SerialName("kty") val type: CoseKeyType, - @SerialLabel(2) + @CborLabel(2) @SerialName("kid") @ByteString val keyId: ByteArray? = null, - @SerialLabel(3) + @CborLabel(3) @SerialName("alg") val algorithm: CoseAlgorithm? = null, - @SerialLabel(4) + @CborLabel(4) @SerialName("key_ops") val operations: Array? = null, - @SerialLabel(5) + @CborLabel(5) @SerialName("Base IV") @ByteString val baseIv: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("crv") val curve: CoseEllipticCurve? = null, - @SerialLabel(-2) + @CborLabel(-2) @SerialName("x") @ByteString val x: ByteArray? = null, - @SerialLabel(-3) + @CborLabel(-3) @SerialName("y") @ByteString val y: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("n") val n: ByteArray? = null, - @SerialLabel(-2) + @CborLabel(-2) @SerialName("e") @ByteString val e: ByteArray? = null, - @SerialLabel(-4) + @CborLabel(-4) @SerialName("d") @ByteString val d: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("k") @ByteString val k: ByteArray? = null @@ -261,35 +261,35 @@ object CoseKeySerializer : KSerializer { @Serializable private class CoseEcKeySerialContainer( - @SerialLabel(1) + @CborLabel(1) @SerialName("kty") val type: CoseKeyType, - @SerialLabel(2) + @CborLabel(2) @SerialName("kid") @ByteString val keyId: ByteArray? = null, - @SerialLabel(3) + @CborLabel(3) @SerialName("alg") val algorithm: CoseAlgorithm? = null, - @SerialLabel(4) + @CborLabel(4) @SerialName("key_ops") val operations: Array? = null, - @SerialLabel(5) + @CborLabel(5) @SerialName("Base IV") @ByteString val baseIv: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("crv") val curve: CoseEllipticCurve? = null, - @SerialLabel(-2) + @CborLabel(-2) @SerialName("x") @ByteString val x: ByteArray? = null, - @SerialLabel(-3) + @CborLabel(-3) @SerialName("y") @ByteString val y: ByteArray? = null, - @SerialLabel(-4) + @CborLabel(-4) @SerialName("d") @ByteString val d: ByteArray? = null @@ -306,31 +306,31 @@ object CoseKeySerializer : KSerializer { @Serializable private class CoseRsaKeySerialContainer( - @SerialLabel(1) + @CborLabel(1) @SerialName("kty") val type: CoseKeyType, - @SerialLabel(2) + @CborLabel(2) @SerialName("kid") @ByteString val keyId: ByteArray? = null, - @SerialLabel(3) + @CborLabel(3) @SerialName("alg") val algorithm: CoseAlgorithm? = null, - @SerialLabel(4) + @CborLabel(4) @SerialName("key_ops") val operations: Array? = null, - @SerialLabel(5) + @CborLabel(5) @SerialName("Base IV") @ByteString val baseIv: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("n") val n: ByteArray? = null, - @SerialLabel(-2) + @CborLabel(-2) @SerialName("e") @ByteString val e: ByteArray? = null, - @SerialLabel(-4) + @CborLabel(-4) @SerialName("d") @ByteString val d: ByteArray? = null @@ -344,24 +344,24 @@ object CoseKeySerializer : KSerializer { @Serializable private class CoseSymmKeySerialContainer( - @SerialLabel(1) + @CborLabel(1) @SerialName("kty") val type: CoseKeyType, - @SerialLabel(2) + @CborLabel(2) @SerialName("kid") @ByteString val keyId: ByteArray? = null, - @SerialLabel(3) + @CborLabel(3) @SerialName("alg") val algorithm: CoseAlgorithm? = null, - @SerialLabel(4) + @CborLabel(4) @SerialName("key_ops") val operations: Array? = null, - @SerialLabel(5) + @CborLabel(5) @SerialName("Base IV") @ByteString val baseIv: ByteArray? = null, - @SerialLabel(-1) + @CborLabel(-1) @SerialName("k") val k: ByteArray? = null, ) : SerialContainer { @@ -407,7 +407,7 @@ object CoseKeySerializer : KSerializer { while (true) { val index = decodeElementIndex(descriptor) if (index == -1) break - val label = descriptor.getElementAnnotations(index).filterIsInstance().first().label + val label = descriptor.getElementAnnotations(index).filterIsInstance().first().label when (label) { labels["kty"] -> type = decodeSerializableElement(CoseKeyTypeSerializer.descriptor, index, CoseKeyTypeSerializer) diff --git a/datatypes-jws/build.gradle.kts b/datatypes-jws/build.gradle.kts index c8ddf3721..9ba8c31bb 100644 --- a/datatypes-jws/build.gradle.kts +++ b/datatypes-jws/build.gradle.kts @@ -9,7 +9,7 @@ plugins { id("at.asitplus.gradle.conventions") } -version = "2.2.0" +version = "2.2.1" kotlin { jvm() diff --git a/datatypes/build.gradle.kts b/datatypes/build.gradle.kts index d4036df64..5a4418734 100644 --- a/datatypes/build.gradle.kts +++ b/datatypes/build.gradle.kts @@ -8,7 +8,7 @@ plugins { id("at.asitplus.gradle.conventions") } -version = "2.2.0" +version = "2.2.1" kotlin { jvm() diff --git a/gradle.properties b/gradle.properties index 5205be181..73e46dfcb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ kotlin.js.compiler=ir org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 # This is not a well-defined property, the ASP convention plugin respects it, though -jvm.version=11 +jdk.version=17