diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 26c80685b..c2dced931 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -52,7 +52,7 @@ env: jobs: run-e2e-tests: name: "Run" - runs-on: macos-latest + runs-on: ubuntu-latest steps: - name: Mask apikey diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 51910caa5..3b3535e4e 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -24,37 +24,26 @@ on: jobs: build: - runs-on: macos-latest + runs-on: ubuntu-latest steps: - name: Checkout the repo uses: actions/checkout@v3 - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 - - - name: Cache gradle - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - ~/.konan - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - name: Install Java ${{ env.JAVA_VERSION }} uses: actions/setup-java@v3 with: java-version: ${{ env.JAVA_VERSION }} - distribution: "adopt" + distribution: "zulu" + + - name: Gradle Build Action + uses: gradle/gradle-build-action@v2 - name: Runner run: echo ${{ runner.os }} - name: Build for JS, Android, JVM run: | - ./gradlew build test koverXmlReport koverHtmlReport + ./gradlew build test koverXmlReport koverHtmlReport --stacktrace - name: Coverage Report uses: mi-kas/kover-report@v1 diff --git a/atala-prism-sdk/build.gradle.kts b/atala-prism-sdk/build.gradle.kts index 12c03aeac..0c95bd072 100644 --- a/atala-prism-sdk/build.gradle.kts +++ b/atala-prism-sdk/build.gradle.kts @@ -77,13 +77,11 @@ kotlin { implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.4") implementation("io.ktor:ktor-client-logging:2.3.4") - implementation("io.iohk.atala.prism.didcomm:didpeer:$didpeerVersion") + implementation("io.iohk.atala.prism.didcomm:didpeer:$didpeerVersion") { + exclude("io.iohk.atala.prism.apollo") + } - implementation("io.iohk.atala.prism.apollo:base-asymmetric-encryption:$apolloVersion") - implementation("io.iohk.atala.prism.apollo:base64:$apolloVersion") - implementation("io.iohk.atala.prism.apollo:hashing:$apolloVersion") - implementation("io.iohk.atala.prism.apollo:uuid:$apolloVersion") - implementation("io.iohk.atala.prism.apollo:multibase:$apolloVersion") + implementation("io.iohk.atala.prism.apollo:apollo:$apolloVersion") // implementation("com.nimbusds:nimbus-jose-jwt:9.31") // We are going to use the `nimbus-jose-jwt` that resides in `didcomm` lib diff --git a/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloImpl.kt b/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloImpl.kt index 18e82c90c..37935d29d 100644 --- a/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloImpl.kt +++ b/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloImpl.kt @@ -1,8 +1,8 @@ package io.iohk.atala.prism.walletsdk.apollo import io.iohk.atala.prism.apollo.derivation.HDKey +import io.iohk.atala.prism.apollo.derivation.Mnemonic import io.iohk.atala.prism.apollo.derivation.MnemonicLengthException -import io.iohk.atala.prism.apollo.utils.Mnemonic import io.iohk.atala.prism.walletsdk.apollo.helpers.BytesOps import io.iohk.atala.prism.walletsdk.apollo.utils.Ed25519KeyPair import io.iohk.atala.prism.walletsdk.apollo.utils.Ed25519PrivateKey @@ -34,7 +34,7 @@ class ApolloImpl : Apollo { * @return An array of mnemonic phrases. */ override fun createRandomMnemonics(): Array { - return Mnemonic.createRandomMnemonics() + return Mnemonic.createRandomMnemonics().toTypedArray() } /** @@ -47,7 +47,7 @@ class ApolloImpl : Apollo { */ @Throws(MnemonicLengthException::class) override fun createSeed(mnemonics: Array, passphrase: String): Seed { - return Seed(Mnemonic.createSeed(mnemonics, passphrase)) + return Seed(Mnemonic.createSeed(mnemonics.asList(), passphrase)) } /** @@ -62,7 +62,7 @@ class ApolloImpl : Apollo { mnemonics, Seed( value = Mnemonic.createSeed( - mnemonics = mnemonics, + mnemonics = mnemonics.asList(), passphrase = passphrase ?: "" ) ) diff --git a/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgent.kt b/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgent.kt index bcfffc7e4..5b80f035d 100644 --- a/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgent.kt +++ b/atala-prism-sdk/src/commonMain/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgent.kt @@ -59,10 +59,12 @@ import io.iohk.atala.prism.walletsdk.prismagent.protocols.outOfBand.PrismOnboard import io.iohk.atala.prism.walletsdk.prismagent.protocols.proofOfPresentation.Presentation import io.iohk.atala.prism.walletsdk.prismagent.protocols.proofOfPresentation.RequestPresentation import io.ktor.client.plugins.contentnegotiation.ContentNegotiation -import io.ktor.http.Url import io.ktor.http.ContentType import io.ktor.http.HttpMethod +import io.ktor.http.Url import io.ktor.serialization.kotlinx.json.json +import java.net.UnknownHostException +import java.time.Duration import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -80,8 +82,6 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.jsonObject -import java.net.UnknownHostException -import java.time.Duration /* ktlint-disable import-ordering */ @@ -554,6 +554,7 @@ class PrismAgent { return when (pollux.extractCredentialFormatFromMessage(offer.attachments)) { CredentialType.JWT -> { val privateKeyKeyPath = pluto.getPrismDIDKeyPathIndex(did).first() + val keyPair = Secp256k1KeyPair.generateKeyPair( seed, KeyCurve(Curve.SECP256K1, privateKeyKeyPath) diff --git a/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloTests.kt b/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloTests.kt index b54b9b493..92bff1a55 100644 --- a/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloTests.kt +++ b/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/apollo/ApolloTests.kt @@ -1,8 +1,9 @@ package io.iohk.atala.prism.walletsdk.apollo import io.iohk.atala.prism.apollo.base64.base64UrlEncoded +import io.iohk.atala.prism.apollo.derivation.Mnemonic +import io.iohk.atala.prism.apollo.derivation.MnemonicHelper import io.iohk.atala.prism.apollo.utils.ECConfig -import io.iohk.atala.prism.apollo.utils.Mnemonic import io.iohk.atala.prism.walletsdk.apollo.derivation.bip39Vectors import io.iohk.atala.prism.walletsdk.apollo.helpers.BytesOps import io.iohk.atala.prism.walletsdk.apollo.utils.Ed25519KeyPair @@ -70,7 +71,7 @@ class ApolloTests { @Test fun testFailWhenInvalidWordIsUsed() { val mnemonicCode = arrayOf("hocus", "pocus", "mnemo", "codus") + Array(24) { "abandon" } - assertFailsWith { + assertFailsWith { apollo.createSeed(mnemonicCode, "") } } @@ -113,7 +114,7 @@ class ApolloTests { @Test fun testCreateKeyPair_whenUsingSeedAndMnemonics_thenKeyPairIsCorrect() { - val mnemonics = arrayOf( + val mnemonics = listOf( "blade", "multiply", "coil", diff --git a/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgentTests.kt b/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgentTests.kt index 2ab4bae58..f0ec31140 100644 --- a/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgentTests.kt +++ b/atala-prism-sdk/src/commonTest/kotlin/io/iohk/atala/prism/walletsdk/prismagent/PrismAgentTests.kt @@ -2,7 +2,7 @@ package io.iohk.atala.prism.walletsdk.prismagent /* ktlint-disable import-ordering */ import anoncreds_wrapper.LinkSecret -import io.iohk.atala.prism.apollo.utils.Mnemonic +import io.iohk.atala.prism.apollo.derivation.Mnemonic import io.iohk.atala.prism.walletsdk.apollo.ApolloImpl import io.iohk.atala.prism.walletsdk.apollo.utils.Secp256k1KeyPair import io.iohk.atala.prism.walletsdk.castor.CastorImpl diff --git a/gradle.properties b/gradle.properties index ae36a60df..b86d66987 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style = official android.useAndroidX = true kotlin.mpp.enableCInteropCommonization = true kotlin.native.cacheKind.iosSimulatorArm64 = none -apollo_version = 1.0.2 +apollo_version = 1.0.15 didpeer_version = 1.0.4-alpha kotlin.mpp.androidSourceSetLayoutVersion = 2 kotlinx.atomicfu.enableJvmIrTransformation = true