diff --git a/.github/workflows/Deployment.yml b/.github/workflows/Deployment.yml index d12479c25..6c445efd4 100644 --- a/.github/workflows/Deployment.yml +++ b/.github/workflows/Deployment.yml @@ -1,6 +1,6 @@ --- # kics-scan ignore -name: Deployment +name: Release Apollo defaults: run: @@ -12,45 +12,25 @@ concurrency: env: JAVA_VERSION: 11 - NODEJS_VERSION: 16.17.0 ATALA_GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }} + GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }} ATALA_GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }} + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} on: workflow_dispatch: - inputs: - tag: - description: 'Create release with tag' - required: true - type: string jobs: - deployment: - strategy: - matrix: - include: - - os: macos-latest - os-type: macos - runs-on: ${{ matrix.os }} + release: + runs-on: macos-latest steps: - name: Checkout the repo uses: actions/checkout@v3 with: submodules: recursive - - - 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- + token: ${{ secrets.ATALA_GITHUB_TOKEN }} + fetch-depth: 0 - name: "Install Java ${{ env.JAVA_VERSION }}" uses: actions/setup-java@v3 @@ -59,66 +39,32 @@ jobs: distribution: zulu - name: "Install NodeJS ${{ env.NODEJS_VERSION }}" - if: matrix.os-type == 'linux' uses: actions/setup-node@v3 with: - node-version: "${{ env.NODEJS_VERSION }}" + node-version: "lts/*" - name: Install Homebrew - if: matrix.os-type == 'macos' run: > /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - name: "Install autoconf, automake, libtool" - if: matrix.os-type == 'macos' run: | brew install autoconf automake libtool - - - name: Create Swift Package - run: | - ./gradlew :base-asymmetric-encryption:createSwiftPackage - - - name: Zip framework - run: | - target_dir_name="Apollo.xcframework" - source_dir="./base-asymmetric-encryption/build/packages/ApolloSwift/" - zip_name="Apollo.xcframework.zip" - (cd $source_dir && zip -r "$zip_name" $target_dir_name) - - - name: Prepare release package - run: | - checksum=$(swift package compute-checksum 'base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip') - echo "CHECKSUM: $checksum" - rm -f Package.swift || true - ./.scripts/updatePackage.swift ${{github.event.inputs.tag}} $checksum './.scripts/TemplatePackage.swift' 'Package.swift' - - name: Commit package - uses: stefanzweifel/git-auto-commit-action@v5 - env: - GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }} - with: - commit_message: "chore: prepare release ${{github.event.inputs.tag}}" - tagging_message: ${{github.event.inputs.tag}} - - - name: Upload swift package artifacts - uses: actions/upload-artifact@v3 - with: - name: Apollo.xcframework.zip - path: base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip - - - name: Add swift package artifacts to release - uses: svenstaro/upload-release-action@v2 + - uses: crazy-max/ghaction-import-gpg@v5 + id: import_gpg with: - tag: ${{github.event.inputs.tag}} - file: base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip - asset_name: "Apollo.xcframework.zip" + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + git_user_signingkey: true + git_commit_gpgsign: true - - name: Publish Maven artifacts to Github Packages - id: publish + - name: Release + env: + GIT_AUTHOR_EMAIL: ${{ steps.import_gpg.outputs.email }} + GIT_COMMITTER_EMAIL: ${{ steps.import_gpg.outputs.email }} + GIT_AUTHOR_NAME: ${{ steps.import_gpg.outputs.name }} + GIT_COMMITTER_NAME: ${{ steps.import_gpg.outputs.name }} run: | - ./gradlew publishAllPublicationsToGitHubPackagesRepository :base-asymmetric-encryption:publishJsPackageToGithubRegistry - - - + npm install + npx semantic-release diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index a7e20e33a..bae5a34db 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -19,37 +19,6 @@ env: on: [pull_request] jobs: - lint: - name: Lint changes - runs-on: ubuntu-latest - env: - APPLY_FIXES: none - APPLY_FIXES_EVENT: pull_request - APPLY_FIXES_MODE: commit - VALIDATE_ALL_CODEBASE: ${{ github.ref_name == 'main' }} - DISABLE: COPYPASTE,SPELL - DISABLE_LINTERS: REPOSITORY_CHECKOV,BASH_SHELLCHECK,C_CPPLINT,CPP_CPPLINT - GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }} - steps: - - name: Checkout Code - uses: actions/checkout@v3 - with: - token: ${{ secrets.ATALA_GITHUB_TOKEN }} - fetch-depth: 0 - - - name: Mega-Linter - id: ml - uses: oxsecurity/megalinter@v7.4.0 - - - name: Archive production artifacts - if: ${{ success() || failure() }} - uses: actions/upload-artifact@v3 - with: - name: Mega-Linter reports - path: | - report - mega-linter.log - build: strategy: matrix: @@ -69,26 +38,15 @@ jobs: with: submodules: recursive - - 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: "zulu" + - name: Gradle Build Action + uses: gradle/gradle-build-action@v2 + - name: Install NodeJS ${{ env.NODEJS_VERSION }} uses: actions/setup-node@v3 with: diff --git a/.gitignore b/.gitignore index 37afc27c0..26324c966 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ Pods/ *.jks *yarn.lock JSLibs/iohk-crypto/node_modules +node_modules/ \ No newline at end of file diff --git a/.releaserc.yml b/.releaserc.yml new file mode 100644 index 000000000..41689f3a3 --- /dev/null +++ b/.releaserc.yml @@ -0,0 +1,51 @@ +branches: + - name: "main" + - name: "release/*" + prerelease: "snapshot" + +plugins: + - "@semantic-release/commit-analyzer" + - "@semantic-release/release-notes-generator" + - ["@semantic-release/changelog", {changelogFile: "CHANGELOG.md"}] + - "gradle-semantic-release-plugin" + - [ '@semantic-release/exec', { + prepareCmd: './gradlew :apollo:createSwiftPackage' } ] + - [ '@semantic-release/exec', { + prepareCmd: '(cd ./apollo/build/packages/ApolloSwift && zip -r "Apollo.xcframework.zip" Apollo.xcframework)' } ] + - [ '@semantic-release/exec', { + prepareCmd: "rm -f Package.swift && ./.scripts/updatePackage.swift ${nextRelease.version} \"$(swift package compute-checksum 'apollo/build/packages/ApolloSwift/Apollo.xcframework.zip')\" ./.scripts/TemplatePackage.swift Package.swift" } ] + - [ + "@semantic-release/git", + { + assets: [ + "CHANGELOG.md", + "gradle.properties", + ], + message: "chore(release): cut apollo version ${nextRelease.version} + + ${nextRelease.notes}", + }, + ] + - [ + "@semantic-release/github", + { + "assets": [ + { "path": "apollo/build/packages/ApolloSwift/Apollo.xcframework.zip", "label": "Apollo.xcframework.zip" }, + ] + } + ] + - [ + "semantic-release-slack-bot", + { + notifyOnSuccess: true, + notifyOnFail: true, + markdownReleaseNotes: true, + onSuccessTemplate: + {text: "A new version of `$package_name` successfully released!\n + Version: `v$npm_package_version`\n + Tag: $repo_url/releases/tag/v$npm_package_version\n + \n + Release notes:\n + $release_notes"}, + }, + ] diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..e69de29bb diff --git a/Package.swift b/Package.swift index 4234c34ee..b2ef91dd4 100644 --- a/Package.swift +++ b/Package.swift @@ -23,8 +23,8 @@ let package = Package( // RELEASE .binaryTarget( name: "ApolloBinary", - url: "https://github.com/input-output-hk/atala-prism-apollo/releases/download/testSwift2/Apollo.xcframework.zip", - checksum: "817420e940206f912c5dcf92acb3b38bd2b87caef6caebc707ff1ff98c5778b8" + url: "https://github.com/input-output-hk/atala-prism-apollo/releases/download/1.0.15/Apollo.xcframework.zip", + checksum: "ef5242b354dfa922576061da1830ae3037c9ba4a26aeed1c84ce13380bd49fb7" ) ] ) diff --git a/aes/README.md b/aes/README.md deleted file mode 100644 index aae882433..000000000 --- a/aes/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# Apollo - AES - -[![Kotlin](https://img.shields.io/badge/kotlin-1.7.21-blue.svg?logo=kotlin)](http://kotlinlang.org) - -![android](https://camo.githubusercontent.com/b1d9ad56ab51c4ad1417e9a5ad2a8fe63bcc4755e584ec7defef83755c23f923/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d616e64726f69642d3645444238442e7376673f7374796c653d666c6174) -![apple-silicon](https://camo.githubusercontent.com/a92c841ffd377756a144d5723ff04ecec886953d40ac03baa738590514714921/687474703a2f2f696d672e736869656c64732e696f2f62616467652f737570706f72742d2535424170706c6553696c69636f6e2535442d3433424246462e7376673f7374796c653d666c6174) -![ios](https://camo.githubusercontent.com/1fec6f0d044c5e1d73656bfceed9a78fd4121b17e82a2705d2a47f6fd1f0e3e5/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d696f732d4344434443442e7376673f7374796c653d666c6174) -![jvm](https://camo.githubusercontent.com/700f5dcd442fd835875568c038ae5cd53518c80ae5a0cf12c7c5cf4743b5225b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a766d2d4442343133442e7376673f7374796c653d666c6174) -![js](https://camo.githubusercontent.com/3e0a143e39915184b54b60a2ecedec75e801f396d34b5b366c94ec3604f7e6bd/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a732d4638444235442e7376673f7374796c653d666c6174) -![getNode-js](https://camo.githubusercontent.com/d08fda729ceebcae0f23c83499ca8f06105350f037661ac9a4cc7f58edfdbca9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6e6f64656a732d3638613036332e7376673f7374796c653d666c6174) -![macos](https://camo.githubusercontent.com/1b8313498db244646b38a4480186ae2b25464e5e8d71a1920c52b2be5212b909/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61636f732d3131313131312e7376673f7374796c653d666c6174) -![tvos](https://camo.githubusercontent.com/4ac08d7fb1bcb8ef26388cd2bf53b49626e1ab7cbda581162a946dd43e6a2726/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d74766f732d3830383038302e7376673f7374796c653d666c6174) -![watchos](https://camo.githubusercontent.com/135dbadae40f9cabe7a3a040f9380fb485cff36c90909f3c1ae36b81c304426b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77617463686f732d4330433043302e7376673f7374796c653d666c6174) - -Apollo AES is Kotlin Multiplatform library for AES encryption & decryption with the following supports. - -## Supported Key Size - -- 128 -- 192 -- 256 - -## Supported Block Mode - -- ECB -- CBC -- CFB -- CFB8 -- CTR -- GCM -- OFB -- RC4 - -## Supported Padding - -- No Padding -- PKCS5 -- PKCS7 - -## Usage - -```kotlin -val text = "Welcome to IOG!" -val algo = KAESAlgorithm.AES_256 -val key = AES.createRandomAESKey(algo) -val aes = AES( - algo, - KAESBlockMode.GCM, - KAESPadding.No_Padding, - key, - KMMSymmetricKey.createRandomIV(16) -) -val encryptedBytes = aes.encrypt(text.encodeToByteArray()) -val decryptedBytes = aes.decrypt(encryptedBytes) -``` - -## TODO - -* Update supported Block Mode to the only ones supported per platform. \ No newline at end of file diff --git a/aes/aes.podspec b/aes/aes.podspec deleted file mode 100644 index 6a8a5aa59..000000000 --- a/aes/aes.podspec +++ /dev/null @@ -1,43 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'aes' - spec.version = '1.7.0-alpha' - spec.homepage = '' - spec.source = { :http=> ''} - spec.authors = 'IOG' - spec.license = '' - spec.summary = 'ApolloAES is an AES lib' - spec.vendored_frameworks = 'build/cocoapods/framework/ApolloAES.framework' - spec.libraries = 'c++' - spec.ios.deployment_target = '13.0' - spec.osx.deployment_target = '12.0' - spec.tvos.deployment_target = '13.0' - spec.watchos.deployment_target = '8.0' - spec.dependency 'IOHKAES', '1.0.0' - spec.dependency 'IOHKSecureRandomGeneration', '1.0.0' - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':aes', - 'PRODUCT_MODULE_NAME' => 'ApolloAES', - } - - spec.script_phases = [ - { - :name => 'Build aes', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then - echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" - SCRIPT - } - ] - -end \ No newline at end of file diff --git a/aes/karma.config.d/karma.config.js b/aes/karma.config.d/karma.config.js deleted file mode 100644 index e56914aa1..000000000 --- a/aes/karma.config.d/karma.config.js +++ /dev/null @@ -1,9 +0,0 @@ -config.set({ - browserDisconnectTimeout: 300000, - processKillTimeout: 300000, - client: { - mocha: { - timeout: 300000 - } - } -}); diff --git a/aes/src/androidMain/AndroidManifest.xml b/aes/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 232c3f49e..000000000 --- a/aes/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt deleted file mode 100644 index 476d6408d..000000000 --- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt +++ /dev/null @@ -1,65 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey -import java.security.spec.AlgorithmParameterSpec -import javax.crypto.Cipher -import javax.crypto.KeyGenerator -import javax.crypto.spec.GCMParameterSpec -import javax.crypto.spec.IvParameterSpec - -actual typealias KAESAlgorithmNativeType = String -actual typealias KAESBlockModeNativeType = String -actual typealias KAESPaddingNativeType = String - -actual final class AES actual constructor( - actual val algorithm: KAESAlgorithm, - actual val blockMode: KAESBlockMode, - actual val padding: KAESPadding, - actual val key: KMMSymmetricKey, - actual val iv: ByteArray? -) : AESEncryptor, AESDecryptor { - - private val cipher: Cipher = Cipher.getInstance("${algorithm.nativeValue()}/${blockMode.nativeValue()}/${padding.nativeValue()}") - private val ivSpec: AlgorithmParameterSpec? = if (blockMode.needIV()) { - when (blockMode) { - KAESBlockMode.ECB -> IvParameterSpec(iv) - KAESBlockMode.CBC -> IvParameterSpec(iv) - KAESBlockMode.CFB -> IvParameterSpec(iv) - KAESBlockMode.CFB8 -> IvParameterSpec(iv) - KAESBlockMode.CTR -> IvParameterSpec(iv) - KAESBlockMode.GCM -> GCMParameterSpec(AUTH_TAG_SIZE, iv) - KAESBlockMode.OFB -> IvParameterSpec(iv) - KAESBlockMode.RC4 -> IvParameterSpec(iv) - } - } else { - null - } - - override suspend fun encrypt(data: ByteArray): ByteArray { - if (ivSpec == null) { - cipher.init(Cipher.ENCRYPT_MODE, key.nativeType) - } else { - cipher.init(Cipher.ENCRYPT_MODE, key.nativeType, ivSpec) - } - return cipher.doFinal(data) - } - - override suspend fun decrypt(data: ByteArray): ByteArray { - if (ivSpec == null) { - cipher.init(Cipher.DECRYPT_MODE, key.nativeType) - } else { - cipher.init(Cipher.DECRYPT_MODE, key.nativeType, ivSpec) - } - return cipher.doFinal(data) - } - - actual companion object : AESKeyGeneration { - private const val AUTH_TAG_SIZE = 128 - - override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey { - val keygen = KeyGenerator.getInstance("AES") - keygen.init(algorithm.keySize()) - return KMMSymmetricKey(keygen.generateKey()) - } - } -} diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt deleted file mode 100644 index f68fa3ef6..000000000 --- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESAlgorithm : NativeTypeInterface { - AES_128, - AES_192, - AES_256; - - override fun nativeValue() = "AES" -} diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt deleted file mode 100644 index 471df724e..000000000 --- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt +++ /dev/null @@ -1,27 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESBlockMode : NativeTypeInterface { - ECB, - CBC, - CFB, - CFB8, - CTR, - GCM, - OFB, - RC4; - - override fun nativeValue(): KAESBlockModeNativeType { - return when (this) { - ECB -> "ECB" - CBC -> "CBC" - CFB -> "CFB" - CFB8 -> "CFB8" - CTR -> "CTR" - GCM -> "GCM" - OFB -> "OFB" - RC4 -> throw Exception("Not implemented in JVM") - } - } -} diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt deleted file mode 100644 index 9c7ee7237..000000000 --- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESPadding : NativeTypeInterface { - NO_PADDING, - PKCS5PADDING, - PKCS7PADDING; - - override fun nativeValue(): KAESPaddingNativeType { - return when (this) { - NO_PADDING -> "NoPadding" - PKCS5PADDING -> "PKCS5Padding" - PKCS7PADDING -> "PKCS5Padding" - } - } -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt deleted file mode 100644 index b3b058ac9..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey - -expect class KAESAlgorithmNativeType -expect class KAESBlockModeNativeType -expect class KAESPaddingNativeType - -expect final class AES( - algorithm: KAESAlgorithm, - blockMode: KAESBlockMode, - padding: KAESPadding, - key: KMMSymmetricKey, - iv: ByteArray? -) : AESEncryptor, AESDecryptor { - val algorithm: KAESAlgorithm - val blockMode: KAESBlockMode - val padding: KAESPadding - val key: KMMSymmetricKey - val iv: ByteArray? - - companion object : AESKeyGeneration -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt deleted file mode 100644 index 7d8d4a778..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -interface AESDecryptor { - suspend fun decrypt(data: ByteArray): ByteArray -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt deleted file mode 100644 index 3a8b8e983..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -interface AESEncryptor { - suspend fun encrypt(data: ByteArray): ByteArray -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt deleted file mode 100644 index dc849c085..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey - -interface AESKeyGeneration { - /** - * Generate random AES key - * - * @param algorithm AES Key algorithm - */ - suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode = KAESBlockMode.GCM): KMMSymmetricKey -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt deleted file mode 100644 index 58ef1546a..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -expect enum class KAESAlgorithm : NativeTypeInterface { - AES_128, - AES_192, - AES_256 -} - -@OptIn(ExperimentalJsExport::class) -@JsExport -fun KAESAlgorithm.keySize(): Int { - return when (this) { - KAESAlgorithm.AES_128 -> 128 - KAESAlgorithm.AES_192 -> 192 - KAESAlgorithm.AES_256 -> 256 - else -> throw Exception("This line should never be reached") - } -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt deleted file mode 100644 index f2a98c7a2..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -expect enum class KAESBlockMode : NativeTypeInterface { - ECB, - CBC, - CFB, - CFB8, - CTR, - GCM, - OFB, - RC4 -} - -fun KAESBlockMode.needIV(): Boolean { - return when (this) { - KAESBlockMode.ECB -> false - KAESBlockMode.CBC, KAESBlockMode.CFB, KAESBlockMode.CFB8, KAESBlockMode.CTR, KAESBlockMode.GCM, - KAESBlockMode.OFB, KAESBlockMode.RC4 -> true - else -> throw IllegalStateException("Should never reach this line") - } -} diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt deleted file mode 100644 index 7184aa504..000000000 --- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -expect enum class KAESPadding : NativeTypeInterface { - NO_PADDING, - PKCS5PADDING, - PKCS7PADDING -} diff --git a/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt b/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt deleted file mode 100644 index 3bbd20e76..000000000 --- a/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt +++ /dev/null @@ -1,59 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey -import io.iohk.atala.prism.apollo.utils.SymmetricKeyType -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import kotlin.test.Test -import kotlin.test.assertEquals - -class AESTests { - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun testAESGCM() = runTest { - val text = "Welcome to IOG!" - val algo = KAESAlgorithm.AES_256 - val key = AES.createRandomAESKey(algo) - val aes = AES( - algo, - KAESBlockMode.GCM, - KAESPadding.NO_PADDING, - key, - KMMSymmetricKey.createRandomIV(16) - ) - val encryptedBytes = aes.encrypt(text.encodeToByteArray()) - val decryptedBytes = aes.decrypt(encryptedBytes) - assertEquals(text, decryptedBytes.decodeToString()) - } - - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun testAESCBC() = runTest { - val text = "Welcome to IOG!" - val algo = KAESAlgorithm.AES_256 - val key = AES.createRandomAESKey(algo) - val aes = AES( - algo, - KAESBlockMode.CBC, - KAESPadding.PKCS5PADDING, - key, - KMMSymmetricKey.createRandomIV(16) - ) - val encryptedBytes = aes.encrypt(text.encodeToByteArray()) - val decryptedBytes = aes.decrypt(encryptedBytes) - assertEquals(text, decryptedBytes.decodeToString()) - } - - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun testAESKeyExportImport() = runTest { - val algo = KAESAlgorithm.AES_256 - val key = AES.createRandomAESKey(algo) - - val base64Key = key.exportToBase64() - - val importedKey = KMMSymmetricKey.createKeyFromBase64(base64Key, SymmetricKeyType.AES) - - assertEquals(base64Key, importedKey.exportToBase64()) - } -} diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt deleted file mode 100644 index e1dee0b53..000000000 --- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt +++ /dev/null @@ -1,64 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import cocoapods.IOHKAES.AESOptionsNone -import cocoapods.IOHKAES.AESOptionsPkcs7Padding -import cocoapods.IOHKAES.IOHKAES -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey -import io.iohk.atala.prism.apollo.utils.toByteArray -import io.iohk.atala.prism.apollo.utils.toNSData -import kotlinx.cinterop.autoreleasepool -import platform.Foundation.NSData - -actual typealias KAESAlgorithmNativeType = Long -actual typealias KAESBlockModeNativeType = Int -actual typealias KAESPaddingNativeType = Long - -actual final class AES actual constructor( - actual val algorithm: KAESAlgorithm, - actual val blockMode: KAESBlockMode, - actual val padding: KAESPadding, - actual val key: KMMSymmetricKey, - actual val iv: ByteArray? -) : AESEncryptor, AESDecryptor { - override suspend fun encrypt(data: ByteArray): ByteArray { - autoreleasepool { - val encryptedData = IOHKAES.aesEncryptionWithAlgorithm( - algorithm.nativeValue(), - AESOptionsPkcs7Padding, - blockMode.nativeValue().toUInt(), - padding.nativeValue(), - data.toNSData(), - key.nativeValue, - iv?.toNSData() ?: NSData() - )?.toByteArray() - - return encryptedData ?: ByteArray(0) - } - } - - override suspend fun decrypt(data: ByteArray): ByteArray { - autoreleasepool { - val decryptedData = IOHKAES.aesDecryptionWithAlgorithm( - algorithm.nativeValue(), - AESOptionsNone, - blockMode.nativeValue().toUInt(), - padding.nativeValue(), - data.toNSData(), - key.nativeValue, - iv?.toNSData() ?: NSData() - )?.toByteArray() - - return decryptedData ?: ByteArray(0) - } - } - - actual companion object : AESKeyGeneration { - override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey { - autoreleasepool { - return KMMSymmetricKey( - IOHKAES.generateAESKeyWithAlgorithm(algorithm.nativeValue()) - ) - } - } - } -} diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt deleted file mode 100644 index f6d2e2d01..000000000 --- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import cocoapods.IOHKAES.AESAlgorithmAes128 -import cocoapods.IOHKAES.AESAlgorithmAes192 -import cocoapods.IOHKAES.AESAlgorithmAes256 -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESAlgorithm : NativeTypeInterface { - AES_128, - AES_192, - AES_256; - - override fun nativeValue(): KAESAlgorithmNativeType { - return when (this) { - AES_128 -> AESAlgorithmAes128 - AES_192 -> AESAlgorithmAes192 - AES_256 -> AESAlgorithmAes256 - } - } -} diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt deleted file mode 100644 index 06b1d21da..000000000 --- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt +++ /dev/null @@ -1,35 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import cocoapods.IOHKAES.BlockModeCbc -import cocoapods.IOHKAES.BlockModeCfb -import cocoapods.IOHKAES.BlockModeCfb8 -import cocoapods.IOHKAES.BlockModeCtr -import cocoapods.IOHKAES.BlockModeEcb -import cocoapods.IOHKAES.BlockModeGcm -import cocoapods.IOHKAES.BlockModeOfb -import cocoapods.IOHKAES.BlockModeRc4 -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESBlockMode : NativeTypeInterface { - ECB, - CBC, - CFB, - CFB8, - CTR, - GCM, - OFB, - RC4; - - override fun nativeValue(): KAESBlockModeNativeType { - return when (this) { - ECB -> BlockModeEcb.toInt() - CBC -> BlockModeCbc.toInt() - CFB -> BlockModeCfb.toInt() - CFB8 -> BlockModeCfb8.toInt() - CTR -> BlockModeCtr.toInt() - GCM -> BlockModeGcm.toInt() - OFB -> BlockModeOfb.toInt() - RC4 -> BlockModeRc4.toInt() - } - } -} diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt deleted file mode 100644 index 37f023965..000000000 --- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import cocoapods.IOHKAES.PaddingNoPadding -import cocoapods.IOHKAES.PaddingPkcs7Padding -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESPadding : NativeTypeInterface { - NO_PADDING, - PKCS5PADDING, - PKCS7PADDING; - - override fun nativeValue(): KAESPaddingNativeType { - return when (this) { - NO_PADDING -> PaddingNoPadding - // PKCS#5 padding and PKCS#7 padding are practically the same => https://crypto.stackexchange.com/questions/9043/what-is-the-difference-between-pkcs5-padding-and-pkcs7-padding/9044#9044 - PKCS5PADDING -> PaddingPkcs7Padding - PKCS7PADDING -> PaddingPkcs7Padding - } - } -} diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt deleted file mode 100644 index 5707e845e..000000000 --- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt +++ /dev/null @@ -1,119 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey -import io.iohk.atala.prism.apollo.utils.toArrayBuffer -import io.iohk.atala.prism.apollo.utils.toByteArray -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.await -import kotlinx.coroutines.promise -import web.crypto.AesCbcParams -import web.crypto.AesGcmParams -import web.crypto.AesKeyAlgorithm -import web.crypto.AesKeyGenParams -import web.crypto.Algorithm -import web.crypto.KeyFormat -import web.crypto.KeyUsage -import web.crypto.crypto - -actual typealias KAESAlgorithmNativeType = String -actual typealias KAESBlockModeNativeType = String -actual typealias KAESPaddingNativeType = String - -actual final class AES actual constructor( - actual val algorithm: KAESAlgorithm, - actual val blockMode: KAESBlockMode, - actual val padding: KAESPadding, - actual val key: KMMSymmetricKey, - actual val iv: ByteArray? -) : AESEncryptor, AESDecryptor { - - private fun getAesKeyAlgorithm(): AesKeyAlgorithm { - val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}" - val length = this.algorithm.keySize() - return js("{name: algorithmString, length: length}").unsafeCast() - } - - private fun getAesParams(): Algorithm { - val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}" - return if (blockMode.needIV()) { - val jsIV = this.iv!!.toArrayBuffer() - when (blockMode) { - KAESBlockMode.GCM -> { - val tagSize = GCM_AUTH_TAG_SIZE - js("{name: algorithmString, iv: jsIV, tagLength: tagSize}").unsafeCast() - } - KAESBlockMode.CBC -> { - js("{name: algorithmString, iv: jsIV}").unsafeCast() - } - else -> { - throw NotImplementedError("Yet to be implemented") - } - } - } else { - js("{name: algorithmString}").unsafeCast() - } - } - - override suspend fun encrypt(data: ByteArray): ByteArray { - return MainScope().promise { - val nativeKey = key.nativeValue - - val cryptoKey = crypto.subtle.importKey( - KeyFormat.raw, - nativeKey.toArrayBuffer(), - getAesKeyAlgorithm(), - true, - arrayOf(KeyUsage.encrypt, KeyUsage.decrypt) - ).await() - - crypto.subtle.encrypt( - getAesParams(), - cryptoKey, - data.toArrayBuffer() - ).await().toByteArray() - }.await() - } - - override suspend fun decrypt(data: ByteArray): ByteArray { - return MainScope().promise { - val nativeKey = key.nativeValue - - val cryptoKey = crypto.subtle.importKey( - KeyFormat.raw, - nativeKey.toArrayBuffer(), - getAesKeyAlgorithm(), - true, - arrayOf(KeyUsage.encrypt, KeyUsage.decrypt) - ).await() - - crypto.subtle.decrypt( - getAesParams(), - cryptoKey, - data.toArrayBuffer() - ).await().toByteArray() - }.await() - } - - actual companion object : AESKeyGeneration { - // Because NITS recommends it to always be 128 or bigger https://csrc.nist.gov/publications/detail/sp/800-38d/final - private const val GCM_AUTH_TAG_SIZE = 128 - - private fun getAesKeyGenParams(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): AesKeyGenParams { - val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}" - val keyLength = algorithm.keySize() - return js("{name: algorithmString, length: keyLength}").unsafeCast() - } - - override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey { - return MainScope().promise { - val cryptoKey = crypto.subtle.generateKey( - getAesKeyGenParams(algorithm, blockMode), - true, - arrayOf(KeyUsage.encrypt, KeyUsage.decrypt) - ).await() - val key = crypto.subtle.exportKey(KeyFormat.raw, cryptoKey).await().toByteArray() - KMMSymmetricKey(key) - }.await() - } - } -} diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt deleted file mode 100644 index 40dfbd497..000000000 --- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt +++ /dev/null @@ -1,19 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -@OptIn(ExperimentalJsExport::class) -@JsExport -actual enum class KAESAlgorithm : NativeTypeInterface { - AES_128, - AES_192, - AES_256; - - override fun nativeValue(): KAESAlgorithmNativeType { - return when (this) { - AES_128 -> "AES" - AES_192 -> "AES" - AES_256 -> "AES" - } - } -} diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt deleted file mode 100644 index 80c70ca37..000000000 --- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt +++ /dev/null @@ -1,29 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -@OptIn(ExperimentalJsExport::class) -@JsExport -actual enum class KAESBlockMode : NativeTypeInterface { - ECB, - CBC, - CFB, - CFB8, - CTR, - GCM, - OFB, - RC4; - - override fun nativeValue(): KAESBlockModeNativeType { - return when (this) { - ECB -> throw NotImplementedError() - CBC -> "CBC" - CFB -> throw NotImplementedError() - CFB8 -> throw NotImplementedError() - CTR -> "CTR" - GCM -> "GCM" - OFB -> throw NotImplementedError() - RC4 -> throw NotImplementedError() - } - } -} diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt deleted file mode 100644 index 92ae3eaf5..000000000 --- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt +++ /dev/null @@ -1,19 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -@OptIn(ExperimentalJsExport::class) -@JsExport -actual enum class KAESPadding : NativeTypeInterface { - NO_PADDING, - PKCS5PADDING, - PKCS7PADDING; - - override fun nativeValue(): KAESPaddingNativeType { - return when (this) { - NO_PADDING -> "" - PKCS5PADDING -> "" - PKCS7PADDING -> "" - } - } -} diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt deleted file mode 100644 index 476d6408d..000000000 --- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt +++ /dev/null @@ -1,65 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey -import java.security.spec.AlgorithmParameterSpec -import javax.crypto.Cipher -import javax.crypto.KeyGenerator -import javax.crypto.spec.GCMParameterSpec -import javax.crypto.spec.IvParameterSpec - -actual typealias KAESAlgorithmNativeType = String -actual typealias KAESBlockModeNativeType = String -actual typealias KAESPaddingNativeType = String - -actual final class AES actual constructor( - actual val algorithm: KAESAlgorithm, - actual val blockMode: KAESBlockMode, - actual val padding: KAESPadding, - actual val key: KMMSymmetricKey, - actual val iv: ByteArray? -) : AESEncryptor, AESDecryptor { - - private val cipher: Cipher = Cipher.getInstance("${algorithm.nativeValue()}/${blockMode.nativeValue()}/${padding.nativeValue()}") - private val ivSpec: AlgorithmParameterSpec? = if (blockMode.needIV()) { - when (blockMode) { - KAESBlockMode.ECB -> IvParameterSpec(iv) - KAESBlockMode.CBC -> IvParameterSpec(iv) - KAESBlockMode.CFB -> IvParameterSpec(iv) - KAESBlockMode.CFB8 -> IvParameterSpec(iv) - KAESBlockMode.CTR -> IvParameterSpec(iv) - KAESBlockMode.GCM -> GCMParameterSpec(AUTH_TAG_SIZE, iv) - KAESBlockMode.OFB -> IvParameterSpec(iv) - KAESBlockMode.RC4 -> IvParameterSpec(iv) - } - } else { - null - } - - override suspend fun encrypt(data: ByteArray): ByteArray { - if (ivSpec == null) { - cipher.init(Cipher.ENCRYPT_MODE, key.nativeType) - } else { - cipher.init(Cipher.ENCRYPT_MODE, key.nativeType, ivSpec) - } - return cipher.doFinal(data) - } - - override suspend fun decrypt(data: ByteArray): ByteArray { - if (ivSpec == null) { - cipher.init(Cipher.DECRYPT_MODE, key.nativeType) - } else { - cipher.init(Cipher.DECRYPT_MODE, key.nativeType, ivSpec) - } - return cipher.doFinal(data) - } - - actual companion object : AESKeyGeneration { - private const val AUTH_TAG_SIZE = 128 - - override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey { - val keygen = KeyGenerator.getInstance("AES") - keygen.init(algorithm.keySize()) - return KMMSymmetricKey(keygen.generateKey()) - } - } -} diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt deleted file mode 100644 index f68fa3ef6..000000000 --- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESAlgorithm : NativeTypeInterface { - AES_128, - AES_192, - AES_256; - - override fun nativeValue() = "AES" -} diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt deleted file mode 100644 index 471df724e..000000000 --- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt +++ /dev/null @@ -1,27 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESBlockMode : NativeTypeInterface { - ECB, - CBC, - CFB, - CFB8, - CTR, - GCM, - OFB, - RC4; - - override fun nativeValue(): KAESBlockModeNativeType { - return when (this) { - ECB -> "ECB" - CBC -> "CBC" - CFB -> "CFB" - CFB8 -> "CFB8" - CTR -> "CTR" - GCM -> "GCM" - OFB -> "OFB" - RC4 -> throw Exception("Not implemented in JVM") - } - } -} diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt deleted file mode 100644 index 9c7ee7237..000000000 --- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.iohk.atala.prism.apollo.aes - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual enum class KAESPadding : NativeTypeInterface { - NO_PADDING, - PKCS5PADDING, - PKCS7PADDING; - - override fun nativeValue(): KAESPaddingNativeType { - return when (this) { - NO_PADDING -> "NoPadding" - PKCS5PADDING -> "PKCS5Padding" - PKCS7PADDING -> "PKCS5Padding" - } - } -} diff --git a/aes/webpack.config.d/polyfill.js b/aes/webpack.config.d/polyfill.js deleted file mode 100644 index 26262794b..000000000 --- a/aes/webpack.config.d/polyfill.js +++ /dev/null @@ -1,6 +0,0 @@ -config.resolve = { - fallback: { - crypto: require.resolve('crypto-browserify'), - stream: require.resolve("stream-browserify") - } -}; diff --git a/apollo/build.gradle.kts b/apollo/build.gradle.kts index ca8136edf..eb8ddd137 100644 --- a/apollo/build.gradle.kts +++ b/apollo/build.gradle.kts @@ -1,3 +1,4 @@ +import dev.petuska.npm.publish.extension.domain.NpmAccess import org.gradle.internal.os.OperatingSystem import org.jetbrains.dokka.gradle.DokkaTask import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target @@ -7,8 +8,10 @@ val os: OperatingSystem = OperatingSystem.current() plugins { kotlin("multiplatform") + id("io.github.luca992.multiplatform-swiftpackage") version "2.0.5-arm64" id("com.android.library") id("org.jetbrains.dokka") + id("dev.petuska.npm.publish") version "3.4.1" } kotlin { @@ -25,11 +28,44 @@ kotlin { useJUnitPlatform() } } - if (os.isMacOsX) { - ios() - iosSimulatorArm64() - macosArm64() + + ios { + binaries.framework { + baseName = "ApolloLibrary" + export(project(":cryptography")) + export(project(":multibase")) + export(project(":base64")) + export(project(":base58")) + export(project(":base32")) + export(project(":utils")) + export(project(":hashing")) + } + } + iosSimulatorArm64 { + binaries.framework { + baseName = "ApolloLibrary" + export(project(":cryptography")) + export(project(":multibase")) + export(project(":base64")) + export(project(":base58")) + export(project(":base32")) + export(project(":utils")) + export(project(":hashing")) + } + } + macosArm64 { + binaries.framework { + baseName = "ApolloLibrary" + export(project(":cryptography")) + export(project(":multibase")) + export(project(":base64")) + export(project(":base58")) + export(project(":base32")) + export(project(":utils")) + export(project(":hashing")) + } } + js(IR) { this.moduleName = currentModuleName this.binaries.library() @@ -46,11 +82,6 @@ kotlin { this.output.library = currentModuleName this.output.libraryTarget = Target.VAR } - this.commonWebpackConfig { -// this.cssSupport { -// enabled(true) -// } - } this.testTask { this.useKarma { this.useChromeHeadless() @@ -66,11 +97,29 @@ kotlin { } } + multiplatformSwiftPackage { + packageName("Apollo") + swiftToolsVersion("5.3") + targetPlatforms { + iOS { v("13") } + macOS { v("11") } + } + outputDirectory(File(rootDir, "apollo/build/packages/ApolloSwift")) + } + sourceSets { val commonMain by getting { dependencies { + api(project(":uuid")) + api(project(":cryptography")) + api(project(":multibase")) + api(project(":base64")) + api(project(":base58")) + api(project(":base32")) api(project(":utils")) api(project(":hashing")) + api(project(":varint")) + api(project(":secure-random")) implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") } } @@ -91,21 +140,31 @@ kotlin { implementation("junit:junit:4.13.2") } } - val jsMain by getting - val jsTest by getting - if (os.isMacOsX) { - val iosMain by getting - val iosTest by getting + val jsMain by getting { + dependencies { + implementation(npm("elliptic", "6.5.4")) + implementation(npm("@types/elliptic", "6.4.14")) + implementation(npm("@noble/curves", "1.2.0")) + implementation(npm("@stablelib/x25519", "1.0.3")) - val iosSimulatorArm64Main by getting { - this.dependsOn(iosMain) - } - val iosSimulatorArm64Test by getting { - this.dependsOn(iosTest) + // Polyfill dependencies + implementation(npm("stream-browserify", "3.0.0")) + implementation(npm("buffer", "6.0.3")) } - val macosArm64Main by getting - val macosArm64Test by getting } + val jsTest by getting + + val iosMain by getting + val iosTest by getting + + val iosSimulatorArm64Main by getting { + this.dependsOn(iosMain) + } + val iosSimulatorArm64Test by getting { + this.dependsOn(iosTest) + } + val macosArm64Main by getting + val macosArm64Test by getting } if (os.isMacOsX) { @@ -156,3 +215,33 @@ tasks.withType { } } } + +npmPublish { + organization.set("input-output-hk") + version.set(rootProject.version.toString()) + access.set(NpmAccess.PUBLIC) + packages { + access.set(NpmAccess.PUBLIC) + named("js") { + scope.set("input-output-hk") + packageName.set("apollo") + packageJson { + author { + name.set("IOG") + } + repository { + type.set("git") + url.set("https://github.com/input-output-hk/atala-prism-apollo.git") + } + } + } + } + registries { + access.set(NpmAccess.PUBLIC) + github { + uri.set("https://npm.pkg.github.com/") + access.set(NpmAccess.PUBLIC) + this.authToken.set(System.getenv("ATALA_GITHUB_TOKEN")) + } + } +} diff --git a/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt b/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt index af7501cae..e9fd08d6e 100644 --- a/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt +++ b/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt @@ -1,3 +1,5 @@ +@file:Suppress("ktlint:standard:property-naming") + package io.iohk.atala.prism.apollo import io.iohk.atala.prism.apollo.hashing.SHA256 @@ -56,21 +58,30 @@ data class MerkleRoot(val hash: Hash) @OptIn(ExperimentalJsExport::class) @JsExport data class MerkleInclusionProof( - val hash: Hash, // hash inclusion of which this proof is for - val index: Index, // index for the given hash's position in the tree - val siblings: List // given hash's siblings at each level of the tree starting from the bottom + /** + * hash inclusion of which this proof is for + */ + val hash: Hash, + /** + * index for the given hash's position in the tree + */ + val index: Index, + /** + * given hash's siblings at each level of the tree starting from the bottom + */ + val siblings: List ) { // merkle root of which this proof is for fun derivedRoot(): MerkleRoot { val n = siblings.size - val root = siblings.indices.fold(prefixHash(hash)) { currentHash, i -> - if (index and (1 shl (n - i - 1)) == 0) { - combineHashes(currentHash, siblings[i]) - } else { - combineHashes(siblings[i], currentHash) + val root = + siblings.indices.fold(prefixHash(hash)) { currentHash, i -> + if (index and (1 shl (n - i - 1)) == 0) { + combineHashes(currentHash, siblings[i]) + } else { + combineHashes(siblings[i], currentHash) + } } - } - return MerkleRoot(root) } @@ -79,7 +90,7 @@ data class MerkleInclusionProof( mapOf( Pair(hashField, JsonPrimitive(hash.toHexString())), Pair(indexField, JsonPrimitive(index)), - Pair(siblingsField, JsonArray(siblings.map { JsonPrimitive(it.toHexString()) })), + Pair(siblingsField, JsonArray(siblings.map { JsonPrimitive(it.toHexString()) })) ) ) } @@ -88,6 +99,26 @@ data class MerkleInclusionProof( return toJson().toString() } + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || this::class != other::class) return false + + other as MerkleInclusionProof + + if (!hash.contentEquals(other.hash)) return false + if (index != other.index) return false + if (siblings != other.siblings) return false + + return true + } + + override fun hashCode(): Int { + var result = hash.contentHashCode() + result = 31 * result + index + result = 31 * result + siblings.hashCode() + return result + } + companion object { internal const val hashField = "hash" internal const val indexField = "index" @@ -105,8 +136,12 @@ data class MerkleInclusionProof( fun decodeJson(encodedMerkleInclusionProof: JsonObject): Validated { val maybeHash = encodedMerkleInclusionProof[hashField]?.jsonPrimitive?.content?.decodeHex() val maybeIndex = encodedMerkleInclusionProof[indexField]?.jsonPrimitive?.int - val maybeSiblings = encodedMerkleInclusionProof[siblingsField]?.jsonArray?.map { it.jsonPrimitive.content } - ?.map { it.decodeHex() } + val maybeSiblings = + encodedMerkleInclusionProof[siblingsField]?.jsonArray?.map { + it.jsonPrimitive.content + }?.map { + it.decodeHex() + } return Validated.Applicative.apply( Validated.getOrError( @@ -145,11 +180,16 @@ data class MerkleProofs(val root: MerkleRoot, val proofs: List): MerkleProofs { tailrec fun buildMerkleTree(currentLevel: List, nextLevel: List): MerkleTree { return when { - currentLevel.size >= 2 -> buildMerkleTree( - currentLevel = currentLevel.subList(2, currentLevel.size), - nextLevel = listOf(MerkleNode(currentLevel[0], currentLevel[1])) + nextLevel - ) - currentLevel.size == 1 -> buildMerkleTree(currentLevel = emptyList(), nextLevel = listOf(currentLevel[0]) + nextLevel) + currentLevel.size >= 2 -> + buildMerkleTree( + currentLevel = currentLevel.subList(2, currentLevel.size), + nextLevel = listOf(MerkleNode(currentLevel[0], currentLevel[1])) + nextLevel + ) + currentLevel.size == 1 -> + buildMerkleTree( + currentLevel = emptyList(), + nextLevel = listOf(currentLevel[0]) + nextLevel + ) nextLevel.size == 1 -> nextLevel[0] // We reverse `nextLevel` list so that it has the same order as the initial @@ -162,16 +202,18 @@ fun generateProofs(hashes: List): MerkleProofs { return when (tree) { is MerkleLeaf -> listOf(MerkleInclusionProof(tree.data, currentIndex, currentPath)) is MerkleNode -> { - val first = buildProofs( - tree.left, - currentIndex, - listOf(tree.right.hash) + currentPath - ) - val second = buildProofs( - tree.right, - currentIndex or (1 shl currentPath.size), - listOf(tree.left.hash) + currentPath - ) + val first = + buildProofs( + tree.left, + currentIndex, + listOf(tree.right.hash) + currentPath + ) + val second = + buildProofs( + tree.right, + currentIndex or (1 shl currentPath.size), + listOf(tree.left.hash) + currentPath + ) first + second } } diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt deleted file mode 100644 index ac51cf75f..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt +++ /dev/null @@ -1,2060 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeCzech { - val wordList: List = listOf( - "abdikace", - "abeceda", - "adresa", - "agrese", - "akce", - "aktovka", - "alej", - "alkohol", - "amputace", - "ananas", - "andulka", - "anekdota", - "anketa", - "antika", - "anulovat", - "archa", - "arogance", - "asfalt", - "asistent", - "aspirace", - "astma", - "astronom", - "atlas", - "atletika", - "atol", - "autobus", - "azyl", - "babka", - "bachor", - "bacil", - "baculka", - "badatel", - "bageta", - "bagr", - "bahno", - "bakterie", - "balada", - "baletka", - "balkon", - "balonek", - "balvan", - "balza", - "bambus", - "bankomat", - "barbar", - "baret", - "barman", - "baroko", - "barva", - "baterka", - "batoh", - "bavlna", - "bazalka", - "bazilika", - "bazuka", - "bedna", - "beran", - "beseda", - "bestie", - "beton", - "bezinka", - "bezmoc", - "beztak", - "bicykl", - "bidlo", - "biftek", - "bikiny", - "bilance", - "biograf", - "biolog", - "bitva", - "bizon", - "blahobyt", - "blatouch", - "blecha", - "bledule", - "blesk", - "blikat", - "blizna", - "blokovat", - "bloudit", - "blud", - "bobek", - "bobr", - "bodlina", - "bodnout", - "bohatost", - "bojkot", - "bojovat", - "bokorys", - "bolest", - "borec", - "borovice", - "bota", - "boubel", - "bouchat", - "bouda", - "boule", - "bourat", - "boxer", - "bradavka", - "brambora", - "branka", - "bratr", - "brepta", - "briketa", - "brko", - "brloh", - "bronz", - "broskev", - "brunetka", - "brusinka", - "brzda", - "brzy", - "bublina", - "bubnovat", - "buchta", - "buditel", - "budka", - "budova", - "bufet", - "bujarost", - "bukvice", - "buldok", - "bulva", - "bunda", - "bunkr", - "burza", - "butik", - "buvol", - "buzola", - "bydlet", - "bylina", - "bytovka", - "bzukot", - "capart", - "carevna", - "cedr", - "cedule", - "cejch", - "cejn", - "cela", - "celer", - "celkem", - "celnice", - "cenina", - "cennost", - "cenovka", - "centrum", - "cenzor", - "cestopis", - "cetka", - "chalupa", - "chapadlo", - "charita", - "chata", - "chechtat", - "chemie", - "chichot", - "chirurg", - "chlad", - "chleba", - "chlubit", - "chmel", - "chmura", - "chobot", - "chochol", - "chodba", - "cholera", - "chomout", - "chopit", - "choroba", - "chov", - "chrapot", - "chrlit", - "chrt", - "chrup", - "chtivost", - "chudina", - "chutnat", - "chvat", - "chvilka", - "chvost", - "chyba", - "chystat", - "chytit", - "cibule", - "cigareta", - "cihelna", - "cihla", - "cinkot", - "cirkus", - "cisterna", - "citace", - "citrus", - "cizinec", - "cizost", - "clona", - "cokoliv", - "couvat", - "ctitel", - "ctnost", - "cudnost", - "cuketa", - "cukr", - "cupot", - "cvaknout", - "cval", - "cvik", - "cvrkot", - "cyklista", - "daleko", - "dareba", - "datel", - "datum", - "dcera", - "debata", - "dechovka", - "decibel", - "deficit", - "deflace", - "dekl", - "dekret", - "demokrat", - "deprese", - "derby", - "deska", - "detektiv", - "dikobraz", - "diktovat", - "dioda", - "diplom", - "disk", - "displej", - "divadlo", - "divoch", - "dlaha", - "dlouho", - "dluhopis", - "dnes", - "dobro", - "dobytek", - "docent", - "dochutit", - "dodnes", - "dohled", - "dohoda", - "dohra", - "dojem", - "dojnice", - "doklad", - "dokola", - "doktor", - "dokument", - "dolar", - "doleva", - "dolina", - "doma", - "dominant", - "domluvit", - "domov", - "donutit", - "dopad", - "dopis", - "doplnit", - "doposud", - "doprovod", - "dopustit", - "dorazit", - "dorost", - "dort", - "dosah", - "doslov", - "dostatek", - "dosud", - "dosyta", - "dotaz", - "dotek", - "dotknout", - "doufat", - "doutnat", - "dovozce", - "dozadu", - "doznat", - "dozorce", - "drahota", - "drak", - "dramatik", - "dravec", - "draze", - "drdol", - "drobnost", - "drogerie", - "drozd", - "drsnost", - "drtit", - "drzost", - "duben", - "duchovno", - "dudek", - "duha", - "duhovka", - "dusit", - "dusno", - "dutost", - "dvojice", - "dvorec", - "dynamit", - "ekolog", - "ekonomie", - "elektron", - "elipsa", - "email", - "emise", - "emoce", - "empatie", - "epizoda", - "epocha", - "epopej", - "epos", - "esej", - "esence", - "eskorta", - "eskymo", - "etiketa", - "euforie", - "evoluce", - "exekuce", - "exkurze", - "expedice", - "exploze", - "export", - "extrakt", - "facka", - "fajfka", - "fakulta", - "fanatik", - "fantazie", - "farmacie", - "favorit", - "fazole", - "federace", - "fejeton", - "fenka", - "fialka", - "figurant", - "filozof", - "filtr", - "finance", - "finta", - "fixace", - "fjord", - "flanel", - "flirt", - "flotila", - "fond", - "fosfor", - "fotbal", - "fotka", - "foton", - "frakce", - "freska", - "fronta", - "fukar", - "funkce", - "fyzika", - "galeje", - "garant", - "genetika", - "geolog", - "gilotina", - "glazura", - "glejt", - "golem", - "golfista", - "gotika", - "graf", - "gramofon", - "granule", - "grep", - "gril", - "grog", - "groteska", - "guma", - "hadice", - "hadr", - "hala", - "halenka", - "hanba", - "hanopis", - "harfa", - "harpuna", - "havran", - "hebkost", - "hejkal", - "hejno", - "hejtman", - "hektar", - "helma", - "hematom", - "herec", - "herna", - "heslo", - "hezky", - "historik", - "hladovka", - "hlasivky", - "hlava", - "hledat", - "hlen", - "hlodavec", - "hloh", - "hloupost", - "hltat", - "hlubina", - "hluchota", - "hmat", - "hmota", - "hmyz", - "hnis", - "hnojivo", - "hnout", - "hoblina", - "hoboj", - "hoch", - "hodiny", - "hodlat", - "hodnota", - "hodovat", - "hojnost", - "hokej", - "holinka", - "holka", - "holub", - "homole", - "honitba", - "honorace", - "horal", - "horda", - "horizont", - "horko", - "horlivec", - "hormon", - "hornina", - "horoskop", - "horstvo", - "hospoda", - "hostina", - "hotovost", - "houba", - "houf", - "houpat", - "houska", - "hovor", - "hradba", - "hranice", - "hravost", - "hrazda", - "hrbolek", - "hrdina", - "hrdlo", - "hrdost", - "hrnek", - "hrobka", - "hromada", - "hrot", - "hrouda", - "hrozen", - "hrstka", - "hrubost", - "hryzat", - "hubenost", - "hubnout", - "hudba", - "hukot", - "humr", - "husita", - "hustota", - "hvozd", - "hybnost", - "hydrant", - "hygiena", - "hymna", - "hysterik", - "idylka", - "ihned", - "ikona", - "iluze", - "imunita", - "infekce", - "inflace", - "inkaso", - "inovace", - "inspekce", - "internet", - "invalida", - "investor", - "inzerce", - "ironie", - "jablko", - "jachta", - "jahoda", - "jakmile", - "jakost", - "jalovec", - "jantar", - "jarmark", - "jaro", - "jasan", - "jasno", - "jatka", - "javor", - "jazyk", - "jedinec", - "jedle", - "jednatel", - "jehlan", - "jekot", - "jelen", - "jelito", - "jemnost", - "jenom", - "jepice", - "jeseter", - "jevit", - "jezdec", - "jezero", - "jinak", - "jindy", - "jinoch", - "jiskra", - "jistota", - "jitrnice", - "jizva", - "jmenovat", - "jogurt", - "jurta", - "kabaret", - "kabel", - "kabinet", - "kachna", - "kadet", - "kadidlo", - "kahan", - "kajak", - "kajuta", - "kakao", - "kaktus", - "kalamita", - "kalhoty", - "kalibr", - "kalnost", - "kamera", - "kamkoliv", - "kamna", - "kanibal", - "kanoe", - "kantor", - "kapalina", - "kapela", - "kapitola", - "kapka", - "kaple", - "kapota", - "kapr", - "kapusta", - "kapybara", - "karamel", - "karotka", - "karton", - "kasa", - "katalog", - "katedra", - "kauce", - "kauza", - "kavalec", - "kazajka", - "kazeta", - "kazivost", - "kdekoliv", - "kdesi", - "kedluben", - "kemp", - "keramika", - "kino", - "klacek", - "kladivo", - "klam", - "klapot", - "klasika", - "klaun", - "klec", - "klenba", - "klepat", - "klesnout", - "klid", - "klima", - "klisna", - "klobouk", - "klokan", - "klopa", - "kloub", - "klubovna", - "klusat", - "kluzkost", - "kmen", - "kmitat", - "kmotr", - "kniha", - "knot", - "koalice", - "koberec", - "kobka", - "kobliha", - "kobyla", - "kocour", - "kohout", - "kojenec", - "kokos", - "koktejl", - "kolaps", - "koleda", - "kolize", - "kolo", - "komando", - "kometa", - "komik", - "komnata", - "komora", - "kompas", - "komunita", - "konat", - "koncept", - "kondice", - "konec", - "konfese", - "kongres", - "konina", - "konkurs", - "kontakt", - "konzerva", - "kopanec", - "kopie", - "kopnout", - "koprovka", - "korbel", - "korektor", - "kormidlo", - "koroptev", - "korpus", - "koruna", - "koryto", - "korzet", - "kosatec", - "kostka", - "kotel", - "kotleta", - "kotoul", - "koukat", - "koupelna", - "kousek", - "kouzlo", - "kovboj", - "koza", - "kozoroh", - "krabice", - "krach", - "krajina", - "kralovat", - "krasopis", - "kravata", - "kredit", - "krejcar", - "kresba", - "kreveta", - "kriket", - "kritik", - "krize", - "krkavec", - "krmelec", - "krmivo", - "krocan", - "krok", - "kronika", - "kropit", - "kroupa", - "krovka", - "krtek", - "kruhadlo", - "krupice", - "krutost", - "krvinka", - "krychle", - "krypta", - "krystal", - "kryt", - "kudlanka", - "kufr", - "kujnost", - "kukla", - "kulajda", - "kulich", - "kulka", - "kulomet", - "kultura", - "kuna", - "kupodivu", - "kurt", - "kurzor", - "kutil", - "kvalita", - "kvasinka", - "kvestor", - "kynolog", - "kyselina", - "kytara", - "kytice", - "kytka", - "kytovec", - "kyvadlo", - "labrador", - "lachtan", - "ladnost", - "laik", - "lakomec", - "lamela", - "lampa", - "lanovka", - "lasice", - "laso", - "lastura", - "latinka", - "lavina", - "lebka", - "leckdy", - "leden", - "lednice", - "ledovka", - "ledvina", - "legenda", - "legie", - "legrace", - "lehce", - "lehkost", - "lehnout", - "lektvar", - "lenochod", - "lentilka", - "lepenka", - "lepidlo", - "letadlo", - "letec", - "letmo", - "letokruh", - "levhart", - "levitace", - "levobok", - "libra", - "lichotka", - "lidojed", - "lidskost", - "lihovina", - "lijavec", - "lilek", - "limetka", - "linie", - "linka", - "linoleum", - "listopad", - "litina", - "litovat", - "lobista", - "lodivod", - "logika", - "logoped", - "lokalita", - "loket", - "lomcovat", - "lopata", - "lopuch", - "lord", - "losos", - "lotr", - "loudal", - "louh", - "louka", - "louskat", - "lovec", - "lstivost", - "lucerna", - "lucifer", - "lump", - "lusk", - "lustrace", - "lvice", - "lyra", - "lyrika", - "lysina", - "madam", - "madlo", - "magistr", - "mahagon", - "majetek", - "majitel", - "majorita", - "makak", - "makovice", - "makrela", - "malba", - "malina", - "malovat", - "malvice", - "maminka", - "mandle", - "manko", - "marnost", - "masakr", - "maskot", - "masopust", - "matice", - "matrika", - "maturita", - "mazanec", - "mazivo", - "mazlit", - "mazurka", - "mdloba", - "mechanik", - "meditace", - "medovina", - "melasa", - "meloun", - "mentolka", - "metla", - "metoda", - "metr", - "mezera", - "migrace", - "mihnout", - "mihule", - "mikina", - "mikrofon", - "milenec", - "milimetr", - "milost", - "mimika", - "mincovna", - "minibar", - "minomet", - "minulost", - "miska", - "mistr", - "mixovat", - "mladost", - "mlha", - "mlhovina", - "mlok", - "mlsat", - "mluvit", - "mnich", - "mnohem", - "mobil", - "mocnost", - "modelka", - "modlitba", - "mohyla", - "mokro", - "molekula", - "momentka", - "monarcha", - "monokl", - "monstrum", - "montovat", - "monzun", - "mosaz", - "moskyt", - "most", - "motivace", - "motorka", - "motyka", - "moucha", - "moudrost", - "mozaika", - "mozek", - "mozol", - "mramor", - "mravenec", - "mrkev", - "mrtvola", - "mrzet", - "mrzutost", - "mstitel", - "mudrc", - "muflon", - "mulat", - "mumie", - "munice", - "muset", - "mutace", - "muzeum", - "muzikant", - "myslivec", - "mzda", - "nabourat", - "nachytat", - "nadace", - "nadbytek", - "nadhoz", - "nadobro", - "nadpis", - "nahlas", - "nahnat", - "nahodile", - "nahradit", - "naivita", - "najednou", - "najisto", - "najmout", - "naklonit", - "nakonec", - "nakrmit", - "nalevo", - "namazat", - "namluvit", - "nanometr", - "naoko", - "naopak", - "naostro", - "napadat", - "napevno", - "naplnit", - "napnout", - "naposled", - "naprosto", - "narodit", - "naruby", - "narychlo", - "nasadit", - "nasekat", - "naslepo", - "nastat", - "natolik", - "navenek", - "navrch", - "navzdory", - "nazvat", - "nebe", - "nechat", - "necky", - "nedaleko", - "nedbat", - "neduh", - "negace", - "nehet", - "nehoda", - "nejen", - "nejprve", - "neklid", - "nelibost", - "nemilost", - "nemoc", - "neochota", - "neonka", - "nepokoj", - "nerost", - "nerv", - "nesmysl", - "nesoulad", - "netvor", - "neuron", - "nevina", - "nezvykle", - "nicota", - "nijak", - "nikam", - "nikdy", - "nikl", - "nikterak", - "nitro", - "nocleh", - "nohavice", - "nominace", - "nora", - "norek", - "nositel", - "nosnost", - "nouze", - "noviny", - "novota", - "nozdra", - "nuda", - "nudle", - "nuget", - "nutit", - "nutnost", - "nutrie", - "nymfa", - "obal", - "obarvit", - "obava", - "obdiv", - "obec", - "obehnat", - "obejmout", - "obezita", - "obhajoba", - "obilnice", - "objasnit", - "objekt", - "obklopit", - "oblast", - "oblek", - "obliba", - "obloha", - "obluda", - "obnos", - "obohatit", - "obojek", - "obout", - "obrazec", - "obrna", - "obruba", - "obrys", - "obsah", - "obsluha", - "obstarat", - "obuv", - "obvaz", - "obvinit", - "obvod", - "obvykle", - "obyvatel", - "obzor", - "ocas", - "ocel", - "ocenit", - "ochladit", - "ochota", - "ochrana", - "ocitnout", - "odboj", - "odbyt", - "odchod", - "odcizit", - "odebrat", - "odeslat", - "odevzdat", - "odezva", - "odhadce", - "odhodit", - "odjet", - "odjinud", - "odkaz", - "odkoupit", - "odliv", - "odluka", - "odmlka", - "odolnost", - "odpad", - "odpis", - "odplout", - "odpor", - "odpustit", - "odpykat", - "odrazka", - "odsoudit", - "odstup", - "odsun", - "odtok", - "odtud", - "odvaha", - "odveta", - "odvolat", - "odvracet", - "odznak", - "ofina", - "ofsajd", - "ohlas", - "ohnisko", - "ohrada", - "ohrozit", - "ohryzek", - "okap", - "okenice", - "oklika", - "okno", - "okouzlit", - "okovy", - "okrasa", - "okres", - "okrsek", - "okruh", - "okupant", - "okurka", - "okusit", - "olejnina", - "olizovat", - "omak", - "omeleta", - "omezit", - "omladina", - "omlouvat", - "omluva", - "omyl", - "onehdy", - "opakovat", - "opasek", - "operace", - "opice", - "opilost", - "opisovat", - "opora", - "opozice", - "opravdu", - "oproti", - "orbital", - "orchestr", - "orgie", - "orlice", - "orloj", - "ortel", - "osada", - "oschnout", - "osika", - "osivo", - "oslava", - "oslepit", - "oslnit", - "oslovit", - "osnova", - "osoba", - "osolit", - "ospalec", - "osten", - "ostraha", - "ostuda", - "ostych", - "osvojit", - "oteplit", - "otisk", - "otop", - "otrhat", - "otrlost", - "otrok", - "otruby", - "otvor", - "ovanout", - "ovar", - "oves", - "ovlivnit", - "ovoce", - "oxid", - "ozdoba", - "pachatel", - "pacient", - "padouch", - "pahorek", - "pakt", - "palanda", - "palec", - "palivo", - "paluba", - "pamflet", - "pamlsek", - "panenka", - "panika", - "panna", - "panovat", - "panstvo", - "pantofle", - "paprika", - "parketa", - "parodie", - "parta", - "paruka", - "paryba", - "paseka", - "pasivita", - "pastelka", - "patent", - "patrona", - "pavouk", - "pazneht", - "pazourek", - "pecka", - "pedagog", - "pejsek", - "peklo", - "peloton", - "penalta", - "pendrek", - "penze", - "periskop", - "pero", - "pestrost", - "petarda", - "petice", - "petrolej", - "pevnina", - "pexeso", - "pianista", - "piha", - "pijavice", - "pikle", - "piknik", - "pilina", - "pilnost", - "pilulka", - "pinzeta", - "pipeta", - "pisatel", - "pistole", - "pitevna", - "pivnice", - "pivovar", - "placenta", - "plakat", - "plamen", - "planeta", - "plastika", - "platit", - "plavidlo", - "plaz", - "plech", - "plemeno", - "plenta", - "ples", - "pletivo", - "plevel", - "plivat", - "plnit", - "plno", - "plocha", - "plodina", - "plomba", - "plout", - "pluk", - "plyn", - "pobavit", - "pobyt", - "pochod", - "pocit", - "poctivec", - "podat", - "podcenit", - "podepsat", - "podhled", - "podivit", - "podklad", - "podmanit", - "podnik", - "podoba", - "podpora", - "podraz", - "podstata", - "podvod", - "podzim", - "poezie", - "pohanka", - "pohnutka", - "pohovor", - "pohroma", - "pohyb", - "pointa", - "pojistka", - "pojmout", - "pokazit", - "pokles", - "pokoj", - "pokrok", - "pokuta", - "pokyn", - "poledne", - "polibek", - "polknout", - "poloha", - "polynom", - "pomalu", - "pominout", - "pomlka", - "pomoc", - "pomsta", - "pomyslet", - "ponechat", - "ponorka", - "ponurost", - "popadat", - "popel", - "popisek", - "poplach", - "poprosit", - "popsat", - "popud", - "poradce", - "porce", - "porod", - "porucha", - "poryv", - "posadit", - "posed", - "posila", - "poskok", - "poslanec", - "posoudit", - "pospolu", - "postava", - "posudek", - "posyp", - "potah", - "potkan", - "potlesk", - "potomek", - "potrava", - "potupa", - "potvora", - "poukaz", - "pouto", - "pouzdro", - "povaha", - "povidla", - "povlak", - "povoz", - "povrch", - "povstat", - "povyk", - "povzdech", - "pozdrav", - "pozemek", - "poznatek", - "pozor", - "pozvat", - "pracovat", - "prahory", - "praktika", - "prales", - "praotec", - "praporek", - "prase", - "pravda", - "princip", - "prkno", - "probudit", - "procento", - "prodej", - "profese", - "prohra", - "projekt", - "prolomit", - "promile", - "pronikat", - "propad", - "prorok", - "prosba", - "proton", - "proutek", - "provaz", - "prskavka", - "prsten", - "prudkost", - "prut", - "prvek", - "prvohory", - "psanec", - "psovod", - "pstruh", - "ptactvo", - "puberta", - "puch", - "pudl", - "pukavec", - "puklina", - "pukrle", - "pult", - "pumpa", - "punc", - "pupen", - "pusa", - "pusinka", - "pustina", - "putovat", - "putyka", - "pyramida", - "pysk", - "pytel", - "racek", - "rachot", - "radiace", - "radnice", - "radon", - "raft", - "ragby", - "raketa", - "rakovina", - "rameno", - "rampouch", - "rande", - "rarach", - "rarita", - "rasovna", - "rastr", - "ratolest", - "razance", - "razidlo", - "reagovat", - "reakce", - "recept", - "redaktor", - "referent", - "reflex", - "rejnok", - "reklama", - "rekord", - "rekrut", - "rektor", - "reputace", - "revize", - "revma", - "revolver", - "rezerva", - "riskovat", - "riziko", - "robotika", - "rodokmen", - "rohovka", - "rokle", - "rokoko", - "romaneto", - "ropovod", - "ropucha", - "rorejs", - "rosol", - "rostlina", - "rotmistr", - "rotoped", - "rotunda", - "roubenka", - "roucho", - "roup", - "roura", - "rovina", - "rovnice", - "rozbor", - "rozchod", - "rozdat", - "rozeznat", - "rozhodce", - "rozinka", - "rozjezd", - "rozkaz", - "rozloha", - "rozmar", - "rozpad", - "rozruch", - "rozsah", - "roztok", - "rozum", - "rozvod", - "rubrika", - "ruchadlo", - "rukavice", - "rukopis", - "ryba", - "rybolov", - "rychlost", - "rydlo", - "rypadlo", - "rytina", - "ryzost", - "sadista", - "sahat", - "sako", - "samec", - "samizdat", - "samota", - "sanitka", - "sardinka", - "sasanka", - "satelit", - "sazba", - "sazenice", - "sbor", - "schovat", - "sebranka", - "secese", - "sedadlo", - "sediment", - "sedlo", - "sehnat", - "sejmout", - "sekera", - "sekta", - "sekunda", - "sekvoje", - "semeno", - "seno", - "servis", - "sesadit", - "seshora", - "seskok", - "seslat", - "sestra", - "sesuv", - "sesypat", - "setba", - "setina", - "setkat", - "setnout", - "setrvat", - "sever", - "seznam", - "shoda", - "shrnout", - "sifon", - "silnice", - "sirka", - "sirotek", - "sirup", - "situace", - "skafandr", - "skalisko", - "skanzen", - "skaut", - "skeptik", - "skica", - "skladba", - "sklenice", - "sklo", - "skluz", - "skoba", - "skokan", - "skoro", - "skripta", - "skrz", - "skupina", - "skvost", - "skvrna", - "slabika", - "sladidlo", - "slanina", - "slast", - "slavnost", - "sledovat", - "slepec", - "sleva", - "slezina", - "slib", - "slina", - "sliznice", - "slon", - "sloupek", - "slovo", - "sluch", - "sluha", - "slunce", - "slupka", - "slza", - "smaragd", - "smetana", - "smilstvo", - "smlouva", - "smog", - "smrad", - "smrk", - "smrtka", - "smutek", - "smysl", - "snad", - "snaha", - "snob", - "sobota", - "socha", - "sodovka", - "sokol", - "sopka", - "sotva", - "souboj", - "soucit", - "soudce", - "souhlas", - "soulad", - "soumrak", - "souprava", - "soused", - "soutok", - "souviset", - "spalovna", - "spasitel", - "spis", - "splav", - "spodek", - "spojenec", - "spolu", - "sponzor", - "spornost", - "spousta", - "sprcha", - "spustit", - "sranda", - "sraz", - "srdce", - "srna", - "srnec", - "srovnat", - "srpen", - "srst", - "srub", - "stanice", - "starosta", - "statika", - "stavba", - "stehno", - "stezka", - "stodola", - "stolek", - "stopa", - "storno", - "stoupat", - "strach", - "stres", - "strhnout", - "strom", - "struna", - "studna", - "stupnice", - "stvol", - "styk", - "subjekt", - "subtropy", - "suchar", - "sudost", - "sukno", - "sundat", - "sunout", - "surikata", - "surovina", - "svah", - "svalstvo", - "svetr", - "svatba", - "svazek", - "svisle", - "svitek", - "svoboda", - "svodidlo", - "svorka", - "svrab", - "sykavka", - "sykot", - "synek", - "synovec", - "sypat", - "sypkost", - "syrovost", - "sysel", - "sytost", - "tabletka", - "tabule", - "tahoun", - "tajemno", - "tajfun", - "tajga", - "tajit", - "tajnost", - "taktika", - "tamhle", - "tampon", - "tancovat", - "tanec", - "tanker", - "tapeta", - "tavenina", - "tazatel", - "technika", - "tehdy", - "tekutina", - "telefon", - "temnota", - "tendence", - "tenista", - "tenor", - "teplota", - "tepna", - "teprve", - "terapie", - "termoska", - "textil", - "ticho", - "tiskopis", - "titulek", - "tkadlec", - "tkanina", - "tlapka", - "tleskat", - "tlukot", - "tlupa", - "tmel", - "toaleta", - "topinka", - "topol", - "torzo", - "touha", - "toulec", - "tradice", - "traktor", - "tramp", - "trasa", - "traverza", - "trefit", - "trest", - "trezor", - "trhavina", - "trhlina", - "trochu", - "trojice", - "troska", - "trouba", - "trpce", - "trpitel", - "trpkost", - "trubec", - "truchlit", - "truhlice", - "trus", - "trvat", - "tudy", - "tuhnout", - "tuhost", - "tundra", - "turista", - "turnaj", - "tuzemsko", - "tvaroh", - "tvorba", - "tvrdost", - "tvrz", - "tygr", - "tykev", - "ubohost", - "uboze", - "ubrat", - "ubrousek", - "ubrus", - "ubytovna", - "ucho", - "uctivost", - "udivit", - "uhradit", - "ujednat", - "ujistit", - "ujmout", - "ukazatel", - "uklidnit", - "uklonit", - "ukotvit", - "ukrojit", - "ulice", - "ulita", - "ulovit", - "umyvadlo", - "unavit", - "uniforma", - "uniknout", - "upadnout", - "uplatnit", - "uplynout", - "upoutat", - "upravit", - "uran", - "urazit", - "usednout", - "usilovat", - "usmrtit", - "usnadnit", - "usnout", - "usoudit", - "ustlat", - "ustrnout", - "utahovat", - "utkat", - "utlumit", - "utonout", - "utopenec", - "utrousit", - "uvalit", - "uvolnit", - "uvozovka", - "uzdravit", - "uzel", - "uzenina", - "uzlina", - "uznat", - "vagon", - "valcha", - "valoun", - "vana", - "vandal", - "vanilka", - "varan", - "varhany", - "varovat", - "vcelku", - "vchod", - "vdova", - "vedro", - "vegetace", - "vejce", - "velbloud", - "veletrh", - "velitel", - "velmoc", - "velryba", - "venkov", - "veranda", - "verze", - "veselka", - "veskrze", - "vesnice", - "vespodu", - "vesta", - "veterina", - "veverka", - "vibrace", - "vichr", - "videohra", - "vidina", - "vidle", - "vila", - "vinice", - "viset", - "vitalita", - "vize", - "vizitka", - "vjezd", - "vklad", - "vkus", - "vlajka", - "vlak", - "vlasec", - "vlevo", - "vlhkost", - "vliv", - "vlnovka", - "vloupat", - "vnucovat", - "vnuk", - "voda", - "vodivost", - "vodoznak", - "vodstvo", - "vojensky", - "vojna", - "vojsko", - "volant", - "volba", - "volit", - "volno", - "voskovka", - "vozidlo", - "vozovna", - "vpravo", - "vrabec", - "vracet", - "vrah", - "vrata", - "vrba", - "vrcholek", - "vrhat", - "vrstva", - "vrtule", - "vsadit", - "vstoupit", - "vstup", - "vtip", - "vybavit", - "vybrat", - "vychovat", - "vydat", - "vydra", - "vyfotit", - "vyhledat", - "vyhnout", - "vyhodit", - "vyhradit", - "vyhubit", - "vyjasnit", - "vyjet", - "vyjmout", - "vyklopit", - "vykonat", - "vylekat", - "vymazat", - "vymezit", - "vymizet", - "vymyslet", - "vynechat", - "vynikat", - "vynutit", - "vypadat", - "vyplatit", - "vypravit", - "vypustit", - "vyrazit", - "vyrovnat", - "vyrvat", - "vyslovit", - "vysoko", - "vystavit", - "vysunout", - "vysypat", - "vytasit", - "vytesat", - "vytratit", - "vyvinout", - "vyvolat", - "vyvrhel", - "vyzdobit", - "vyznat", - "vzadu", - "vzbudit", - "vzchopit", - "vzdor", - "vzduch", - "vzdychat", - "vzestup", - "vzhledem", - "vzkaz", - "vzlykat", - "vznik", - "vzorek", - "vzpoura", - "vztah", - "vztek", - "xylofon", - "zabrat", - "zabydlet", - "zachovat", - "zadarmo", - "zadusit", - "zafoukat", - "zahltit", - "zahodit", - "zahrada", - "zahynout", - "zajatec", - "zajet", - "zajistit", - "zaklepat", - "zakoupit", - "zalepit", - "zamezit", - "zamotat", - "zamyslet", - "zanechat", - "zanikat", - "zaplatit", - "zapojit", - "zapsat", - "zarazit", - "zastavit", - "zasunout", - "zatajit", - "zatemnit", - "zatknout", - "zaujmout", - "zavalit", - "zavelet", - "zavinit", - "zavolat", - "zavrtat", - "zazvonit", - "zbavit", - "zbrusu", - "zbudovat", - "zbytek", - "zdaleka", - "zdarma", - "zdatnost", - "zdivo", - "zdobit", - "zdroj", - "zdvih", - "zdymadlo", - "zelenina", - "zeman", - "zemina", - "zeptat", - "zezadu", - "zezdola", - "zhatit", - "zhltnout", - "zhluboka", - "zhotovit", - "zhruba", - "zima", - "zimnice", - "zjemnit", - "zklamat", - "zkoumat", - "zkratka", - "zkumavka", - "zlato", - "zlehka", - "zloba", - "zlom", - "zlost", - "zlozvyk", - "zmapovat", - "zmar", - "zmatek", - "zmije", - "zmizet", - "zmocnit", - "zmodrat", - "zmrzlina", - "zmutovat", - "znak", - "znalost", - "znamenat", - "znovu", - "zobrazit", - "zotavit", - "zoubek", - "zoufale", - "zplodit", - "zpomalit", - "zprava", - "zprostit", - "zprudka", - "zprvu", - "zrada", - "zranit", - "zrcadlo", - "zrnitost", - "zrno", - "zrovna", - "zrychlit", - "zrzavost", - "zticha", - "ztratit", - "zubovina", - "zubr", - "zvednout", - "zvenku", - "zvesela", - "zvon", - "zvrat", - "zvukovod", - "zvyk", - - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt deleted file mode 100644 index 3cb0080fd..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeEnglish { - val wordList: List = listOf( - "abandon", - "ability", - "able", - "about", - "above", - "absent", - "absorb", - "abstract", - "absurd", - "abuse", - "access", - "accident", - "account", - "accuse", - "achieve", - "acid", - "acoustic", - "acquire", - "across", - "act", - "action", - "actor", - "actress", - "actual", - "adapt", - "add", - "addict", - "address", - "adjust", - "admit", - "adult", - "advance", - "advice", - "aerobic", - "affair", - "afford", - "afraid", - "again", - "age", - "agent", - "agree", - "ahead", - "aim", - "air", - "airport", - "aisle", - "alarm", - "album", - "alcohol", - "alert", - "alien", - "all", - "alley", - "allow", - "almost", - "alone", - "alpha", - "already", - "also", - "alter", - "always", - "amateur", - "amazing", - "among", - "amount", - "amused", - "analyst", - "anchor", - "ancient", - "anger", - "angle", - "angry", - "animal", - "ankle", - "announce", - "annual", - "another", - "answer", - "antenna", - "antique", - "anxiety", - "any", - "apart", - "apology", - "appear", - "apple", - "approve", - "april", - "arch", - "arctic", - "area", - "arena", - "argue", - "arm", - "armed", - "armor", - "army", - "around", - "arrange", - "arrest", - "arrive", - "arrow", - "art", - "artefact", - "artist", - "artwork", - "ask", - "aspect", - "assault", - "asset", - "assist", - "assume", - "asthma", - "athlete", - "atom", - "attack", - "attend", - "attitude", - "attract", - "auction", - "audit", - "august", - "aunt", - "author", - "auto", - "autumn", - "average", - "avocado", - "avoid", - "awake", - "aware", - "away", - "awesome", - "awful", - "awkward", - "axis", - "baby", - "bachelor", - "bacon", - "badge", - "bag", - "balance", - "balcony", - "ball", - "bamboo", - "banana", - "banner", - "bar", - "barely", - "bargain", - "barrel", - "base", - "basic", - "basket", - "battle", - "beach", - "bean", - "beauty", - "because", - "become", - "beef", - "before", - "begin", - "behave", - "behind", - "believe", - "below", - "belt", - "bench", - "benefit", - "best", - "betray", - "better", - "between", - "beyond", - "bicycle", - "bid", - "bike", - "bind", - "biology", - "bird", - "birth", - "bitter", - "black", - "blade", - "blame", - "blanket", - "blast", - "bleak", - "bless", - "blind", - "blood", - "blossom", - "blouse", - "blue", - "blur", - "blush", - "board", - "boat", - "body", - "boil", - "bomb", - "bone", - "bonus", - "book", - "boost", - "border", - "boring", - "borrow", - "boss", - "bottom", - "bounce", - "box", - "boy", - "bracket", - "brain", - "brand", - "brass", - "brave", - "bread", - "breeze", - "brick", - "bridge", - "brief", - "bright", - "bring", - "brisk", - "broccoli", - "broken", - "bronze", - "broom", - "brother", - "brown", - "brush", - "bubble", - "buddy", - "budget", - "buffalo", - "build", - "bulb", - "bulk", - "bullet", - "bundle", - "bunker", - "burden", - "burger", - "burst", - "bus", - "business", - "busy", - "butter", - "buyer", - "buzz", - "cabbage", - "cabin", - "cable", - "cactus", - "cage", - "cake", - "call", - "calm", - "camera", - "camp", - "can", - "canal", - "cancel", - "candy", - "cannon", - "canoe", - "canvas", - "canyon", - "capable", - "capital", - "captain", - "car", - "carbon", - "card", - "cargo", - "carpet", - "carry", - "cart", - "case", - "cash", - "casino", - "castle", - "casual", - "cat", - "catalog", - "catch", - "category", - "cattle", - "caught", - "cause", - "caution", - "cave", - "ceiling", - "celery", - "cement", - "census", - "century", - "cereal", - "certain", - "chair", - "chalk", - "champion", - "change", - "chaos", - "chapter", - "charge", - "chase", - "chat", - "cheap", - "check", - "cheese", - "chef", - "cherry", - "chest", - "chicken", - "chief", - "child", - "chimney", - "choice", - "choose", - "chronic", - "chuckle", - "chunk", - "churn", - "cigar", - "cinnamon", - "circle", - "citizen", - "city", - "civil", - "claim", - "clap", - "clarify", - "claw", - "clay", - "clean", - "clerk", - "clever", - "click", - "client", - "cliff", - "climb", - "clinic", - "clip", - "clock", - "clog", - "close", - "cloth", - "cloud", - "clown", - "club", - "clump", - "cluster", - "clutch", - "coach", - "coast", - "coconut", - "code", - "coffee", - "coil", - "coin", - "collect", - "color", - "column", - "combine", - "come", - "comfort", - "comic", - "common", - "company", - "concert", - "conduct", - "confirm", - "congress", - "connect", - "consider", - "control", - "convince", - "cook", - "cool", - "copper", - "copy", - "coral", - "core", - "corn", - "correct", - "cost", - "cotton", - "couch", - "country", - "couple", - "course", - "cousin", - "cover", - "coyote", - "crack", - "cradle", - "craft", - "cram", - "crane", - "crash", - "crater", - "crawl", - "crazy", - "cream", - "credit", - "creek", - "crew", - "cricket", - "crime", - "crisp", - "critic", - "crop", - "cross", - "crouch", - "crowd", - "crucial", - "cruel", - "cruise", - "crumble", - "crunch", - "crush", - "cry", - "crystal", - "cube", - "culture", - "cup", - "cupboard", - "curious", - "current", - "curtain", - "curve", - "cushion", - "custom", - "cute", - "cycle", - "dad", - "damage", - "damp", - "dance", - "danger", - "daring", - "dash", - "daughter", - "dawn", - "day", - "deal", - "debate", - "debris", - "decade", - "december", - "decide", - "decline", - "decorate", - "decrease", - "deer", - "defense", - "define", - "defy", - "degree", - "delay", - "deliver", - "demand", - "demise", - "denial", - "dentist", - "deny", - "depart", - "depend", - "deposit", - "depth", - "deputy", - "derive", - "describe", - "desert", - "design", - "desk", - "despair", - "destroy", - "detail", - "detect", - "develop", - "device", - "devote", - "diagram", - "dial", - "diamond", - "diary", - "dice", - "diesel", - "diet", - "differ", - "digital", - "dignity", - "dilemma", - "dinner", - "dinosaur", - "direct", - "dirt", - "disagree", - "discover", - "disease", - "dish", - "dismiss", - "disorder", - "display", - "distance", - "divert", - "divide", - "divorce", - "dizzy", - "doctor", - "document", - "dog", - "doll", - "dolphin", - "domain", - "donate", - "donkey", - "donor", - "door", - "dose", - "double", - "dove", - "draft", - "dragon", - "drama", - "drastic", - "draw", - "dream", - "dress", - "drift", - "drill", - "drink", - "drip", - "drive", - "drop", - "drum", - "dry", - "duck", - "dumb", - "dune", - "during", - "dust", - "dutch", - "duty", - "dwarf", - "dynamic", - "eager", - "eagle", - "early", - "earn", - "earth", - "easily", - "east", - "easy", - "echo", - "ecology", - "economy", - "edge", - "edit", - "educate", - "effort", - "egg", - "eight", - "either", - "elbow", - "elder", - "electric", - "elegant", - "element", - "elephant", - "elevator", - "elite", - "else", - "embark", - "embody", - "embrace", - "emerge", - "emotion", - "employ", - "empower", - "empty", - "enable", - "enact", - "end", - "endless", - "endorse", - "enemy", - "energy", - "enforce", - "engage", - "engine", - "enhance", - "enjoy", - "enlist", - "enough", - "enrich", - "enroll", - "ensure", - "enter", - "entire", - "entry", - "envelope", - "episode", - "equal", - "equip", - "era", - "erase", - "erode", - "erosion", - "error", - "erupt", - "escape", - "essay", - "essence", - "estate", - "eternal", - "ethics", - "evidence", - "evil", - "evoke", - "evolve", - "exact", - "example", - "excess", - "exchange", - "excite", - "exclude", - "excuse", - "execute", - "exercise", - "exhaust", - "exhibit", - "exile", - "exist", - "exit", - "exotic", - "expand", - "expect", - "expire", - "explain", - "expose", - "express", - "extend", - "extra", - "eye", - "eyebrow", - "fabric", - "face", - "faculty", - "fade", - "faint", - "faith", - "fall", - "false", - "fame", - "family", - "famous", - "fan", - "fancy", - "fantasy", - "farm", - "fashion", - "fat", - "fatal", - "father", - "fatigue", - "fault", - "favorite", - "feature", - "february", - "federal", - "fee", - "feed", - "feel", - "female", - "fence", - "festival", - "fetch", - "fever", - "few", - "fiber", - "fiction", - "field", - "figure", - "file", - "film", - "filter", - "final", - "find", - "fine", - "finger", - "finish", - "fire", - "firm", - "first", - "fiscal", - "fish", - "fit", - "fitness", - "fix", - "flag", - "flame", - "flash", - "flat", - "flavor", - "flee", - "flight", - "flip", - "float", - "flock", - "floor", - "flower", - "fluid", - "flush", - "fly", - "foam", - "focus", - "fog", - "foil", - "fold", - "follow", - "food", - "foot", - "force", - "forest", - "forget", - "fork", - "fortune", - "forum", - "forward", - "fossil", - "foster", - "found", - "fox", - "fragile", - "frame", - "frequent", - "fresh", - "friend", - "fringe", - "frog", - "front", - "frost", - "frown", - "frozen", - "fruit", - "fuel", - "fun", - "funny", - "furnace", - "fury", - "future", - "gadget", - "gain", - "galaxy", - "gallery", - "game", - "gap", - "garage", - "garbage", - "garden", - "garlic", - "garment", - "gas", - "gasp", - "gate", - "gather", - "gauge", - "gaze", - "general", - "genius", - "genre", - "gentle", - "genuine", - "gesture", - "ghost", - "giant", - "gift", - "giggle", - "ginger", - "giraffe", - "girl", - "give", - "glad", - "glance", - "glare", - "glass", - "glide", - "glimpse", - "globe", - "gloom", - "glory", - "glove", - "glow", - "glue", - "goat", - "goddess", - "gold", - "good", - "goose", - "gorilla", - "gospel", - "gossip", - "govern", - "gown", - "grab", - "grace", - "grain", - "grant", - "grape", - "grass", - "gravity", - "great", - "green", - "grid", - "grief", - "grit", - "grocery", - "group", - "grow", - "grunt", - "guard", - "guess", - "guide", - "guilt", - "guitar", - "gun", - "gym", - "habit", - "hair", - "half", - "hammer", - "hamster", - "hand", - "happy", - "harbor", - "hard", - "harsh", - "harvest", - "hat", - "have", - "hawk", - "hazard", - "head", - "health", - "heart", - "heavy", - "hedgehog", - "height", - "hello", - "helmet", - "help", - "hen", - "hero", - "hidden", - "high", - "hill", - "hint", - "hip", - "hire", - "history", - "hobby", - "hockey", - "hold", - "hole", - "holiday", - "hollow", - "home", - "honey", - "hood", - "hope", - "horn", - "horror", - "horse", - "hospital", - "host", - "hotel", - "hour", - "hover", - "hub", - "huge", - "human", - "humble", - "humor", - "hundred", - "hungry", - "hunt", - "hurdle", - "hurry", - "hurt", - "husband", - "hybrid", - "ice", - "icon", - "idea", - "identify", - "idle", - "ignore", - "ill", - "illegal", - "illness", - "image", - "imitate", - "immense", - "immune", - "impact", - "impose", - "improve", - "impulse", - "inch", - "include", - "income", - "increase", - "index", - "indicate", - "indoor", - "industry", - "infant", - "inflict", - "inform", - "inhale", - "inherit", - "initial", - "inject", - "injury", - "inmate", - "inner", - "innocent", - "input", - "inquiry", - "insane", - "insect", - "inside", - "inspire", - "install", - "intact", - "interest", - "into", - "invest", - "invite", - "involve", - "iron", - "island", - "isolate", - "issue", - "item", - "ivory", - "jacket", - "jaguar", - "jar", - "jazz", - "jealous", - "jeans", - "jelly", - "jewel", - "job", - "join", - "joke", - "journey", - "joy", - "judge", - "juice", - "jump", - "jungle", - "junior", - "junk", - "just", - "kangaroo", - "keen", - "keep", - "ketchup", - "key", - "kick", - "kid", - "kidney", - "kind", - "kingdom", - "kiss", - "kit", - "kitchen", - "kite", - "kitten", - "kiwi", - "knee", - "knife", - "knock", - "know", - "lab", - "label", - "labor", - "ladder", - "lady", - "lake", - "lamp", - "language", - "laptop", - "large", - "later", - "latin", - "laugh", - "laundry", - "lava", - "law", - "lawn", - "lawsuit", - "layer", - "lazy", - "leader", - "leaf", - "learn", - "leave", - "lecture", - "left", - "leg", - "legal", - "legend", - "leisure", - "lemon", - "lend", - "length", - "lens", - "leopard", - "lesson", - "letter", - "level", - "liar", - "liberty", - "library", - "license", - "life", - "lift", - "light", - "like", - "limb", - "limit", - "link", - "lion", - "liquid", - "list", - "little", - "live", - "lizard", - "load", - "loan", - "lobster", - "local", - "lock", - "logic", - "lonely", - "long", - "loop", - "lottery", - "loud", - "lounge", - "love", - "loyal", - "lucky", - "luggage", - "lumber", - "lunar", - "lunch", - "luxury", - "lyrics", - "machine", - "mad", - "magic", - "magnet", - "maid", - "mail", - "main", - "major", - "make", - "mammal", - "man", - "manage", - "mandate", - "mango", - "mansion", - "manual", - "maple", - "marble", - "march", - "margin", - "marine", - "market", - "marriage", - "mask", - "mass", - "master", - "match", - "material", - "math", - "matrix", - "matter", - "maximum", - "maze", - "meadow", - "mean", - "measure", - "meat", - "mechanic", - "medal", - "media", - "melody", - "melt", - "member", - "memory", - "mention", - "menu", - "mercy", - "merge", - "merit", - "merry", - "mesh", - "message", - "metal", - "method", - "middle", - "midnight", - "milk", - "million", - "mimic", - "mind", - "minimum", - "minor", - "minute", - "miracle", - "mirror", - "misery", - "miss", - "mistake", - "mix", - "mixed", - "mixture", - "mobile", - "model", - "modify", - "mom", - "moment", - "monitor", - "monkey", - "monster", - "month", - "moon", - "moral", - "more", - "morning", - "mosquito", - "mother", - "motion", - "motor", - "mountain", - "mouse", - "move", - "movie", - "much", - "muffin", - "mule", - "multiply", - "muscle", - "museum", - "mushroom", - "music", - "must", - "mutual", - "myself", - "mystery", - "myth", - "naive", - "name", - "napkin", - "narrow", - "nasty", - "nation", - "nature", - "near", - "neck", - "need", - "negative", - "neglect", - "neither", - "nephew", - "nerve", - "nest", - "net", - "network", - "neutral", - "never", - "news", - "next", - "nice", - "night", - "noble", - "noise", - "nominee", - "noodle", - "normal", - "north", - "nose", - "notable", - "note", - "nothing", - "notice", - "novel", - "now", - "nuclear", - "number", - "nurse", - "nut", - "oak", - "obey", - "object", - "oblige", - "obscure", - "observe", - "obtain", - "obvious", - "occur", - "ocean", - "october", - "odor", - "off", - "offer", - "office", - "often", - "oil", - "okay", - "old", - "olive", - "olympic", - "omit", - "once", - "one", - "onion", - "online", - "only", - "open", - "opera", - "opinion", - "oppose", - "option", - "orange", - "orbit", - "orchard", - "order", - "ordinary", - "organ", - "orient", - "original", - "orphan", - "ostrich", - "other", - "outdoor", - "outer", - "output", - "outside", - "oval", - "oven", - "over", - "own", - "owner", - "oxygen", - "oyster", - "ozone", - "pact", - "paddle", - "page", - "pair", - "palace", - "palm", - "panda", - "panel", - "panic", - "panther", - "paper", - "parade", - "parent", - "park", - "parrot", - "party", - "pass", - "patch", - "path", - "patient", - "patrol", - "pattern", - "pause", - "pave", - "payment", - "peace", - "peanut", - "pear", - "peasant", - "pelican", - "pen", - "penalty", - "pencil", - "people", - "pepper", - "perfect", - "permit", - "person", - "pet", - "phone", - "photo", - "phrase", - "physical", - "piano", - "picnic", - "picture", - "piece", - "pig", - "pigeon", - "pill", - "pilot", - "pink", - "pioneer", - "pipe", - "pistol", - "pitch", - "pizza", - "place", - "planet", - "plastic", - "plate", - "play", - "please", - "pledge", - "pluck", - "plug", - "plunge", - "poem", - "poet", - "point", - "polar", - "pole", - "police", - "pond", - "pony", - "pool", - "popular", - "portion", - "position", - "possible", - "post", - "potato", - "pottery", - "poverty", - "powder", - "power", - "practice", - "praise", - "predict", - "prefer", - "prepare", - "present", - "pretty", - "prevent", - "price", - "pride", - "primary", - "print", - "priority", - "prison", - "private", - "prize", - "problem", - "process", - "produce", - "profit", - "program", - "project", - "promote", - "proof", - "property", - "prosper", - "protect", - "proud", - "provide", - "public", - "pudding", - "pull", - "pulp", - "pulse", - "pumpkin", - "punch", - "pupil", - "puppy", - "purchase", - "purity", - "purpose", - "purse", - "push", - "put", - "puzzle", - "pyramid", - "quality", - "quantum", - "quarter", - "question", - "quick", - "quit", - "quiz", - "quote", - "rabbit", - "raccoon", - "race", - "rack", - "radar", - "radio", - "rail", - "rain", - "raise", - "rally", - "ramp", - "ranch", - "random", - "range", - "rapid", - "rare", - "rate", - "rather", - "raven", - "raw", - "razor", - "ready", - "real", - "reason", - "rebel", - "rebuild", - "recall", - "receive", - "recipe", - "record", - "recycle", - "reduce", - "reflect", - "reform", - "refuse", - "region", - "regret", - "regular", - "reject", - "relax", - "release", - "relief", - "rely", - "remain", - "remember", - "remind", - "remove", - "render", - "renew", - "rent", - "reopen", - "repair", - "repeat", - "replace", - "report", - "require", - "rescue", - "resemble", - "resist", - "resource", - "response", - "result", - "retire", - "retreat", - "return", - "reunion", - "reveal", - "review", - "reward", - "rhythm", - "rib", - "ribbon", - "rice", - "rich", - "ride", - "ridge", - "rifle", - "right", - "rigid", - "ring", - "riot", - "ripple", - "risk", - "ritual", - "rival", - "river", - "road", - "roast", - "robot", - "robust", - "rocket", - "romance", - "roof", - "rookie", - "room", - "rose", - "rotate", - "rough", - "round", - "route", - "royal", - "rubber", - "rude", - "rug", - "rule", - "run", - "runway", - "rural", - "sad", - "saddle", - "sadness", - "safe", - "sail", - "salad", - "salmon", - "salon", - "salt", - "salute", - "same", - "sample", - "sand", - "satisfy", - "satoshi", - "sauce", - "sausage", - "save", - "say", - "scale", - "scan", - "scare", - "scatter", - "scene", - "scheme", - "school", - "science", - "scissors", - "scorpion", - "scout", - "scrap", - "screen", - "script", - "scrub", - "sea", - "search", - "season", - "seat", - "second", - "secret", - "section", - "security", - "seed", - "seek", - "segment", - "select", - "sell", - "seminar", - "senior", - "sense", - "sentence", - "series", - "service", - "session", - "settle", - "setup", - "seven", - "shadow", - "shaft", - "shallow", - "share", - "shed", - "shell", - "sheriff", - "shield", - "shift", - "shine", - "ship", - "shiver", - "shock", - "shoe", - "shoot", - "shop", - "short", - "shoulder", - "shove", - "shrimp", - "shrug", - "shuffle", - "shy", - "sibling", - "sick", - "side", - "siege", - "sight", - "sign", - "silent", - "silk", - "silly", - "silver", - "similar", - "simple", - "since", - "sing", - "siren", - "sister", - "situate", - "six", - "size", - "skate", - "sketch", - "ski", - "skill", - "skin", - "skirt", - "skull", - "slab", - "slam", - "sleep", - "slender", - "slice", - "slide", - "slight", - "slim", - "slogan", - "slot", - "slow", - "slush", - "small", - "smart", - "smile", - "smoke", - "smooth", - "snack", - "snake", - "snap", - "sniff", - "snow", - "soap", - "soccer", - "social", - "sock", - "soda", - "soft", - "solar", - "soldier", - "solid", - "solution", - "solve", - "someone", - "song", - "soon", - "sorry", - "sort", - "soul", - "sound", - "soup", - "source", - "south", - "space", - "spare", - "spatial", - "spawn", - "speak", - "special", - "speed", - "spell", - "spend", - "sphere", - "spice", - "spider", - "spike", - "spin", - "spirit", - "split", - "spoil", - "sponsor", - "spoon", - "sport", - "spot", - "spray", - "spread", - "spring", - "spy", - "square", - "squeeze", - "squirrel", - "stable", - "stadium", - "staff", - "stage", - "stairs", - "stamp", - "stand", - "start", - "state", - "stay", - "steak", - "steel", - "stem", - "step", - "stereo", - "stick", - "still", - "sting", - "stock", - "stomach", - "stone", - "stool", - "story", - "stove", - "strategy", - "street", - "strike", - "strong", - "struggle", - "student", - "stuff", - "stumble", - "style", - "subject", - "submit", - "subway", - "success", - "such", - "sudden", - "suffer", - "sugar", - "suggest", - "suit", - "summer", - "sun", - "sunny", - "sunset", - "super", - "supply", - "supreme", - "sure", - "surface", - "surge", - "surprise", - "surround", - "survey", - "suspect", - "sustain", - "swallow", - "swamp", - "swap", - "swarm", - "swear", - "sweet", - "swift", - "swim", - "swing", - "switch", - "sword", - "symbol", - "symptom", - "syrup", - "system", - "table", - "tackle", - "tag", - "tail", - "talent", - "talk", - "tank", - "tape", - "target", - "task", - "taste", - "tattoo", - "taxi", - "teach", - "team", - "tell", - "ten", - "tenant", - "tennis", - "tent", - "term", - "test", - "text", - "thank", - "that", - "theme", - "then", - "theory", - "there", - "they", - "thing", - "this", - "thought", - "three", - "thrive", - "throw", - "thumb", - "thunder", - "ticket", - "tide", - "tiger", - "tilt", - "timber", - "time", - "tiny", - "tip", - "tired", - "tissue", - "title", - "toast", - "tobacco", - "today", - "toddler", - "toe", - "together", - "toilet", - "token", - "tomato", - "tomorrow", - "tone", - "tongue", - "tonight", - "tool", - "tooth", - "top", - "topic", - "topple", - "torch", - "tornado", - "tortoise", - "toss", - "total", - "tourist", - "toward", - "tower", - "town", - "toy", - "track", - "trade", - "traffic", - "tragic", - "train", - "transfer", - "trap", - "trash", - "travel", - "tray", - "treat", - "tree", - "trend", - "trial", - "tribe", - "trick", - "trigger", - "trim", - "trip", - "trophy", - "trouble", - "truck", - "true", - "truly", - "trumpet", - "trust", - "truth", - "try", - "tube", - "tuition", - "tumble", - "tuna", - "tunnel", - "turkey", - "turn", - "turtle", - "twelve", - "twenty", - "twice", - "twin", - "twist", - "two", - "type", - "typical", - "ugly", - "umbrella", - "unable", - "unaware", - "uncle", - "uncover", - "under", - "undo", - "unfair", - "unfold", - "unhappy", - "uniform", - "unique", - "unit", - "universe", - "unknown", - "unlock", - "until", - "unusual", - "unveil", - "update", - "upgrade", - "uphold", - "upon", - "upper", - "upset", - "urban", - "urge", - "usage", - "use", - "used", - "useful", - "useless", - "usual", - "utility", - "vacant", - "vacuum", - "vague", - "valid", - "valley", - "valve", - "van", - "vanish", - "vapor", - "various", - "vast", - "vault", - "vehicle", - "velvet", - "vendor", - "venture", - "venue", - "verb", - "verify", - "version", - "very", - "vessel", - "veteran", - "viable", - "vibrant", - "vicious", - "victory", - "video", - "view", - "village", - "vintage", - "violin", - "virtual", - "virus", - "visa", - "visit", - "visual", - "vital", - "vivid", - "vocal", - "voice", - "void", - "volcano", - "volume", - "vote", - "voyage", - "wage", - "wagon", - "wait", - "walk", - "wall", - "walnut", - "want", - "warfare", - "warm", - "warrior", - "wash", - "wasp", - "waste", - "water", - "wave", - "way", - "wealth", - "weapon", - "wear", - "weasel", - "weather", - "web", - "wedding", - "weekend", - "weird", - "welcome", - "west", - "wet", - "whale", - "what", - "wheat", - "wheel", - "when", - "where", - "whip", - "whisper", - "wide", - "width", - "wife", - "wild", - "will", - "win", - "window", - "wine", - "wing", - "wink", - "winner", - "winter", - "wire", - "wisdom", - "wise", - "wish", - "witness", - "wolf", - "woman", - "wonder", - "wood", - "wool", - "word", - "work", - "world", - "worry", - "worth", - "wrap", - "wreck", - "wrestle", - "wrist", - "write", - "wrong", - "yard", - "year", - "yellow", - "you", - "young", - "youth", - "zebra", - "zero", - "zone", - "zoo", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt deleted file mode 100644 index 56b10125d..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeFrench { - val wordList: List = listOf( - "abaisser", - "abandon", - "abdiquer", - "abeille", - "abolir", - "aborder", - "aboutir", - "aboyer", - "abrasif", - "abreuver", - "abriter", - "abroger", - "abrupt", - "absence", - "absolu", - "absurde", - "abusif", - "abyssal", - "académie", - "acajou", - "acarien", - "accabler", - "accepter", - "acclamer", - "accolade", - "accroche", - "accuser", - "acerbe", - "achat", - "acheter", - "aciduler", - "acier", - "acompte", - "acquérir", - "acronyme", - "acteur", - "actif", - "actuel", - "adepte", - "adéquat", - "adhésif", - "adjectif", - "adjuger", - "admettre", - "admirer", - "adopter", - "adorer", - "adoucir", - "adresse", - "adroit", - "adulte", - "adverbe", - "aérer", - "aéronef", - "affaire", - "affecter", - "affiche", - "affreux", - "affubler", - "agacer", - "agencer", - "agile", - "agiter", - "agrafer", - "agréable", - "agrume", - "aider", - "aiguille", - "ailier", - "aimable", - "aisance", - "ajouter", - "ajuster", - "alarmer", - "alchimie", - "alerte", - "algèbre", - "algue", - "aliéner", - "aliment", - "alléger", - "alliage", - "allouer", - "allumer", - "alourdir", - "alpaga", - "altesse", - "alvéole", - "amateur", - "ambigu", - "ambre", - "aménager", - "amertume", - "amidon", - "amiral", - "amorcer", - "amour", - "amovible", - "amphibie", - "ampleur", - "amusant", - "analyse", - "anaphore", - "anarchie", - "anatomie", - "ancien", - "anéantir", - "angle", - "angoisse", - "anguleux", - "animal", - "annexer", - "annonce", - "annuel", - "anodin", - "anomalie", - "anonyme", - "anormal", - "antenne", - "antidote", - "anxieux", - "apaiser", - "apéritif", - "aplanir", - "apologie", - "appareil", - "appeler", - "apporter", - "appuyer", - "aquarium", - "aqueduc", - "arbitre", - "arbuste", - "ardeur", - "ardoise", - "argent", - "arlequin", - "armature", - "armement", - "armoire", - "armure", - "arpenter", - "arracher", - "arriver", - "arroser", - "arsenic", - "artériel", - "article", - "aspect", - "asphalte", - "aspirer", - "assaut", - "asservir", - "assiette", - "associer", - "assurer", - "asticot", - "astre", - "astuce", - "atelier", - "atome", - "atrium", - "atroce", - "attaque", - "attentif", - "attirer", - "attraper", - "aubaine", - "auberge", - "audace", - "audible", - "augurer", - "aurore", - "automne", - "autruche", - "avaler", - "avancer", - "avarice", - "avenir", - "averse", - "aveugle", - "aviateur", - "avide", - "avion", - "aviser", - "avoine", - "avouer", - "avril", - "axial", - "axiome", - "badge", - "bafouer", - "bagage", - "baguette", - "baignade", - "balancer", - "balcon", - "baleine", - "balisage", - "bambin", - "bancaire", - "bandage", - "banlieue", - "bannière", - "banquier", - "barbier", - "baril", - "baron", - "barque", - "barrage", - "bassin", - "bastion", - "bataille", - "bateau", - "batterie", - "baudrier", - "bavarder", - "belette", - "bélier", - "belote", - "bénéfice", - "berceau", - "berger", - "berline", - "bermuda", - "besace", - "besogne", - "bétail", - "beurre", - "biberon", - "bicycle", - "bidule", - "bijou", - "bilan", - "bilingue", - "billard", - "binaire", - "biologie", - "biopsie", - "biotype", - "biscuit", - "bison", - "bistouri", - "bitume", - "bizarre", - "blafard", - "blague", - "blanchir", - "blessant", - "blinder", - "blond", - "bloquer", - "blouson", - "bobard", - "bobine", - "boire", - "boiser", - "bolide", - "bonbon", - "bondir", - "bonheur", - "bonifier", - "bonus", - "bordure", - "borne", - "botte", - "boucle", - "boueux", - "bougie", - "boulon", - "bouquin", - "bourse", - "boussole", - "boutique", - "boxeur", - "branche", - "brasier", - "brave", - "brebis", - "brèche", - "breuvage", - "bricoler", - "brigade", - "brillant", - "brioche", - "brique", - "brochure", - "broder", - "bronzer", - "brousse", - "broyeur", - "brume", - "brusque", - "brutal", - "bruyant", - "buffle", - "buisson", - "bulletin", - "bureau", - "burin", - "bustier", - "butiner", - "butoir", - "buvable", - "buvette", - "cabanon", - "cabine", - "cachette", - "cadeau", - "cadre", - "caféine", - "caillou", - "caisson", - "calculer", - "calepin", - "calibre", - "calmer", - "calomnie", - "calvaire", - "camarade", - "caméra", - "camion", - "campagne", - "canal", - "caneton", - "canon", - "cantine", - "canular", - "capable", - "caporal", - "caprice", - "capsule", - "capter", - "capuche", - "carabine", - "carbone", - "caresser", - "caribou", - "carnage", - "carotte", - "carreau", - "carton", - "cascade", - "casier", - "casque", - "cassure", - "causer", - "caution", - "cavalier", - "caverne", - "caviar", - "cédille", - "ceinture", - "céleste", - "cellule", - "cendrier", - "censurer", - "central", - "cercle", - "cérébral", - "cerise", - "cerner", - "cerveau", - "cesser", - "chagrin", - "chaise", - "chaleur", - "chambre", - "chance", - "chapitre", - "charbon", - "chasseur", - "chaton", - "chausson", - "chavirer", - "chemise", - "chenille", - "chéquier", - "chercher", - "cheval", - "chien", - "chiffre", - "chignon", - "chimère", - "chiot", - "chlorure", - "chocolat", - "choisir", - "chose", - "chouette", - "chrome", - "chute", - "cigare", - "cigogne", - "cimenter", - "cinéma", - "cintrer", - "circuler", - "cirer", - "cirque", - "citerne", - "citoyen", - "citron", - "civil", - "clairon", - "clameur", - "claquer", - "classe", - "clavier", - "client", - "cligner", - "climat", - "clivage", - "cloche", - "clonage", - "cloporte", - "cobalt", - "cobra", - "cocasse", - "cocotier", - "coder", - "codifier", - "coffre", - "cogner", - "cohésion", - "coiffer", - "coincer", - "colère", - "colibri", - "colline", - "colmater", - "colonel", - "combat", - "comédie", - "commande", - "compact", - "concert", - "conduire", - "confier", - "congeler", - "connoter", - "consonne", - "contact", - "convexe", - "copain", - "copie", - "corail", - "corbeau", - "cordage", - "corniche", - "corpus", - "correct", - "cortège", - "cosmique", - "costume", - "coton", - "coude", - "coupure", - "courage", - "couteau", - "couvrir", - "coyote", - "crabe", - "crainte", - "cravate", - "crayon", - "créature", - "créditer", - "crémeux", - "creuser", - "crevette", - "cribler", - "crier", - "cristal", - "critère", - "croire", - "croquer", - "crotale", - "crucial", - "cruel", - "crypter", - "cubique", - "cueillir", - "cuillère", - "cuisine", - "cuivre", - "culminer", - "cultiver", - "cumuler", - "cupide", - "curatif", - "curseur", - "cyanure", - "cycle", - "cylindre", - "cynique", - "daigner", - "damier", - "danger", - "danseur", - "dauphin", - "débattre", - "débiter", - "déborder", - "débrider", - "débutant", - "décaler", - "décembre", - "déchirer", - "décider", - "déclarer", - "décorer", - "décrire", - "décupler", - "dédale", - "déductif", - "déesse", - "défensif", - "défiler", - "défrayer", - "dégager", - "dégivrer", - "déglutir", - "dégrafer", - "déjeuner", - "délice", - "déloger", - "demander", - "demeurer", - "démolir", - "dénicher", - "dénouer", - "dentelle", - "dénuder", - "départ", - "dépenser", - "déphaser", - "déplacer", - "déposer", - "déranger", - "dérober", - "désastre", - "descente", - "désert", - "désigner", - "désobéir", - "dessiner", - "destrier", - "détacher", - "détester", - "détourer", - "détresse", - "devancer", - "devenir", - "deviner", - "devoir", - "diable", - "dialogue", - "diamant", - "dicter", - "différer", - "digérer", - "digital", - "digne", - "diluer", - "dimanche", - "diminuer", - "dioxyde", - "directif", - "diriger", - "discuter", - "disposer", - "dissiper", - "distance", - "divertir", - "diviser", - "docile", - "docteur", - "dogme", - "doigt", - "domaine", - "domicile", - "dompter", - "donateur", - "donjon", - "donner", - "dopamine", - "dortoir", - "dorure", - "dosage", - "doseur", - "dossier", - "dotation", - "douanier", - "double", - "douceur", - "douter", - "doyen", - "dragon", - "draper", - "dresser", - "dribbler", - "droiture", - "duperie", - "duplexe", - "durable", - "durcir", - "dynastie", - "éblouir", - "écarter", - "écharpe", - "échelle", - "éclairer", - "éclipse", - "éclore", - "écluse", - "école", - "économie", - "écorce", - "écouter", - "écraser", - "écrémer", - "écrivain", - "écrou", - "écume", - "écureuil", - "édifier", - "éduquer", - "effacer", - "effectif", - "effigie", - "effort", - "effrayer", - "effusion", - "égaliser", - "égarer", - "éjecter", - "élaborer", - "élargir", - "électron", - "élégant", - "éléphant", - "élève", - "éligible", - "élitisme", - "éloge", - "élucider", - "éluder", - "emballer", - "embellir", - "embryon", - "émeraude", - "émission", - "emmener", - "émotion", - "émouvoir", - "empereur", - "employer", - "emporter", - "emprise", - "émulsion", - "encadrer", - "enchère", - "enclave", - "encoche", - "endiguer", - "endosser", - "endroit", - "enduire", - "énergie", - "enfance", - "enfermer", - "enfouir", - "engager", - "engin", - "englober", - "énigme", - "enjamber", - "enjeu", - "enlever", - "ennemi", - "ennuyeux", - "enrichir", - "enrobage", - "enseigne", - "entasser", - "entendre", - "entier", - "entourer", - "entraver", - "énumérer", - "envahir", - "enviable", - "envoyer", - "enzyme", - "éolien", - "épaissir", - "épargne", - "épatant", - "épaule", - "épicerie", - "épidémie", - "épier", - "épilogue", - "épine", - "épisode", - "épitaphe", - "époque", - "épreuve", - "éprouver", - "épuisant", - "équerre", - "équipe", - "ériger", - "érosion", - "erreur", - "éruption", - "escalier", - "espadon", - "espèce", - "espiègle", - "espoir", - "esprit", - "esquiver", - "essayer", - "essence", - "essieu", - "essorer", - "estime", - "estomac", - "estrade", - "étagère", - "étaler", - "étanche", - "étatique", - "éteindre", - "étendoir", - "éternel", - "éthanol", - "éthique", - "ethnie", - "étirer", - "étoffer", - "étoile", - "étonnant", - "étourdir", - "étrange", - "étroit", - "étude", - "euphorie", - "évaluer", - "évasion", - "éventail", - "évidence", - "éviter", - "évolutif", - "évoquer", - "exact", - "exagérer", - "exaucer", - "exceller", - "excitant", - "exclusif", - "excuse", - "exécuter", - "exemple", - "exercer", - "exhaler", - "exhorter", - "exigence", - "exiler", - "exister", - "exotique", - "expédier", - "explorer", - "exposer", - "exprimer", - "exquis", - "extensif", - "extraire", - "exulter", - "fable", - "fabuleux", - "facette", - "facile", - "facture", - "faiblir", - "falaise", - "fameux", - "famille", - "farceur", - "farfelu", - "farine", - "farouche", - "fasciner", - "fatal", - "fatigue", - "faucon", - "fautif", - "faveur", - "favori", - "fébrile", - "féconder", - "fédérer", - "félin", - "femme", - "fémur", - "fendoir", - "féodal", - "fermer", - "féroce", - "ferveur", - "festival", - "feuille", - "feutre", - "février", - "fiasco", - "ficeler", - "fictif", - "fidèle", - "figure", - "filature", - "filetage", - "filière", - "filleul", - "filmer", - "filou", - "filtrer", - "financer", - "finir", - "fiole", - "firme", - "fissure", - "fixer", - "flairer", - "flamme", - "flasque", - "flatteur", - "fléau", - "flèche", - "fleur", - "flexion", - "flocon", - "flore", - "fluctuer", - "fluide", - "fluvial", - "folie", - "fonderie", - "fongible", - "fontaine", - "forcer", - "forgeron", - "formuler", - "fortune", - "fossile", - "foudre", - "fougère", - "fouiller", - "foulure", - "fourmi", - "fragile", - "fraise", - "franchir", - "frapper", - "frayeur", - "frégate", - "freiner", - "frelon", - "frémir", - "frénésie", - "frère", - "friable", - "friction", - "frisson", - "frivole", - "froid", - "fromage", - "frontal", - "frotter", - "fruit", - "fugitif", - "fuite", - "fureur", - "furieux", - "furtif", - "fusion", - "futur", - "gagner", - "galaxie", - "galerie", - "gambader", - "garantir", - "gardien", - "garnir", - "garrigue", - "gazelle", - "gazon", - "géant", - "gélatine", - "gélule", - "gendarme", - "général", - "génie", - "genou", - "gentil", - "géologie", - "géomètre", - "géranium", - "germe", - "gestuel", - "geyser", - "gibier", - "gicler", - "girafe", - "givre", - "glace", - "glaive", - "glisser", - "globe", - "gloire", - "glorieux", - "golfeur", - "gomme", - "gonfler", - "gorge", - "gorille", - "goudron", - "gouffre", - "goulot", - "goupille", - "gourmand", - "goutte", - "graduel", - "graffiti", - "graine", - "grand", - "grappin", - "gratuit", - "gravir", - "grenat", - "griffure", - "griller", - "grimper", - "grogner", - "gronder", - "grotte", - "groupe", - "gruger", - "grutier", - "gruyère", - "guépard", - "guerrier", - "guide", - "guimauve", - "guitare", - "gustatif", - "gymnaste", - "gyrostat", - "habitude", - "hachoir", - "halte", - "hameau", - "hangar", - "hanneton", - "haricot", - "harmonie", - "harpon", - "hasard", - "hélium", - "hématome", - "herbe", - "hérisson", - "hermine", - "héron", - "hésiter", - "heureux", - "hiberner", - "hibou", - "hilarant", - "histoire", - "hiver", - "homard", - "hommage", - "homogène", - "honneur", - "honorer", - "honteux", - "horde", - "horizon", - "horloge", - "hormone", - "horrible", - "houleux", - "housse", - "hublot", - "huileux", - "humain", - "humble", - "humide", - "humour", - "hurler", - "hydromel", - "hygiène", - "hymne", - "hypnose", - "idylle", - "ignorer", - "iguane", - "illicite", - "illusion", - "image", - "imbiber", - "imiter", - "immense", - "immobile", - "immuable", - "impact", - "impérial", - "implorer", - "imposer", - "imprimer", - "imputer", - "incarner", - "incendie", - "incident", - "incliner", - "incolore", - "indexer", - "indice", - "inductif", - "inédit", - "ineptie", - "inexact", - "infini", - "infliger", - "informer", - "infusion", - "ingérer", - "inhaler", - "inhiber", - "injecter", - "injure", - "innocent", - "inoculer", - "inonder", - "inscrire", - "insecte", - "insigne", - "insolite", - "inspirer", - "instinct", - "insulter", - "intact", - "intense", - "intime", - "intrigue", - "intuitif", - "inutile", - "invasion", - "inventer", - "inviter", - "invoquer", - "ironique", - "irradier", - "irréel", - "irriter", - "isoler", - "ivoire", - "ivresse", - "jaguar", - "jaillir", - "jambe", - "janvier", - "jardin", - "jauger", - "jaune", - "javelot", - "jetable", - "jeton", - "jeudi", - "jeunesse", - "joindre", - "joncher", - "jongler", - "joueur", - "jouissif", - "journal", - "jovial", - "joyau", - "joyeux", - "jubiler", - "jugement", - "junior", - "jupon", - "juriste", - "justice", - "juteux", - "juvénile", - "kayak", - "kimono", - "kiosque", - "label", - "labial", - "labourer", - "lacérer", - "lactose", - "lagune", - "laine", - "laisser", - "laitier", - "lambeau", - "lamelle", - "lampe", - "lanceur", - "langage", - "lanterne", - "lapin", - "largeur", - "larme", - "laurier", - "lavabo", - "lavoir", - "lecture", - "légal", - "léger", - "légume", - "lessive", - "lettre", - "levier", - "lexique", - "lézard", - "liasse", - "libérer", - "libre", - "licence", - "licorne", - "liège", - "lièvre", - "ligature", - "ligoter", - "ligue", - "limer", - "limite", - "limonade", - "limpide", - "linéaire", - "lingot", - "lionceau", - "liquide", - "lisière", - "lister", - "lithium", - "litige", - "littoral", - "livreur", - "logique", - "lointain", - "loisir", - "lombric", - "loterie", - "louer", - "lourd", - "loutre", - "louve", - "loyal", - "lubie", - "lucide", - "lucratif", - "lueur", - "lugubre", - "luisant", - "lumière", - "lunaire", - "lundi", - "luron", - "lutter", - "luxueux", - "machine", - "magasin", - "magenta", - "magique", - "maigre", - "maillon", - "maintien", - "mairie", - "maison", - "majorer", - "malaxer", - "maléfice", - "malheur", - "malice", - "mallette", - "mammouth", - "mandater", - "maniable", - "manquant", - "manteau", - "manuel", - "marathon", - "marbre", - "marchand", - "mardi", - "maritime", - "marqueur", - "marron", - "marteler", - "mascotte", - "massif", - "matériel", - "matière", - "matraque", - "maudire", - "maussade", - "mauve", - "maximal", - "méchant", - "méconnu", - "médaille", - "médecin", - "méditer", - "méduse", - "meilleur", - "mélange", - "mélodie", - "membre", - "mémoire", - "menacer", - "mener", - "menhir", - "mensonge", - "mentor", - "mercredi", - "mérite", - "merle", - "messager", - "mesure", - "métal", - "météore", - "méthode", - "métier", - "meuble", - "miauler", - "microbe", - "miette", - "mignon", - "migrer", - "milieu", - "million", - "mimique", - "mince", - "minéral", - "minimal", - "minorer", - "minute", - "miracle", - "miroiter", - "missile", - "mixte", - "mobile", - "moderne", - "moelleux", - "mondial", - "moniteur", - "monnaie", - "monotone", - "monstre", - "montagne", - "monument", - "moqueur", - "morceau", - "morsure", - "mortier", - "moteur", - "motif", - "mouche", - "moufle", - "moulin", - "mousson", - "mouton", - "mouvant", - "multiple", - "munition", - "muraille", - "murène", - "murmure", - "muscle", - "muséum", - "musicien", - "mutation", - "muter", - "mutuel", - "myriade", - "myrtille", - "mystère", - "mythique", - "nageur", - "nappe", - "narquois", - "narrer", - "natation", - "nation", - "nature", - "naufrage", - "nautique", - "navire", - "nébuleux", - "nectar", - "néfaste", - "négation", - "négliger", - "négocier", - "neige", - "nerveux", - "nettoyer", - "neurone", - "neutron", - "neveu", - "niche", - "nickel", - "nitrate", - "niveau", - "noble", - "nocif", - "nocturne", - "noirceur", - "noisette", - "nomade", - "nombreux", - "nommer", - "normatif", - "notable", - "notifier", - "notoire", - "nourrir", - "nouveau", - "novateur", - "novembre", - "novice", - "nuage", - "nuancer", - "nuire", - "nuisible", - "numéro", - "nuptial", - "nuque", - "nutritif", - "obéir", - "objectif", - "obliger", - "obscur", - "observer", - "obstacle", - "obtenir", - "obturer", - "occasion", - "occuper", - "océan", - "octobre", - "octroyer", - "octupler", - "oculaire", - "odeur", - "odorant", - "offenser", - "officier", - "offrir", - "ogive", - "oiseau", - "oisillon", - "olfactif", - "olivier", - "ombrage", - "omettre", - "onctueux", - "onduler", - "onéreux", - "onirique", - "opale", - "opaque", - "opérer", - "opinion", - "opportun", - "opprimer", - "opter", - "optique", - "orageux", - "orange", - "orbite", - "ordonner", - "oreille", - "organe", - "orgueil", - "orifice", - "ornement", - "orque", - "ortie", - "osciller", - "osmose", - "ossature", - "otarie", - "ouragan", - "ourson", - "outil", - "outrager", - "ouvrage", - "ovation", - "oxyde", - "oxygène", - "ozone", - "paisible", - "palace", - "palmarès", - "palourde", - "palper", - "panache", - "panda", - "pangolin", - "paniquer", - "panneau", - "panorama", - "pantalon", - "papaye", - "papier", - "papoter", - "papyrus", - "paradoxe", - "parcelle", - "paresse", - "parfumer", - "parler", - "parole", - "parrain", - "parsemer", - "partager", - "parure", - "parvenir", - "passion", - "pastèque", - "paternel", - "patience", - "patron", - "pavillon", - "pavoiser", - "payer", - "paysage", - "peigne", - "peintre", - "pelage", - "pélican", - "pelle", - "pelouse", - "peluche", - "pendule", - "pénétrer", - "pénible", - "pensif", - "pénurie", - "pépite", - "péplum", - "perdrix", - "perforer", - "période", - "permuter", - "perplexe", - "persil", - "perte", - "peser", - "pétale", - "petit", - "pétrir", - "peuple", - "pharaon", - "phobie", - "phoque", - "photon", - "phrase", - "physique", - "piano", - "pictural", - "pièce", - "pierre", - "pieuvre", - "pilote", - "pinceau", - "pipette", - "piquer", - "pirogue", - "piscine", - "piston", - "pivoter", - "pixel", - "pizza", - "placard", - "plafond", - "plaisir", - "planer", - "plaque", - "plastron", - "plateau", - "pleurer", - "plexus", - "pliage", - "plomb", - "plonger", - "pluie", - "plumage", - "pochette", - "poésie", - "poète", - "pointe", - "poirier", - "poisson", - "poivre", - "polaire", - "policier", - "pollen", - "polygone", - "pommade", - "pompier", - "ponctuel", - "pondérer", - "poney", - "portique", - "position", - "posséder", - "posture", - "potager", - "poteau", - "potion", - "pouce", - "poulain", - "poumon", - "pourpre", - "poussin", - "pouvoir", - "prairie", - "pratique", - "précieux", - "prédire", - "préfixe", - "prélude", - "prénom", - "présence", - "prétexte", - "prévoir", - "primitif", - "prince", - "prison", - "priver", - "problème", - "procéder", - "prodige", - "profond", - "progrès", - "proie", - "projeter", - "prologue", - "promener", - "propre", - "prospère", - "protéger", - "prouesse", - "proverbe", - "prudence", - "pruneau", - "psychose", - "public", - "puceron", - "puiser", - "pulpe", - "pulsar", - "punaise", - "punitif", - "pupitre", - "purifier", - "puzzle", - "pyramide", - "quasar", - "querelle", - "question", - "quiétude", - "quitter", - "quotient", - "racine", - "raconter", - "radieux", - "ragondin", - "raideur", - "raisin", - "ralentir", - "rallonge", - "ramasser", - "rapide", - "rasage", - "ratisser", - "ravager", - "ravin", - "rayonner", - "réactif", - "réagir", - "réaliser", - "réanimer", - "recevoir", - "réciter", - "réclamer", - "récolter", - "recruter", - "reculer", - "recycler", - "rédiger", - "redouter", - "refaire", - "réflexe", - "réformer", - "refrain", - "refuge", - "régalien", - "région", - "réglage", - "régulier", - "réitérer", - "rejeter", - "rejouer", - "relatif", - "relever", - "relief", - "remarque", - "remède", - "remise", - "remonter", - "remplir", - "remuer", - "renard", - "renfort", - "renifler", - "renoncer", - "rentrer", - "renvoi", - "replier", - "reporter", - "reprise", - "reptile", - "requin", - "réserve", - "résineux", - "résoudre", - "respect", - "rester", - "résultat", - "rétablir", - "retenir", - "réticule", - "retomber", - "retracer", - "réunion", - "réussir", - "revanche", - "revivre", - "révolte", - "révulsif", - "richesse", - "rideau", - "rieur", - "rigide", - "rigoler", - "rincer", - "riposter", - "risible", - "risque", - "rituel", - "rival", - "rivière", - "rocheux", - "romance", - "rompre", - "ronce", - "rondin", - "roseau", - "rosier", - "rotatif", - "rotor", - "rotule", - "rouge", - "rouille", - "rouleau", - "routine", - "royaume", - "ruban", - "rubis", - "ruche", - "ruelle", - "rugueux", - "ruiner", - "ruisseau", - "ruser", - "rustique", - "rythme", - "sabler", - "saboter", - "sabre", - "sacoche", - "safari", - "sagesse", - "saisir", - "salade", - "salive", - "salon", - "saluer", - "samedi", - "sanction", - "sanglier", - "sarcasme", - "sardine", - "saturer", - "saugrenu", - "saumon", - "sauter", - "sauvage", - "savant", - "savonner", - "scalpel", - "scandale", - "scélérat", - "scénario", - "sceptre", - "schéma", - "science", - "scinder", - "score", - "scrutin", - "sculpter", - "séance", - "sécable", - "sécher", - "secouer", - "sécréter", - "sédatif", - "séduire", - "seigneur", - "séjour", - "sélectif", - "semaine", - "sembler", - "semence", - "séminal", - "sénateur", - "sensible", - "sentence", - "séparer", - "séquence", - "serein", - "sergent", - "sérieux", - "serrure", - "sérum", - "service", - "sésame", - "sévir", - "sevrage", - "sextuple", - "sidéral", - "siècle", - "siéger", - "siffler", - "sigle", - "signal", - "silence", - "silicium", - "simple", - "sincère", - "sinistre", - "siphon", - "sirop", - "sismique", - "situer", - "skier", - "social", - "socle", - "sodium", - "soigneux", - "soldat", - "soleil", - "solitude", - "soluble", - "sombre", - "sommeil", - "somnoler", - "sonde", - "songeur", - "sonnette", - "sonore", - "sorcier", - "sortir", - "sosie", - "sottise", - "soucieux", - "soudure", - "souffle", - "soulever", - "soupape", - "source", - "soutirer", - "souvenir", - "spacieux", - "spatial", - "spécial", - "sphère", - "spiral", - "stable", - "station", - "sternum", - "stimulus", - "stipuler", - "strict", - "studieux", - "stupeur", - "styliste", - "sublime", - "substrat", - "subtil", - "subvenir", - "succès", - "sucre", - "suffixe", - "suggérer", - "suiveur", - "sulfate", - "superbe", - "supplier", - "surface", - "suricate", - "surmener", - "surprise", - "sursaut", - "survie", - "suspect", - "syllabe", - "symbole", - "symétrie", - "synapse", - "syntaxe", - "système", - "tabac", - "tablier", - "tactile", - "tailler", - "talent", - "talisman", - "talonner", - "tambour", - "tamiser", - "tangible", - "tapis", - "taquiner", - "tarder", - "tarif", - "tartine", - "tasse", - "tatami", - "tatouage", - "taupe", - "taureau", - "taxer", - "témoin", - "temporel", - "tenaille", - "tendre", - "teneur", - "tenir", - "tension", - "terminer", - "terne", - "terrible", - "tétine", - "texte", - "thème", - "théorie", - "thérapie", - "thorax", - "tibia", - "tiède", - "timide", - "tirelire", - "tiroir", - "tissu", - "titane", - "titre", - "tituber", - "toboggan", - "tolérant", - "tomate", - "tonique", - "tonneau", - "toponyme", - "torche", - "tordre", - "tornade", - "torpille", - "torrent", - "torse", - "tortue", - "totem", - "toucher", - "tournage", - "tousser", - "toxine", - "traction", - "trafic", - "tragique", - "trahir", - "train", - "trancher", - "travail", - "trèfle", - "tremper", - "trésor", - "treuil", - "triage", - "tribunal", - "tricoter", - "trilogie", - "triomphe", - "tripler", - "triturer", - "trivial", - "trombone", - "tronc", - "tropical", - "troupeau", - "tuile", - "tulipe", - "tumulte", - "tunnel", - "turbine", - "tuteur", - "tutoyer", - "tuyau", - "tympan", - "typhon", - "typique", - "tyran", - "ubuesque", - "ultime", - "ultrason", - "unanime", - "unifier", - "union", - "unique", - "unitaire", - "univers", - "uranium", - "urbain", - "urticant", - "usage", - "usine", - "usuel", - "usure", - "utile", - "utopie", - "vacarme", - "vaccin", - "vagabond", - "vague", - "vaillant", - "vaincre", - "vaisseau", - "valable", - "valise", - "vallon", - "valve", - "vampire", - "vanille", - "vapeur", - "varier", - "vaseux", - "vassal", - "vaste", - "vecteur", - "vedette", - "végétal", - "véhicule", - "veinard", - "véloce", - "vendredi", - "vénérer", - "venger", - "venimeux", - "ventouse", - "verdure", - "vérin", - "vernir", - "verrou", - "verser", - "vertu", - "veston", - "vétéran", - "vétuste", - "vexant", - "vexer", - "viaduc", - "viande", - "victoire", - "vidange", - "vidéo", - "vignette", - "vigueur", - "vilain", - "village", - "vinaigre", - "violon", - "vipère", - "virement", - "virtuose", - "virus", - "visage", - "viseur", - "vision", - "visqueux", - "visuel", - "vital", - "vitesse", - "viticole", - "vitrine", - "vivace", - "vivipare", - "vocation", - "voguer", - "voile", - "voisin", - "voiture", - "volaille", - "volcan", - "voltiger", - "volume", - "vorace", - "vortex", - "voter", - "vouloir", - "voyage", - "voyelle", - "wagon", - "xénon", - "yacht", - "zèbre", - "zénith", - "zeste", - "zoologie", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt deleted file mode 100644 index 883104fd8..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt +++ /dev/null @@ -1,2060 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeItalian { - val wordList: List = listOf( - "abaco", - "abbaglio", - "abbinato", - "abete", - "abisso", - "abolire", - "abrasivo", - "abrogato", - "accadere", - "accenno", - "accusato", - "acetone", - "achille", - "acido", - "acqua", - "acre", - "acrilico", - "acrobata", - "acuto", - "adagio", - "addebito", - "addome", - "adeguato", - "aderire", - "adipe", - "adottare", - "adulare", - "affabile", - "affetto", - "affisso", - "affranto", - "aforisma", - "afoso", - "africano", - "agave", - "agente", - "agevole", - "aggancio", - "agire", - "agitare", - "agonismo", - "agricolo", - "agrumeto", - "aguzzo", - "alabarda", - "alato", - "albatro", - "alberato", - "albo", - "albume", - "alce", - "alcolico", - "alettone", - "alfa", - "algebra", - "aliante", - "alibi", - "alimento", - "allagato", - "allegro", - "allievo", - "allodola", - "allusivo", - "almeno", - "alogeno", - "alpaca", - "alpestre", - "altalena", - "alterno", - "alticcio", - "altrove", - "alunno", - "alveolo", - "alzare", - "amalgama", - "amanita", - "amarena", - "ambito", - "ambrato", - "ameba", - "america", - "ametista", - "amico", - "ammasso", - "ammenda", - "ammirare", - "ammonito", - "amore", - "ampio", - "ampliare", - "amuleto", - "anacardo", - "anagrafe", - "analista", - "anarchia", - "anatra", - "anca", - "ancella", - "ancora", - "andare", - "andrea", - "anello", - "angelo", - "angolare", - "angusto", - "anima", - "annegare", - "annidato", - "anno", - "annuncio", - "anonimo", - "anticipo", - "anzi", - "apatico", - "apertura", - "apode", - "apparire", - "appetito", - "appoggio", - "approdo", - "appunto", - "aprile", - "arabica", - "arachide", - "aragosta", - "araldica", - "arancio", - "aratura", - "arazzo", - "arbitro", - "archivio", - "ardito", - "arenile", - "argento", - "argine", - "arguto", - "aria", - "armonia", - "arnese", - "arredato", - "arringa", - "arrosto", - "arsenico", - "arso", - "artefice", - "arzillo", - "asciutto", - "ascolto", - "asepsi", - "asettico", - "asfalto", - "asino", - "asola", - "aspirato", - "aspro", - "assaggio", - "asse", - "assoluto", - "assurdo", - "asta", - "astenuto", - "astice", - "astratto", - "atavico", - "ateismo", - "atomico", - "atono", - "attesa", - "attivare", - "attorno", - "attrito", - "attuale", - "ausilio", - "austria", - "autista", - "autonomo", - "autunno", - "avanzato", - "avere", - "avvenire", - "avviso", - "avvolgere", - "azione", - "azoto", - "azzimo", - "azzurro", - "babele", - "baccano", - "bacino", - "baco", - "badessa", - "badilata", - "bagnato", - "baita", - "balcone", - "baldo", - "balena", - "ballata", - "balzano", - "bambino", - "bandire", - "baraonda", - "barbaro", - "barca", - "baritono", - "barlume", - "barocco", - "basilico", - "basso", - "batosta", - "battuto", - "baule", - "bava", - "bavosa", - "becco", - "beffa", - "belgio", - "belva", - "benda", - "benevole", - "benigno", - "benzina", - "bere", - "berlina", - "beta", - "bibita", - "bici", - "bidone", - "bifido", - "biga", - "bilancia", - "bimbo", - "binocolo", - "biologo", - "bipede", - "bipolare", - "birbante", - "birra", - "biscotto", - "bisesto", - "bisnonno", - "bisonte", - "bisturi", - "bizzarro", - "blando", - "blatta", - "bollito", - "bonifico", - "bordo", - "bosco", - "botanico", - "bottino", - "bozzolo", - "braccio", - "bradipo", - "brama", - "branca", - "bravura", - "bretella", - "brevetto", - "brezza", - "briglia", - "brillante", - "brindare", - "broccolo", - "brodo", - "bronzina", - "brullo", - "bruno", - "bubbone", - "buca", - "budino", - "buffone", - "buio", - "bulbo", - "buono", - "burlone", - "burrasca", - "bussola", - "busta", - "cadetto", - "caduco", - "calamaro", - "calcolo", - "calesse", - "calibro", - "calmo", - "caloria", - "cambusa", - "camerata", - "camicia", - "cammino", - "camola", - "campale", - "canapa", - "candela", - "cane", - "canino", - "canotto", - "cantina", - "capace", - "capello", - "capitolo", - "capogiro", - "cappero", - "capra", - "capsula", - "carapace", - "carcassa", - "cardo", - "carisma", - "carovana", - "carretto", - "cartolina", - "casaccio", - "cascata", - "caserma", - "caso", - "cassone", - "castello", - "casuale", - "catasta", - "catena", - "catrame", - "cauto", - "cavillo", - "cedibile", - "cedrata", - "cefalo", - "celebre", - "cellulare", - "cena", - "cenone", - "centesimo", - "ceramica", - "cercare", - "certo", - "cerume", - "cervello", - "cesoia", - "cespo", - "ceto", - "chela", - "chiaro", - "chicca", - "chiedere", - "chimera", - "china", - "chirurgo", - "chitarra", - "ciao", - "ciclismo", - "cifrare", - "cigno", - "cilindro", - "ciottolo", - "circa", - "cirrosi", - "citrico", - "cittadino", - "ciuffo", - "civetta", - "civile", - "classico", - "clinica", - "cloro", - "cocco", - "codardo", - "codice", - "coerente", - "cognome", - "collare", - "colmato", - "colore", - "colposo", - "coltivato", - "colza", - "coma", - "cometa", - "commando", - "comodo", - "computer", - "comune", - "conciso", - "condurre", - "conferma", - "congelare", - "coniuge", - "connesso", - "conoscere", - "consumo", - "continuo", - "convegno", - "coperto", - "copione", - "coppia", - "copricapo", - "corazza", - "cordata", - "coricato", - "cornice", - "corolla", - "corpo", - "corredo", - "corsia", - "cortese", - "cosmico", - "costante", - "cottura", - "covato", - "cratere", - "cravatta", - "creato", - "credere", - "cremoso", - "crescita", - "creta", - "criceto", - "crinale", - "crisi", - "critico", - "croce", - "cronaca", - "crostata", - "cruciale", - "crusca", - "cucire", - "cuculo", - "cugino", - "cullato", - "cupola", - "curatore", - "cursore", - "curvo", - "cuscino", - "custode", - "dado", - "daino", - "dalmata", - "damerino", - "daniela", - "dannoso", - "danzare", - "datato", - "davanti", - "davvero", - "debutto", - "decennio", - "deciso", - "declino", - "decollo", - "decreto", - "dedicato", - "definito", - "deforme", - "degno", - "delegare", - "delfino", - "delirio", - "delta", - "demenza", - "denotato", - "dentro", - "deposito", - "derapata", - "derivare", - "deroga", - "descritto", - "deserto", - "desiderio", - "desumere", - "detersivo", - "devoto", - "diametro", - "dicembre", - "diedro", - "difeso", - "diffuso", - "digerire", - "digitale", - "diluvio", - "dinamico", - "dinnanzi", - "dipinto", - "diploma", - "dipolo", - "diradare", - "dire", - "dirotto", - "dirupo", - "disagio", - "discreto", - "disfare", - "disgelo", - "disposto", - "distanza", - "disumano", - "dito", - "divano", - "divelto", - "dividere", - "divorato", - "doblone", - "docente", - "doganale", - "dogma", - "dolce", - "domato", - "domenica", - "dominare", - "dondolo", - "dono", - "dormire", - "dote", - "dottore", - "dovuto", - "dozzina", - "drago", - "druido", - "dubbio", - "dubitare", - "ducale", - "duna", - "duomo", - "duplice", - "duraturo", - "ebano", - "eccesso", - "ecco", - "eclissi", - "economia", - "edera", - "edicola", - "edile", - "editoria", - "educare", - "egemonia", - "egli", - "egoismo", - "egregio", - "elaborato", - "elargire", - "elegante", - "elencato", - "eletto", - "elevare", - "elfico", - "elica", - "elmo", - "elsa", - "eluso", - "emanato", - "emblema", - "emesso", - "emiro", - "emotivo", - "emozione", - "empirico", - "emulo", - "endemico", - "enduro", - "energia", - "enfasi", - "enoteca", - "entrare", - "enzima", - "epatite", - "epilogo", - "episodio", - "epocale", - "eppure", - "equatore", - "erario", - "erba", - "erboso", - "erede", - "eremita", - "erigere", - "ermetico", - "eroe", - "erosivo", - "errante", - "esagono", - "esame", - "esanime", - "esaudire", - "esca", - "esempio", - "esercito", - "esibito", - "esigente", - "esistere", - "esito", - "esofago", - "esortato", - "esoso", - "espanso", - "espresso", - "essenza", - "esso", - "esteso", - "estimare", - "estonia", - "estroso", - "esultare", - "etilico", - "etnico", - "etrusco", - "etto", - "euclideo", - "europa", - "evaso", - "evidenza", - "evitato", - "evoluto", - "evviva", - "fabbrica", - "faccenda", - "fachiro", - "falco", - "famiglia", - "fanale", - "fanfara", - "fango", - "fantasma", - "fare", - "farfalla", - "farinoso", - "farmaco", - "fascia", - "fastoso", - "fasullo", - "faticare", - "fato", - "favoloso", - "febbre", - "fecola", - "fede", - "fegato", - "felpa", - "feltro", - "femmina", - "fendere", - "fenomeno", - "fermento", - "ferro", - "fertile", - "fessura", - "festivo", - "fetta", - "feudo", - "fiaba", - "fiducia", - "fifa", - "figurato", - "filo", - "finanza", - "finestra", - "finire", - "fiore", - "fiscale", - "fisico", - "fiume", - "flacone", - "flamenco", - "flebo", - "flemma", - "florido", - "fluente", - "fluoro", - "fobico", - "focaccia", - "focoso", - "foderato", - "foglio", - "folata", - "folclore", - "folgore", - "fondente", - "fonetico", - "fonia", - "fontana", - "forbito", - "forchetta", - "foresta", - "formica", - "fornaio", - "foro", - "fortezza", - "forzare", - "fosfato", - "fosso", - "fracasso", - "frana", - "frassino", - "fratello", - "freccetta", - "frenata", - "fresco", - "frigo", - "frollino", - "fronde", - "frugale", - "frutta", - "fucilata", - "fucsia", - "fuggente", - "fulmine", - "fulvo", - "fumante", - "fumetto", - "fumoso", - "fune", - "funzione", - "fuoco", - "furbo", - "furgone", - "furore", - "fuso", - "futile", - "gabbiano", - "gaffe", - "galateo", - "gallina", - "galoppo", - "gambero", - "gamma", - "garanzia", - "garbo", - "garofano", - "garzone", - "gasdotto", - "gasolio", - "gastrico", - "gatto", - "gaudio", - "gazebo", - "gazzella", - "geco", - "gelatina", - "gelso", - "gemello", - "gemmato", - "gene", - "genitore", - "gennaio", - "genotipo", - "gergo", - "ghepardo", - "ghiaccio", - "ghisa", - "giallo", - "gilda", - "ginepro", - "giocare", - "gioiello", - "giorno", - "giove", - "girato", - "girone", - "gittata", - "giudizio", - "giurato", - "giusto", - "globulo", - "glutine", - "gnomo", - "gobba", - "golf", - "gomito", - "gommone", - "gonfio", - "gonna", - "governo", - "gracile", - "grado", - "grafico", - "grammo", - "grande", - "grattare", - "gravoso", - "grazia", - "greca", - "gregge", - "grifone", - "grigio", - "grinza", - "grotta", - "gruppo", - "guadagno", - "guaio", - "guanto", - "guardare", - "gufo", - "guidare", - "ibernato", - "icona", - "identico", - "idillio", - "idolo", - "idra", - "idrico", - "idrogeno", - "igiene", - "ignaro", - "ignorato", - "ilare", - "illeso", - "illogico", - "illudere", - "imballo", - "imbevuto", - "imbocco", - "imbuto", - "immane", - "immerso", - "immolato", - "impacco", - "impeto", - "impiego", - "importo", - "impronta", - "inalare", - "inarcare", - "inattivo", - "incanto", - "incendio", - "inchino", - "incisivo", - "incluso", - "incontro", - "incrocio", - "incubo", - "indagine", - "india", - "indole", - "inedito", - "infatti", - "infilare", - "inflitto", - "ingaggio", - "ingegno", - "inglese", - "ingordo", - "ingrosso", - "innesco", - "inodore", - "inoltrare", - "inondato", - "insano", - "insetto", - "insieme", - "insonnia", - "insulina", - "intasato", - "intero", - "intonaco", - "intuito", - "inumidire", - "invalido", - "invece", - "invito", - "iperbole", - "ipnotico", - "ipotesi", - "ippica", - "iride", - "irlanda", - "ironico", - "irrigato", - "irrorare", - "isolato", - "isotopo", - "isterico", - "istituto", - "istrice", - "italia", - "iterare", - "labbro", - "labirinto", - "lacca", - "lacerato", - "lacrima", - "lacuna", - "laddove", - "lago", - "lampo", - "lancetta", - "lanterna", - "lardoso", - "larga", - "laringe", - "lastra", - "latenza", - "latino", - "lattuga", - "lavagna", - "lavoro", - "legale", - "leggero", - "lembo", - "lentezza", - "lenza", - "leone", - "lepre", - "lesivo", - "lessato", - "lesto", - "letterale", - "leva", - "levigato", - "libero", - "lido", - "lievito", - "lilla", - "limatura", - "limitare", - "limpido", - "lineare", - "lingua", - "liquido", - "lira", - "lirica", - "lisca", - "lite", - "litigio", - "livrea", - "locanda", - "lode", - "logica", - "lombare", - "londra", - "longevo", - "loquace", - "lorenzo", - "loto", - "lotteria", - "luce", - "lucidato", - "lumaca", - "luminoso", - "lungo", - "lupo", - "luppolo", - "lusinga", - "lusso", - "lutto", - "macabro", - "macchina", - "macero", - "macinato", - "madama", - "magico", - "maglia", - "magnete", - "magro", - "maiolica", - "malafede", - "malgrado", - "malinteso", - "malsano", - "malto", - "malumore", - "mana", - "mancia", - "mandorla", - "mangiare", - "manifesto", - "mannaro", - "manovra", - "mansarda", - "mantide", - "manubrio", - "mappa", - "maratona", - "marcire", - "maretta", - "marmo", - "marsupio", - "maschera", - "massaia", - "mastino", - "materasso", - "matricola", - "mattone", - "maturo", - "mazurca", - "meandro", - "meccanico", - "mecenate", - "medesimo", - "meditare", - "mega", - "melassa", - "melis", - "melodia", - "meninge", - "meno", - "mensola", - "mercurio", - "merenda", - "merlo", - "meschino", - "mese", - "messere", - "mestolo", - "metallo", - "metodo", - "mettere", - "miagolare", - "mica", - "micelio", - "michele", - "microbo", - "midollo", - "miele", - "migliore", - "milano", - "milite", - "mimosa", - "minerale", - "mini", - "minore", - "mirino", - "mirtillo", - "miscela", - "missiva", - "misto", - "misurare", - "mitezza", - "mitigare", - "mitra", - "mittente", - "mnemonico", - "modello", - "modifica", - "modulo", - "mogano", - "mogio", - "mole", - "molosso", - "monastero", - "monco", - "mondina", - "monetario", - "monile", - "monotono", - "monsone", - "montato", - "monviso", - "mora", - "mordere", - "morsicato", - "mostro", - "motivato", - "motosega", - "motto", - "movenza", - "movimento", - "mozzo", - "mucca", - "mucosa", - "muffa", - "mughetto", - "mugnaio", - "mulatto", - "mulinello", - "multiplo", - "mummia", - "munto", - "muovere", - "murale", - "musa", - "muscolo", - "musica", - "mutevole", - "muto", - "nababbo", - "nafta", - "nanometro", - "narciso", - "narice", - "narrato", - "nascere", - "nastrare", - "naturale", - "nautica", - "naviglio", - "nebulosa", - "necrosi", - "negativo", - "negozio", - "nemmeno", - "neofita", - "neretto", - "nervo", - "nessuno", - "nettuno", - "neutrale", - "neve", - "nevrotico", - "nicchia", - "ninfa", - "nitido", - "nobile", - "nocivo", - "nodo", - "nome", - "nomina", - "nordico", - "normale", - "norvegese", - "nostrano", - "notare", - "notizia", - "notturno", - "novella", - "nucleo", - "nulla", - "numero", - "nuovo", - "nutrire", - "nuvola", - "nuziale", - "oasi", - "obbedire", - "obbligo", - "obelisco", - "oblio", - "obolo", - "obsoleto", - "occasione", - "occhio", - "occidente", - "occorrere", - "occultare", - "ocra", - "oculato", - "odierno", - "odorare", - "offerta", - "offrire", - "offuscato", - "oggetto", - "oggi", - "ognuno", - "olandese", - "olfatto", - "oliato", - "oliva", - "ologramma", - "oltre", - "omaggio", - "ombelico", - "ombra", - "omega", - "omissione", - "ondoso", - "onere", - "onice", - "onnivoro", - "onorevole", - "onta", - "operato", - "opinione", - "opposto", - "oracolo", - "orafo", - "ordine", - "orecchino", - "orefice", - "orfano", - "organico", - "origine", - "orizzonte", - "orma", - "ormeggio", - "ornativo", - "orologio", - "orrendo", - "orribile", - "ortensia", - "ortica", - "orzata", - "orzo", - "osare", - "oscurare", - "osmosi", - "ospedale", - "ospite", - "ossa", - "ossidare", - "ostacolo", - "oste", - "otite", - "otre", - "ottagono", - "ottimo", - "ottobre", - "ovale", - "ovest", - "ovino", - "oviparo", - "ovocito", - "ovunque", - "ovviare", - "ozio", - "pacchetto", - "pace", - "pacifico", - "padella", - "padrone", - "paese", - "paga", - "pagina", - "palazzina", - "palesare", - "pallido", - "palo", - "palude", - "pandoro", - "pannello", - "paolo", - "paonazzo", - "paprica", - "parabola", - "parcella", - "parere", - "pargolo", - "pari", - "parlato", - "parola", - "partire", - "parvenza", - "parziale", - "passivo", - "pasticca", - "patacca", - "patologia", - "pattume", - "pavone", - "peccato", - "pedalare", - "pedonale", - "peggio", - "peloso", - "penare", - "pendice", - "penisola", - "pennuto", - "penombra", - "pensare", - "pentola", - "pepe", - "pepita", - "perbene", - "percorso", - "perdonato", - "perforare", - "pergamena", - "periodo", - "permesso", - "perno", - "perplesso", - "persuaso", - "pertugio", - "pervaso", - "pesatore", - "pesista", - "peso", - "pestifero", - "petalo", - "pettine", - "petulante", - "pezzo", - "piacere", - "pianta", - "piattino", - "piccino", - "picozza", - "piega", - "pietra", - "piffero", - "pigiama", - "pigolio", - "pigro", - "pila", - "pilifero", - "pillola", - "pilota", - "pimpante", - "pineta", - "pinna", - "pinolo", - "pioggia", - "piombo", - "piramide", - "piretico", - "pirite", - "pirolisi", - "pitone", - "pizzico", - "placebo", - "planare", - "plasma", - "platano", - "plenario", - "pochezza", - "poderoso", - "podismo", - "poesia", - "poggiare", - "polenta", - "poligono", - "pollice", - "polmonite", - "polpetta", - "polso", - "poltrona", - "polvere", - "pomice", - "pomodoro", - "ponte", - "popoloso", - "porfido", - "poroso", - "porpora", - "porre", - "portata", - "posa", - "positivo", - "possesso", - "postulato", - "potassio", - "potere", - "pranzo", - "prassi", - "pratica", - "precluso", - "predica", - "prefisso", - "pregiato", - "prelievo", - "premere", - "prenotare", - "preparato", - "presenza", - "pretesto", - "prevalso", - "prima", - "principe", - "privato", - "problema", - "procura", - "produrre", - "profumo", - "progetto", - "prolunga", - "promessa", - "pronome", - "proposta", - "proroga", - "proteso", - "prova", - "prudente", - "prugna", - "prurito", - "psiche", - "pubblico", - "pudica", - "pugilato", - "pugno", - "pulce", - "pulito", - "pulsante", - "puntare", - "pupazzo", - "pupilla", - "puro", - "quadro", - "qualcosa", - "quasi", - "querela", - "quota", - "raccolto", - "raddoppio", - "radicale", - "radunato", - "raffica", - "ragazzo", - "ragione", - "ragno", - "ramarro", - "ramingo", - "ramo", - "randagio", - "rantolare", - "rapato", - "rapina", - "rappreso", - "rasatura", - "raschiato", - "rasente", - "rassegna", - "rastrello", - "rata", - "ravveduto", - "reale", - "recepire", - "recinto", - "recluta", - "recondito", - "recupero", - "reddito", - "redimere", - "regalato", - "registro", - "regola", - "regresso", - "relazione", - "remare", - "remoto", - "renna", - "replica", - "reprimere", - "reputare", - "resa", - "residente", - "responso", - "restauro", - "rete", - "retina", - "retorica", - "rettifica", - "revocato", - "riassunto", - "ribadire", - "ribelle", - "ribrezzo", - "ricarica", - "ricco", - "ricevere", - "riciclato", - "ricordo", - "ricreduto", - "ridicolo", - "ridurre", - "rifasare", - "riflesso", - "riforma", - "rifugio", - "rigare", - "rigettato", - "righello", - "rilassato", - "rilevato", - "rimanere", - "rimbalzo", - "rimedio", - "rimorchio", - "rinascita", - "rincaro", - "rinforzo", - "rinnovo", - "rinomato", - "rinsavito", - "rintocco", - "rinuncia", - "rinvenire", - "riparato", - "ripetuto", - "ripieno", - "riportare", - "ripresa", - "ripulire", - "risata", - "rischio", - "riserva", - "risibile", - "riso", - "rispetto", - "ristoro", - "risultato", - "risvolto", - "ritardo", - "ritegno", - "ritmico", - "ritrovo", - "riunione", - "riva", - "riverso", - "rivincita", - "rivolto", - "rizoma", - "roba", - "robotico", - "robusto", - "roccia", - "roco", - "rodaggio", - "rodere", - "roditore", - "rogito", - "rollio", - "romantico", - "rompere", - "ronzio", - "rosolare", - "rospo", - "rotante", - "rotondo", - "rotula", - "rovescio", - "rubizzo", - "rubrica", - "ruga", - "rullino", - "rumine", - "rumoroso", - "ruolo", - "rupe", - "russare", - "rustico", - "sabato", - "sabbiare", - "sabotato", - "sagoma", - "salasso", - "saldatura", - "salgemma", - "salivare", - "salmone", - "salone", - "saltare", - "saluto", - "salvo", - "sapere", - "sapido", - "saporito", - "saraceno", - "sarcasmo", - "sarto", - "sassoso", - "satellite", - "satira", - "satollo", - "saturno", - "savana", - "savio", - "saziato", - "sbadiglio", - "sbalzo", - "sbancato", - "sbarra", - "sbattere", - "sbavare", - "sbendare", - "sbirciare", - "sbloccato", - "sbocciato", - "sbrinare", - "sbruffone", - "sbuffare", - "scabroso", - "scadenza", - "scala", - "scambiare", - "scandalo", - "scapola", - "scarso", - "scatenare", - "scavato", - "scelto", - "scenico", - "scettro", - "scheda", - "schiena", - "sciarpa", - "scienza", - "scindere", - "scippo", - "sciroppo", - "scivolo", - "sclerare", - "scodella", - "scolpito", - "scomparto", - "sconforto", - "scoprire", - "scorta", - "scossone", - "scozzese", - "scriba", - "scrollare", - "scrutinio", - "scuderia", - "scultore", - "scuola", - "scuro", - "scusare", - "sdebitare", - "sdoganare", - "seccatura", - "secondo", - "sedano", - "seggiola", - "segnalato", - "segregato", - "seguito", - "selciato", - "selettivo", - "sella", - "selvaggio", - "semaforo", - "sembrare", - "seme", - "seminato", - "sempre", - "senso", - "sentire", - "sepolto", - "sequenza", - "serata", - "serbato", - "sereno", - "serio", - "serpente", - "serraglio", - "servire", - "sestina", - "setola", - "settimana", - "sfacelo", - "sfaldare", - "sfamato", - "sfarzoso", - "sfaticato", - "sfera", - "sfida", - "sfilato", - "sfinge", - "sfocato", - "sfoderare", - "sfogo", - "sfoltire", - "sforzato", - "sfratto", - "sfruttato", - "sfuggito", - "sfumare", - "sfuso", - "sgabello", - "sgarbato", - "sgonfiare", - "sgorbio", - "sgrassato", - "sguardo", - "sibilo", - "siccome", - "sierra", - "sigla", - "signore", - "silenzio", - "sillaba", - "simbolo", - "simpatico", - "simulato", - "sinfonia", - "singolo", - "sinistro", - "sino", - "sintesi", - "sinusoide", - "sipario", - "sisma", - "sistole", - "situato", - "slitta", - "slogatura", - "sloveno", - "smarrito", - "smemorato", - "smentito", - "smeraldo", - "smilzo", - "smontare", - "smottato", - "smussato", - "snellire", - "snervato", - "snodo", - "sobbalzo", - "sobrio", - "soccorso", - "sociale", - "sodale", - "soffitto", - "sogno", - "soldato", - "solenne", - "solido", - "sollazzo", - "solo", - "solubile", - "solvente", - "somatico", - "somma", - "sonda", - "sonetto", - "sonnifero", - "sopire", - "soppeso", - "sopra", - "sorgere", - "sorpasso", - "sorriso", - "sorso", - "sorteggio", - "sorvolato", - "sospiro", - "sosta", - "sottile", - "spada", - "spalla", - "spargere", - "spatola", - "spavento", - "spazzola", - "specie", - "spedire", - "spegnere", - "spelatura", - "speranza", - "spessore", - "spettrale", - "spezzato", - "spia", - "spigoloso", - "spillato", - "spinoso", - "spirale", - "splendido", - "sportivo", - "sposo", - "spranga", - "sprecare", - "spronato", - "spruzzo", - "spuntino", - "squillo", - "sradicare", - "srotolato", - "stabile", - "stacco", - "staffa", - "stagnare", - "stampato", - "stantio", - "starnuto", - "stasera", - "statuto", - "stelo", - "steppa", - "sterzo", - "stiletto", - "stima", - "stirpe", - "stivale", - "stizzoso", - "stonato", - "storico", - "strappo", - "stregato", - "stridulo", - "strozzare", - "strutto", - "stuccare", - "stufo", - "stupendo", - "subentro", - "succoso", - "sudore", - "suggerito", - "sugo", - "sultano", - "suonare", - "superbo", - "supporto", - "surgelato", - "surrogato", - "sussurro", - "sutura", - "svagare", - "svedese", - "sveglio", - "svelare", - "svenuto", - "svezia", - "sviluppo", - "svista", - "svizzera", - "svolta", - "svuotare", - "tabacco", - "tabulato", - "tacciare", - "taciturno", - "tale", - "talismano", - "tampone", - "tannino", - "tara", - "tardivo", - "targato", - "tariffa", - "tarpare", - "tartaruga", - "tasto", - "tattico", - "taverna", - "tavolata", - "tazza", - "teca", - "tecnico", - "telefono", - "temerario", - "tempo", - "temuto", - "tendone", - "tenero", - "tensione", - "tentacolo", - "teorema", - "terme", - "terrazzo", - "terzetto", - "tesi", - "tesserato", - "testato", - "tetro", - "tettoia", - "tifare", - "tigella", - "timbro", - "tinto", - "tipico", - "tipografo", - "tiraggio", - "tiro", - "titanio", - "titolo", - "titubante", - "tizio", - "tizzone", - "toccare", - "tollerare", - "tolto", - "tombola", - "tomo", - "tonfo", - "tonsilla", - "topazio", - "topologia", - "toppa", - "torba", - "tornare", - "torrone", - "tortora", - "toscano", - "tossire", - "tostatura", - "totano", - "trabocco", - "trachea", - "trafila", - "tragedia", - "tralcio", - "tramonto", - "transito", - "trapano", - "trarre", - "trasloco", - "trattato", - "trave", - "treccia", - "tremolio", - "trespolo", - "tributo", - "tricheco", - "trifoglio", - "trillo", - "trincea", - "trio", - "tristezza", - "triturato", - "trivella", - "tromba", - "trono", - "troppo", - "trottola", - "trovare", - "truccato", - "tubatura", - "tuffato", - "tulipano", - "tumulto", - "tunisia", - "turbare", - "turchino", - "tuta", - "tutela", - "ubicato", - "uccello", - "uccisore", - "udire", - "uditivo", - "uffa", - "ufficio", - "uguale", - "ulisse", - "ultimato", - "umano", - "umile", - "umorismo", - "uncinetto", - "ungere", - "ungherese", - "unicorno", - "unificato", - "unisono", - "unitario", - "unte", - "uovo", - "upupa", - "uragano", - "urgenza", - "urlo", - "usanza", - "usato", - "uscito", - "usignolo", - "usuraio", - "utensile", - "utilizzo", - "utopia", - "vacante", - "vaccinato", - "vagabondo", - "vagliato", - "valanga", - "valgo", - "valico", - "valletta", - "valoroso", - "valutare", - "valvola", - "vampata", - "vangare", - "vanitoso", - "vano", - "vantaggio", - "vanvera", - "vapore", - "varano", - "varcato", - "variante", - "vasca", - "vedetta", - "vedova", - "veduto", - "vegetale", - "veicolo", - "velcro", - "velina", - "velluto", - "veloce", - "venato", - "vendemmia", - "vento", - "verace", - "verbale", - "vergogna", - "verifica", - "vero", - "verruca", - "verticale", - "vescica", - "vessillo", - "vestale", - "veterano", - "vetrina", - "vetusto", - "viandante", - "vibrante", - "vicenda", - "vichingo", - "vicinanza", - "vidimare", - "vigilia", - "vigneto", - "vigore", - "vile", - "villano", - "vimini", - "vincitore", - "viola", - "vipera", - "virgola", - "virologo", - "virulento", - "viscoso", - "visione", - "vispo", - "vissuto", - "visura", - "vita", - "vitello", - "vittima", - "vivanda", - "vivido", - "viziare", - "voce", - "voga", - "volatile", - "volere", - "volpe", - "voragine", - "vulcano", - "zampogna", - "zanna", - "zappato", - "zattera", - "zavorra", - "zefiro", - "zelante", - "zelo", - "zenzero", - "zerbino", - "zibetto", - "zinco", - "zircone", - "zitto", - "zolla", - "zotico", - "zucchero", - "zufolo", - "zulu", - "zuppa", - "", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt deleted file mode 100644 index 2d7154b9e..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeJapanese { - val wordList: List = listOf( - "あいこくしん", - "あいさつ", - "あいだ", - "あおぞら", - "あかちゃん", - "あきる", - "あけがた", - "あける", - "あこがれる", - "あさい", - "あさひ", - "あしあと", - "あじわう", - "あずかる", - "あずき", - "あそぶ", - "あたえる", - "あたためる", - "あたりまえ", - "あたる", - "あつい", - "あつかう", - "あっしゅく", - "あつまり", - "あつめる", - "あてな", - "あてはまる", - "あひる", - "あぶら", - "あぶる", - "あふれる", - "あまい", - "あまど", - "あまやかす", - "あまり", - "あみもの", - "あめりか", - "あやまる", - "あゆむ", - "あらいぐま", - "あらし", - "あらすじ", - "あらためる", - "あらゆる", - "あらわす", - "ありがとう", - "あわせる", - "あわてる", - "あんい", - "あんがい", - "あんこ", - "あんぜん", - "あんてい", - "あんない", - "あんまり", - "いいだす", - "いおん", - "いがい", - "いがく", - "いきおい", - "いきなり", - "いきもの", - "いきる", - "いくじ", - "いくぶん", - "いけばな", - "いけん", - "いこう", - "いこく", - "いこつ", - "いさましい", - "いさん", - "いしき", - "いじゅう", - "いじょう", - "いじわる", - "いずみ", - "いずれ", - "いせい", - "いせえび", - "いせかい", - "いせき", - "いぜん", - "いそうろう", - "いそがしい", - "いだい", - "いだく", - "いたずら", - "いたみ", - "いたりあ", - "いちおう", - "いちじ", - "いちど", - "いちば", - "いちぶ", - "いちりゅう", - "いつか", - "いっしゅん", - "いっせい", - "いっそう", - "いったん", - "いっち", - "いってい", - "いっぽう", - "いてざ", - "いてん", - "いどう", - "いとこ", - "いない", - "いなか", - "いねむり", - "いのち", - "いのる", - "いはつ", - "いばる", - "いはん", - "いびき", - "いひん", - "いふく", - "いへん", - "いほう", - "いみん", - "いもうと", - "いもたれ", - "いもり", - "いやがる", - "いやす", - "いよかん", - "いよく", - "いらい", - "いらすと", - "いりぐち", - "いりょう", - "いれい", - "いれもの", - "いれる", - "いろえんぴつ", - "いわい", - "いわう", - "いわかん", - "いわば", - "いわゆる", - "いんげんまめ", - "いんさつ", - "いんしょう", - "いんよう", - "うえき", - "うえる", - "うおざ", - "うがい", - "うかぶ", - "うかべる", - "うきわ", - "うくらいな", - "うくれれ", - "うけたまわる", - "うけつけ", - "うけとる", - "うけもつ", - "うける", - "うごかす", - "うごく", - "うこん", - "うさぎ", - "うしなう", - "うしろがみ", - "うすい", - "うすぎ", - "うすぐらい", - "うすめる", - "うせつ", - "うちあわせ", - "うちがわ", - "うちき", - "うちゅう", - "うっかり", - "うつくしい", - "うったえる", - "うつる", - "うどん", - "うなぎ", - "うなじ", - "うなずく", - "うなる", - "うねる", - "うのう", - "うぶげ", - "うぶごえ", - "うまれる", - "うめる", - "うもう", - "うやまう", - "うよく", - "うらがえす", - "うらぐち", - "うらない", - "うりあげ", - "うりきれ", - "うるさい", - "うれしい", - "うれゆき", - "うれる", - "うろこ", - "うわき", - "うわさ", - "うんこう", - "うんちん", - "うんてん", - "うんどう", - "えいえん", - "えいが", - "えいきょう", - "えいご", - "えいせい", - "えいぶん", - "えいよう", - "えいわ", - "えおり", - "えがお", - "えがく", - "えきたい", - "えくせる", - "えしゃく", - "えすて", - "えつらん", - "えのぐ", - "えほうまき", - "えほん", - "えまき", - "えもじ", - "えもの", - "えらい", - "えらぶ", - "えりあ", - "えんえん", - "えんかい", - "えんぎ", - "えんげき", - "えんしゅう", - "えんぜつ", - "えんそく", - "えんちょう", - "えんとつ", - "おいかける", - "おいこす", - "おいしい", - "おいつく", - "おうえん", - "おうさま", - "おうじ", - "おうせつ", - "おうたい", - "おうふく", - "おうべい", - "おうよう", - "おえる", - "おおい", - "おおう", - "おおどおり", - "おおや", - "おおよそ", - "おかえり", - "おかず", - "おがむ", - "おかわり", - "おぎなう", - "おきる", - "おくさま", - "おくじょう", - "おくりがな", - "おくる", - "おくれる", - "おこす", - "おこなう", - "おこる", - "おさえる", - "おさない", - "おさめる", - "おしいれ", - "おしえる", - "おじぎ", - "おじさん", - "おしゃれ", - "おそらく", - "おそわる", - "おたがい", - "おたく", - "おだやか", - "おちつく", - "おっと", - "おつり", - "おでかけ", - "おとしもの", - "おとなしい", - "おどり", - "おどろかす", - "おばさん", - "おまいり", - "おめでとう", - "おもいで", - "おもう", - "おもたい", - "おもちゃ", - "おやつ", - "おやゆび", - "およぼす", - "おらんだ", - "おろす", - "おんがく", - "おんけい", - "おんしゃ", - "おんせん", - "おんだん", - "おんちゅう", - "おんどけい", - "かあつ", - "かいが", - "がいき", - "がいけん", - "がいこう", - "かいさつ", - "かいしゃ", - "かいすいよく", - "かいぜん", - "かいぞうど", - "かいつう", - "かいてん", - "かいとう", - "かいふく", - "がいへき", - "かいほう", - "かいよう", - "がいらい", - "かいわ", - "かえる", - "かおり", - "かかえる", - "かがく", - "かがし", - "かがみ", - "かくご", - "かくとく", - "かざる", - "がぞう", - "かたい", - "かたち", - "がちょう", - "がっきゅう", - "がっこう", - "がっさん", - "がっしょう", - "かなざわし", - "かのう", - "がはく", - "かぶか", - "かほう", - "かほご", - "かまう", - "かまぼこ", - "かめれおん", - "かゆい", - "かようび", - "からい", - "かるい", - "かろう", - "かわく", - "かわら", - "がんか", - "かんけい", - "かんこう", - "かんしゃ", - "かんそう", - "かんたん", - "かんち", - "がんばる", - "きあい", - "きあつ", - "きいろ", - "ぎいん", - "きうい", - "きうん", - "きえる", - "きおう", - "きおく", - "きおち", - "きおん", - "きかい", - "きかく", - "きかんしゃ", - "ききて", - "きくばり", - "きくらげ", - "きけんせい", - "きこう", - "きこえる", - "きこく", - "きさい", - "きさく", - "きさま", - "きさらぎ", - "ぎじかがく", - "ぎしき", - "ぎじたいけん", - "ぎじにってい", - "ぎじゅつしゃ", - "きすう", - "きせい", - "きせき", - "きせつ", - "きそう", - "きぞく", - "きぞん", - "きたえる", - "きちょう", - "きつえん", - "ぎっちり", - "きつつき", - "きつね", - "きてい", - "きどう", - "きどく", - "きない", - "きなが", - "きなこ", - "きぬごし", - "きねん", - "きのう", - "きのした", - "きはく", - "きびしい", - "きひん", - "きふく", - "きぶん", - "きぼう", - "きほん", - "きまる", - "きみつ", - "きむずかしい", - "きめる", - "きもだめし", - "きもち", - "きもの", - "きゃく", - "きやく", - "ぎゅうにく", - "きよう", - "きょうりゅう", - "きらい", - "きらく", - "きりん", - "きれい", - "きれつ", - "きろく", - "ぎろん", - "きわめる", - "ぎんいろ", - "きんかくじ", - "きんじょ", - "きんようび", - "ぐあい", - "くいず", - "くうかん", - "くうき", - "くうぐん", - "くうこう", - "ぐうせい", - "くうそう", - "ぐうたら", - "くうふく", - "くうぼ", - "くかん", - "くきょう", - "くげん", - "ぐこう", - "くさい", - "くさき", - "くさばな", - "くさる", - "くしゃみ", - "くしょう", - "くすのき", - "くすりゆび", - "くせげ", - "くせん", - "ぐたいてき", - "くださる", - "くたびれる", - "くちこみ", - "くちさき", - "くつした", - "ぐっすり", - "くつろぐ", - "くとうてん", - "くどく", - "くなん", - "くねくね", - "くのう", - "くふう", - "くみあわせ", - "くみたてる", - "くめる", - "くやくしょ", - "くらす", - "くらべる", - "くるま", - "くれる", - "くろう", - "くわしい", - "ぐんかん", - "ぐんしょく", - "ぐんたい", - "ぐんて", - "けあな", - "けいかく", - "けいけん", - "けいこ", - "けいさつ", - "げいじゅつ", - "けいたい", - "げいのうじん", - "けいれき", - "けいろ", - "けおとす", - "けおりもの", - "げきか", - "げきげん", - "げきだん", - "げきちん", - "げきとつ", - "げきは", - "げきやく", - "げこう", - "げこくじょう", - "げざい", - "けさき", - "げざん", - "けしき", - "けしごむ", - "けしょう", - "げすと", - "けたば", - "けちゃっぷ", - "けちらす", - "けつあつ", - "けつい", - "けつえき", - "けっこん", - "けつじょ", - "けっせき", - "けってい", - "けつまつ", - "げつようび", - "げつれい", - "けつろん", - "げどく", - "けとばす", - "けとる", - "けなげ", - "けなす", - "けなみ", - "けぬき", - "げねつ", - "けねん", - "けはい", - "げひん", - "けぶかい", - "げぼく", - "けまり", - "けみかる", - "けむし", - "けむり", - "けもの", - "けらい", - "けろけろ", - "けわしい", - "けんい", - "けんえつ", - "けんお", - "けんか", - "げんき", - "けんげん", - "けんこう", - "けんさく", - "けんしゅう", - "けんすう", - "げんそう", - "けんちく", - "けんてい", - "けんとう", - "けんない", - "けんにん", - "げんぶつ", - "けんま", - "けんみん", - "けんめい", - "けんらん", - "けんり", - "こあくま", - "こいぬ", - "こいびと", - "ごうい", - "こうえん", - "こうおん", - "こうかん", - "ごうきゅう", - "ごうけい", - "こうこう", - "こうさい", - "こうじ", - "こうすい", - "ごうせい", - "こうそく", - "こうたい", - "こうちゃ", - "こうつう", - "こうてい", - "こうどう", - "こうない", - "こうはい", - "ごうほう", - "ごうまん", - "こうもく", - "こうりつ", - "こえる", - "こおり", - "ごかい", - "ごがつ", - "ごかん", - "こくご", - "こくさい", - "こくとう", - "こくない", - "こくはく", - "こぐま", - "こけい", - "こける", - "ここのか", - "こころ", - "こさめ", - "こしつ", - "こすう", - "こせい", - "こせき", - "こぜん", - "こそだて", - "こたい", - "こたえる", - "こたつ", - "こちょう", - "こっか", - "こつこつ", - "こつばん", - "こつぶ", - "こてい", - "こてん", - "ことがら", - "ことし", - "ことば", - "ことり", - "こなごな", - "こねこね", - "このまま", - "このみ", - "このよ", - "ごはん", - "こひつじ", - "こふう", - "こふん", - "こぼれる", - "ごまあぶら", - "こまかい", - "ごますり", - "こまつな", - "こまる", - "こむぎこ", - "こもじ", - "こもち", - "こもの", - "こもん", - "こやく", - "こやま", - "こゆう", - "こゆび", - "こよい", - "こよう", - "こりる", - "これくしょん", - "ころっけ", - "こわもて", - "こわれる", - "こんいん", - "こんかい", - "こんき", - "こんしゅう", - "こんすい", - "こんだて", - "こんとん", - "こんなん", - "こんびに", - "こんぽん", - "こんまけ", - "こんや", - "こんれい", - "こんわく", - "ざいえき", - "さいかい", - "さいきん", - "ざいげん", - "ざいこ", - "さいしょ", - "さいせい", - "ざいたく", - "ざいちゅう", - "さいてき", - "ざいりょう", - "さうな", - "さかいし", - "さがす", - "さかな", - "さかみち", - "さがる", - "さぎょう", - "さくし", - "さくひん", - "さくら", - "さこく", - "さこつ", - "さずかる", - "ざせき", - "さたん", - "さつえい", - "ざつおん", - "ざっか", - "ざつがく", - "さっきょく", - "ざっし", - "さつじん", - "ざっそう", - "さつたば", - "さつまいも", - "さてい", - "さといも", - "さとう", - "さとおや", - "さとし", - "さとる", - "さのう", - "さばく", - "さびしい", - "さべつ", - "さほう", - "さほど", - "さます", - "さみしい", - "さみだれ", - "さむけ", - "さめる", - "さやえんどう", - "さゆう", - "さよう", - "さよく", - "さらだ", - "ざるそば", - "さわやか", - "さわる", - "さんいん", - "さんか", - "さんきゃく", - "さんこう", - "さんさい", - "ざんしょ", - "さんすう", - "さんせい", - "さんそ", - "さんち", - "さんま", - "さんみ", - "さんらん", - "しあい", - "しあげ", - "しあさって", - "しあわせ", - "しいく", - "しいん", - "しうち", - "しえい", - "しおけ", - "しかい", - "しかく", - "じかん", - "しごと", - "しすう", - "じだい", - "したうけ", - "したぎ", - "したて", - "したみ", - "しちょう", - "しちりん", - "しっかり", - "しつじ", - "しつもん", - "してい", - "してき", - "してつ", - "じてん", - "じどう", - "しなぎれ", - "しなもの", - "しなん", - "しねま", - "しねん", - "しのぐ", - "しのぶ", - "しはい", - "しばかり", - "しはつ", - "しはらい", - "しはん", - "しひょう", - "しふく", - "じぶん", - "しへい", - "しほう", - "しほん", - "しまう", - "しまる", - "しみん", - "しむける", - "じむしょ", - "しめい", - "しめる", - "しもん", - "しゃいん", - "しゃうん", - "しゃおん", - "じゃがいも", - "しやくしょ", - "しゃくほう", - "しゃけん", - "しゃこ", - "しゃざい", - "しゃしん", - "しゃせん", - "しゃそう", - "しゃたい", - "しゃちょう", - "しゃっきん", - "じゃま", - "しゃりん", - "しゃれい", - "じゆう", - "じゅうしょ", - "しゅくはく", - "じゅしん", - "しゅっせき", - "しゅみ", - "しゅらば", - "じゅんばん", - "しょうかい", - "しょくたく", - "しょっけん", - "しょどう", - "しょもつ", - "しらせる", - "しらべる", - "しんか", - "しんこう", - "じんじゃ", - "しんせいじ", - "しんちく", - "しんりん", - "すあげ", - "すあし", - "すあな", - "ずあん", - "すいえい", - "すいか", - "すいとう", - "ずいぶん", - "すいようび", - "すうがく", - "すうじつ", - "すうせん", - "すおどり", - "すきま", - "すくう", - "すくない", - "すける", - "すごい", - "すこし", - "ずさん", - "すずしい", - "すすむ", - "すすめる", - "すっかり", - "ずっしり", - "ずっと", - "すてき", - "すてる", - "すねる", - "すのこ", - "すはだ", - "すばらしい", - "ずひょう", - "ずぶぬれ", - "すぶり", - "すふれ", - "すべて", - "すべる", - "ずほう", - "すぼん", - "すまい", - "すめし", - "すもう", - "すやき", - "すらすら", - "するめ", - "すれちがう", - "すろっと", - "すわる", - "すんぜん", - "すんぽう", - "せあぶら", - "せいかつ", - "せいげん", - "せいじ", - "せいよう", - "せおう", - "せかいかん", - "せきにん", - "せきむ", - "せきゆ", - "せきらんうん", - "せけん", - "せこう", - "せすじ", - "せたい", - "せたけ", - "せっかく", - "せっきゃく", - "ぜっく", - "せっけん", - "せっこつ", - "せっさたくま", - "せつぞく", - "せつだん", - "せつでん", - "せっぱん", - "せつび", - "せつぶん", - "せつめい", - "せつりつ", - "せなか", - "せのび", - "せはば", - "せびろ", - "せぼね", - "せまい", - "せまる", - "せめる", - "せもたれ", - "せりふ", - "ぜんあく", - "せんい", - "せんえい", - "せんか", - "せんきょ", - "せんく", - "せんげん", - "ぜんご", - "せんさい", - "せんしゅ", - "せんすい", - "せんせい", - "せんぞ", - "せんたく", - "せんちょう", - "せんてい", - "せんとう", - "せんぬき", - "せんねん", - "せんぱい", - "ぜんぶ", - "ぜんぽう", - "せんむ", - "せんめんじょ", - "せんもん", - "せんやく", - "せんゆう", - "せんよう", - "ぜんら", - "ぜんりゃく", - "せんれい", - "せんろ", - "そあく", - "そいとげる", - "そいね", - "そうがんきょう", - "そうき", - "そうご", - "そうしん", - "そうだん", - "そうなん", - "そうび", - "そうめん", - "そうり", - "そえもの", - "そえん", - "そがい", - "そげき", - "そこう", - "そこそこ", - "そざい", - "そしな", - "そせい", - "そせん", - "そそぐ", - "そだてる", - "そつう", - "そつえん", - "そっかん", - "そつぎょう", - "そっけつ", - "そっこう", - "そっせん", - "そっと", - "そとがわ", - "そとづら", - "そなえる", - "そなた", - "そふぼ", - "そぼく", - "そぼろ", - "そまつ", - "そまる", - "そむく", - "そむりえ", - "そめる", - "そもそも", - "そよかぜ", - "そらまめ", - "そろう", - "そんかい", - "そんけい", - "そんざい", - "そんしつ", - "そんぞく", - "そんちょう", - "ぞんび", - "ぞんぶん", - "そんみん", - "たあい", - "たいいん", - "たいうん", - "たいえき", - "たいおう", - "だいがく", - "たいき", - "たいぐう", - "たいけん", - "たいこ", - "たいざい", - "だいじょうぶ", - "だいすき", - "たいせつ", - "たいそう", - "だいたい", - "たいちょう", - "たいてい", - "だいどころ", - "たいない", - "たいねつ", - "たいのう", - "たいはん", - "だいひょう", - "たいふう", - "たいへん", - "たいほ", - "たいまつばな", - "たいみんぐ", - "たいむ", - "たいめん", - "たいやき", - "たいよう", - "たいら", - "たいりょく", - "たいる", - "たいわん", - "たうえ", - "たえる", - "たおす", - "たおる", - "たおれる", - "たかい", - "たかね", - "たきび", - "たくさん", - "たこく", - "たこやき", - "たさい", - "たしざん", - "だじゃれ", - "たすける", - "たずさわる", - "たそがれ", - "たたかう", - "たたく", - "ただしい", - "たたみ", - "たちばな", - "だっかい", - "だっきゃく", - "だっこ", - "だっしゅつ", - "だったい", - "たてる", - "たとえる", - "たなばた", - "たにん", - "たぬき", - "たのしみ", - "たはつ", - "たぶん", - "たべる", - "たぼう", - "たまご", - "たまる", - "だむる", - "ためいき", - "ためす", - "ためる", - "たもつ", - "たやすい", - "たよる", - "たらす", - "たりきほんがん", - "たりょう", - "たりる", - "たると", - "たれる", - "たれんと", - "たろっと", - "たわむれる", - "だんあつ", - "たんい", - "たんおん", - "たんか", - "たんき", - "たんけん", - "たんご", - "たんさん", - "たんじょうび", - "だんせい", - "たんそく", - "たんたい", - "だんち", - "たんてい", - "たんとう", - "だんな", - "たんにん", - "だんねつ", - "たんのう", - "たんぴん", - "だんぼう", - "たんまつ", - "たんめい", - "だんれつ", - "だんろ", - "だんわ", - "ちあい", - "ちあん", - "ちいき", - "ちいさい", - "ちえん", - "ちかい", - "ちから", - "ちきゅう", - "ちきん", - "ちけいず", - "ちけん", - "ちこく", - "ちさい", - "ちしき", - "ちしりょう", - "ちせい", - "ちそう", - "ちたい", - "ちたん", - "ちちおや", - "ちつじょ", - "ちてき", - "ちてん", - "ちぬき", - "ちぬり", - "ちのう", - "ちひょう", - "ちへいせん", - "ちほう", - "ちまた", - "ちみつ", - "ちみどろ", - "ちめいど", - "ちゃんこなべ", - "ちゅうい", - "ちゆりょく", - "ちょうし", - "ちょさくけん", - "ちらし", - "ちらみ", - "ちりがみ", - "ちりょう", - "ちるど", - "ちわわ", - "ちんたい", - "ちんもく", - "ついか", - "ついたち", - "つうか", - "つうじょう", - "つうはん", - "つうわ", - "つかう", - "つかれる", - "つくね", - "つくる", - "つけね", - "つける", - "つごう", - "つたえる", - "つづく", - "つつじ", - "つつむ", - "つとめる", - "つながる", - "つなみ", - "つねづね", - "つのる", - "つぶす", - "つまらない", - "つまる", - "つみき", - "つめたい", - "つもり", - "つもる", - "つよい", - "つるぼ", - "つるみく", - "つわもの", - "つわり", - "てあし", - "てあて", - "てあみ", - "ていおん", - "ていか", - "ていき", - "ていけい", - "ていこく", - "ていさつ", - "ていし", - "ていせい", - "ていたい", - "ていど", - "ていねい", - "ていひょう", - "ていへん", - "ていぼう", - "てうち", - "ておくれ", - "てきとう", - "てくび", - "でこぼこ", - "てさぎょう", - "てさげ", - "てすり", - "てそう", - "てちがい", - "てちょう", - "てつがく", - "てつづき", - "でっぱ", - "てつぼう", - "てつや", - "でぬかえ", - "てぬき", - "てぬぐい", - "てのひら", - "てはい", - "てぶくろ", - "てふだ", - "てほどき", - "てほん", - "てまえ", - "てまきずし", - "てみじか", - "てみやげ", - "てらす", - "てれび", - "てわけ", - "てわたし", - "でんあつ", - "てんいん", - "てんかい", - "てんき", - "てんぐ", - "てんけん", - "てんごく", - "てんさい", - "てんし", - "てんすう", - "でんち", - "てんてき", - "てんとう", - "てんない", - "てんぷら", - "てんぼうだい", - "てんめつ", - "てんらんかい", - "でんりょく", - "でんわ", - "どあい", - "といれ", - "どうかん", - "とうきゅう", - "どうぐ", - "とうし", - "とうむぎ", - "とおい", - "とおか", - "とおく", - "とおす", - "とおる", - "とかい", - "とかす", - "ときおり", - "ときどき", - "とくい", - "とくしゅう", - "とくてん", - "とくに", - "とくべつ", - "とけい", - "とける", - "とこや", - "とさか", - "としょかん", - "とそう", - "とたん", - "とちゅう", - "とっきゅう", - "とっくん", - "とつぜん", - "とつにゅう", - "とどける", - "ととのえる", - "とない", - "となえる", - "となり", - "とのさま", - "とばす", - "どぶがわ", - "とほう", - "とまる", - "とめる", - "ともだち", - "ともる", - "どようび", - "とらえる", - "とんかつ", - "どんぶり", - "ないかく", - "ないこう", - "ないしょ", - "ないす", - "ないせん", - "ないそう", - "なおす", - "ながい", - "なくす", - "なげる", - "なこうど", - "なさけ", - "なたでここ", - "なっとう", - "なつやすみ", - "ななおし", - "なにごと", - "なにもの", - "なにわ", - "なのか", - "なふだ", - "なまいき", - "なまえ", - "なまみ", - "なみだ", - "なめらか", - "なめる", - "なやむ", - "ならう", - "ならび", - "ならぶ", - "なれる", - "なわとび", - "なわばり", - "にあう", - "にいがた", - "にうけ", - "におい", - "にかい", - "にがて", - "にきび", - "にくしみ", - "にくまん", - "にげる", - "にさんかたんそ", - "にしき", - "にせもの", - "にちじょう", - "にちようび", - "にっか", - "にっき", - "にっけい", - "にっこう", - "にっさん", - "にっしょく", - "にっすう", - "にっせき", - "にってい", - "になう", - "にほん", - "にまめ", - "にもつ", - "にやり", - "にゅういん", - "にりんしゃ", - "にわとり", - "にんい", - "にんか", - "にんき", - "にんげん", - "にんしき", - "にんずう", - "にんそう", - "にんたい", - "にんち", - "にんてい", - "にんにく", - "にんぷ", - "にんまり", - "にんむ", - "にんめい", - "にんよう", - "ぬいくぎ", - "ぬかす", - "ぬぐいとる", - "ぬぐう", - "ぬくもり", - "ぬすむ", - "ぬまえび", - "ぬめり", - "ぬらす", - "ぬんちゃく", - "ねあげ", - "ねいき", - "ねいる", - "ねいろ", - "ねぐせ", - "ねくたい", - "ねくら", - "ねこぜ", - "ねこむ", - "ねさげ", - "ねすごす", - "ねそべる", - "ねだん", - "ねつい", - "ねっしん", - "ねつぞう", - "ねったいぎょ", - "ねぶそく", - "ねふだ", - "ねぼう", - "ねほりはほり", - "ねまき", - "ねまわし", - "ねみみ", - "ねむい", - "ねむたい", - "ねもと", - "ねらう", - "ねわざ", - "ねんいり", - "ねんおし", - "ねんかん", - "ねんきん", - "ねんぐ", - "ねんざ", - "ねんし", - "ねんちゃく", - "ねんど", - "ねんぴ", - "ねんぶつ", - "ねんまつ", - "ねんりょう", - "ねんれい", - "のいず", - "のおづま", - "のがす", - "のきなみ", - "のこぎり", - "のこす", - "のこる", - "のせる", - "のぞく", - "のぞむ", - "のたまう", - "のちほど", - "のっく", - "のばす", - "のはら", - "のべる", - "のぼる", - "のみもの", - "のやま", - "のらいぬ", - "のらねこ", - "のりもの", - "のりゆき", - "のれん", - "のんき", - "ばあい", - "はあく", - "ばあさん", - "ばいか", - "ばいく", - "はいけん", - "はいご", - "はいしん", - "はいすい", - "はいせん", - "はいそう", - "はいち", - "ばいばい", - "はいれつ", - "はえる", - "はおる", - "はかい", - "ばかり", - "はかる", - "はくしゅ", - "はけん", - "はこぶ", - "はさみ", - "はさん", - "はしご", - "ばしょ", - "はしる", - "はせる", - "ぱそこん", - "はそん", - "はたん", - "はちみつ", - "はつおん", - "はっかく", - "はづき", - "はっきり", - "はっくつ", - "はっけん", - "はっこう", - "はっさん", - "はっしん", - "はったつ", - "はっちゅう", - "はってん", - "はっぴょう", - "はっぽう", - "はなす", - "はなび", - "はにかむ", - "はぶらし", - "はみがき", - "はむかう", - "はめつ", - "はやい", - "はやし", - "はらう", - "はろうぃん", - "はわい", - "はんい", - "はんえい", - "はんおん", - "はんかく", - "はんきょう", - "ばんぐみ", - "はんこ", - "はんしゃ", - "はんすう", - "はんだん", - "ぱんち", - "ぱんつ", - "はんてい", - "はんとし", - "はんのう", - "はんぱ", - "はんぶん", - "はんぺん", - "はんぼうき", - "はんめい", - "はんらん", - "はんろん", - "ひいき", - "ひうん", - "ひえる", - "ひかく", - "ひかり", - "ひかる", - "ひかん", - "ひくい", - "ひけつ", - "ひこうき", - "ひこく", - "ひさい", - "ひさしぶり", - "ひさん", - "びじゅつかん", - "ひしょ", - "ひそか", - "ひそむ", - "ひたむき", - "ひだり", - "ひたる", - "ひつぎ", - "ひっこし", - "ひっし", - "ひつじゅひん", - "ひっす", - "ひつぜん", - "ぴったり", - "ぴっちり", - "ひつよう", - "ひてい", - "ひとごみ", - "ひなまつり", - "ひなん", - "ひねる", - "ひはん", - "ひびく", - "ひひょう", - "ひほう", - "ひまわり", - "ひまん", - "ひみつ", - "ひめい", - "ひめじし", - "ひやけ", - "ひやす", - "ひよう", - "びょうき", - "ひらがな", - "ひらく", - "ひりつ", - "ひりょう", - "ひるま", - "ひるやすみ", - "ひれい", - "ひろい", - "ひろう", - "ひろき", - "ひろゆき", - "ひんかく", - "ひんけつ", - "ひんこん", - "ひんしゅ", - "ひんそう", - "ぴんち", - "ひんぱん", - "びんぼう", - "ふあん", - "ふいうち", - "ふうけい", - "ふうせん", - "ぷうたろう", - "ふうとう", - "ふうふ", - "ふえる", - "ふおん", - "ふかい", - "ふきん", - "ふくざつ", - "ふくぶくろ", - "ふこう", - "ふさい", - "ふしぎ", - "ふじみ", - "ふすま", - "ふせい", - "ふせぐ", - "ふそく", - "ぶたにく", - "ふたん", - "ふちょう", - "ふつう", - "ふつか", - "ふっかつ", - "ふっき", - "ふっこく", - "ぶどう", - "ふとる", - "ふとん", - "ふのう", - "ふはい", - "ふひょう", - "ふへん", - "ふまん", - "ふみん", - "ふめつ", - "ふめん", - "ふよう", - "ふりこ", - "ふりる", - "ふるい", - "ふんいき", - "ぶんがく", - "ぶんぐ", - "ふんしつ", - "ぶんせき", - "ふんそう", - "ぶんぽう", - "へいあん", - "へいおん", - "へいがい", - "へいき", - "へいげん", - "へいこう", - "へいさ", - "へいしゃ", - "へいせつ", - "へいそ", - "へいたく", - "へいてん", - "へいねつ", - "へいわ", - "へきが", - "へこむ", - "べにいろ", - "べにしょうが", - "へらす", - "へんかん", - "べんきょう", - "べんごし", - "へんさい", - "へんたい", - "べんり", - "ほあん", - "ほいく", - "ぼうぎょ", - "ほうこく", - "ほうそう", - "ほうほう", - "ほうもん", - "ほうりつ", - "ほえる", - "ほおん", - "ほかん", - "ほきょう", - "ぼきん", - "ほくろ", - "ほけつ", - "ほけん", - "ほこう", - "ほこる", - "ほしい", - "ほしつ", - "ほしゅ", - "ほしょう", - "ほせい", - "ほそい", - "ほそく", - "ほたて", - "ほたる", - "ぽちぶくろ", - "ほっきょく", - "ほっさ", - "ほったん", - "ほとんど", - "ほめる", - "ほんい", - "ほんき", - "ほんけ", - "ほんしつ", - "ほんやく", - "まいにち", - "まかい", - "まかせる", - "まがる", - "まける", - "まこと", - "まさつ", - "まじめ", - "ますく", - "まぜる", - "まつり", - "まとめ", - "まなぶ", - "まぬけ", - "まねく", - "まほう", - "まもる", - "まゆげ", - "まよう", - "まろやか", - "まわす", - "まわり", - "まわる", - "まんが", - "まんきつ", - "まんぞく", - "まんなか", - "みいら", - "みうち", - "みえる", - "みがく", - "みかた", - "みかん", - "みけん", - "みこん", - "みじかい", - "みすい", - "みすえる", - "みせる", - "みっか", - "みつかる", - "みつける", - "みてい", - "みとめる", - "みなと", - "みなみかさい", - "みねらる", - "みのう", - "みのがす", - "みほん", - "みもと", - "みやげ", - "みらい", - "みりょく", - "みわく", - "みんか", - "みんぞく", - "むいか", - "むえき", - "むえん", - "むかい", - "むかう", - "むかえ", - "むかし", - "むぎちゃ", - "むける", - "むげん", - "むさぼる", - "むしあつい", - "むしば", - "むじゅん", - "むしろ", - "むすう", - "むすこ", - "むすぶ", - "むすめ", - "むせる", - "むせん", - "むちゅう", - "むなしい", - "むのう", - "むやみ", - "むよう", - "むらさき", - "むりょう", - "むろん", - "めいあん", - "めいうん", - "めいえん", - "めいかく", - "めいきょく", - "めいさい", - "めいし", - "めいそう", - "めいぶつ", - "めいれい", - "めいわく", - "めぐまれる", - "めざす", - "めした", - "めずらしい", - "めだつ", - "めまい", - "めやす", - "めんきょ", - "めんせき", - "めんどう", - "もうしあげる", - "もうどうけん", - "もえる", - "もくし", - "もくてき", - "もくようび", - "もちろん", - "もどる", - "もらう", - "もんく", - "もんだい", - "やおや", - "やける", - "やさい", - "やさしい", - "やすい", - "やすたろう", - "やすみ", - "やせる", - "やそう", - "やたい", - "やちん", - "やっと", - "やっぱり", - "やぶる", - "やめる", - "ややこしい", - "やよい", - "やわらかい", - "ゆうき", - "ゆうびんきょく", - "ゆうべ", - "ゆうめい", - "ゆけつ", - "ゆしゅつ", - "ゆせん", - "ゆそう", - "ゆたか", - "ゆちゃく", - "ゆでる", - "ゆにゅう", - "ゆびわ", - "ゆらい", - "ゆれる", - "ようい", - "ようか", - "ようきゅう", - "ようじ", - "ようす", - "ようちえん", - "よかぜ", - "よかん", - "よきん", - "よくせい", - "よくぼう", - "よけい", - "よごれる", - "よさん", - "よしゅう", - "よそう", - "よそく", - "よっか", - "よてい", - "よどがわく", - "よねつ", - "よやく", - "よゆう", - "よろこぶ", - "よろしい", - "らいう", - "らくがき", - "らくご", - "らくさつ", - "らくだ", - "らしんばん", - "らせん", - "らぞく", - "らたい", - "らっか", - "られつ", - "りえき", - "りかい", - "りきさく", - "りきせつ", - "りくぐん", - "りくつ", - "りけん", - "りこう", - "りせい", - "りそう", - "りそく", - "りてん", - "りねん", - "りゆう", - "りゅうがく", - "りよう", - "りょうり", - "りょかん", - "りょくちゃ", - "りょこう", - "りりく", - "りれき", - "りろん", - "りんご", - "るいけい", - "るいさい", - "るいじ", - "るいせき", - "るすばん", - "るりがわら", - "れいかん", - "れいぎ", - "れいせい", - "れいぞうこ", - "れいとう", - "れいぼう", - "れきし", - "れきだい", - "れんあい", - "れんけい", - "れんこん", - "れんさい", - "れんしゅう", - "れんぞく", - "れんらく", - "ろうか", - "ろうご", - "ろうじん", - "ろうそく", - "ろくが", - "ろこつ", - "ろじうら", - "ろしゅつ", - "ろせん", - "ろてん", - "ろめん", - "ろれつ", - "ろんぎ", - "ろんぱ", - "ろんぶん", - "ろんり", - "わかす", - "わかめ", - "わかやま", - "わかれる", - "わしつ", - "わじまし", - "わすれもの", - "わらう", - "われる", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt deleted file mode 100644 index 7552ad41c..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeKorean { - val wordList: List = listOf( - "가격", - "가끔", - "가난", - "가능", - "가득", - "가르침", - "가뭄", - "가방", - "가상", - "가슴", - "가운데", - "가을", - "가이드", - "가입", - "가장", - "가정", - "가족", - "가죽", - "각오", - "각자", - "간격", - "간부", - "간섭", - "간장", - "간접", - "간판", - "갈등", - "갈비", - "갈색", - "갈증", - "감각", - "감기", - "감소", - "감수성", - "감자", - "감정", - "갑자기", - "강남", - "강당", - "강도", - "강력히", - "강변", - "강북", - "강사", - "강수량", - "강아지", - "강원도", - "강의", - "강제", - "강조", - "같이", - "개구리", - "개나리", - "개방", - "개별", - "개선", - "개성", - "개인", - "객관적", - "거실", - "거액", - "거울", - "거짓", - "거품", - "걱정", - "건강", - "건물", - "건설", - "건조", - "건축", - "걸음", - "검사", - "검토", - "게시판", - "게임", - "겨울", - "견해", - "결과", - "결국", - "결론", - "결석", - "결승", - "결심", - "결정", - "결혼", - "경계", - "경고", - "경기", - "경력", - "경복궁", - "경비", - "경상도", - "경영", - "경우", - "경쟁", - "경제", - "경주", - "경찰", - "경치", - "경향", - "경험", - "계곡", - "계단", - "계란", - "계산", - "계속", - "계약", - "계절", - "계층", - "계획", - "고객", - "고구려", - "고궁", - "고급", - "고등학생", - "고무신", - "고민", - "고양이", - "고장", - "고전", - "고집", - "고춧가루", - "고통", - "고향", - "곡식", - "골목", - "골짜기", - "골프", - "공간", - "공개", - "공격", - "공군", - "공급", - "공기", - "공동", - "공무원", - "공부", - "공사", - "공식", - "공업", - "공연", - "공원", - "공장", - "공짜", - "공책", - "공통", - "공포", - "공항", - "공휴일", - "과목", - "과일", - "과장", - "과정", - "과학", - "관객", - "관계", - "관광", - "관념", - "관람", - "관련", - "관리", - "관습", - "관심", - "관점", - "관찰", - "광경", - "광고", - "광장", - "광주", - "괴로움", - "굉장히", - "교과서", - "교문", - "교복", - "교실", - "교양", - "교육", - "교장", - "교직", - "교통", - "교환", - "교훈", - "구경", - "구름", - "구멍", - "구별", - "구분", - "구석", - "구성", - "구속", - "구역", - "구입", - "구청", - "구체적", - "국가", - "국기", - "국내", - "국립", - "국물", - "국민", - "국수", - "국어", - "국왕", - "국적", - "국제", - "국회", - "군대", - "군사", - "군인", - "궁극적", - "권리", - "권위", - "권투", - "귀국", - "귀신", - "규정", - "규칙", - "균형", - "그날", - "그냥", - "그늘", - "그러나", - "그룹", - "그릇", - "그림", - "그제서야", - "그토록", - "극복", - "극히", - "근거", - "근교", - "근래", - "근로", - "근무", - "근본", - "근원", - "근육", - "근처", - "글씨", - "글자", - "금강산", - "금고", - "금년", - "금메달", - "금액", - "금연", - "금요일", - "금지", - "긍정적", - "기간", - "기관", - "기념", - "기능", - "기독교", - "기둥", - "기록", - "기름", - "기법", - "기본", - "기분", - "기쁨", - "기숙사", - "기술", - "기억", - "기업", - "기온", - "기운", - "기원", - "기적", - "기준", - "기침", - "기혼", - "기획", - "긴급", - "긴장", - "길이", - "김밥", - "김치", - "김포공항", - "깍두기", - "깜빡", - "깨달음", - "깨소금", - "껍질", - "꼭대기", - "꽃잎", - "나들이", - "나란히", - "나머지", - "나물", - "나침반", - "나흘", - "낙엽", - "난방", - "날개", - "날씨", - "날짜", - "남녀", - "남대문", - "남매", - "남산", - "남자", - "남편", - "남학생", - "낭비", - "낱말", - "내년", - "내용", - "내일", - "냄비", - "냄새", - "냇물", - "냉동", - "냉면", - "냉방", - "냉장고", - "넥타이", - "넷째", - "노동", - "노란색", - "노력", - "노인", - "녹음", - "녹차", - "녹화", - "논리", - "논문", - "논쟁", - "놀이", - "농구", - "농담", - "농민", - "농부", - "농업", - "농장", - "농촌", - "높이", - "눈동자", - "눈물", - "눈썹", - "뉴욕", - "느낌", - "늑대", - "능동적", - "능력", - "다방", - "다양성", - "다음", - "다이어트", - "다행", - "단계", - "단골", - "단독", - "단맛", - "단순", - "단어", - "단위", - "단점", - "단체", - "단추", - "단편", - "단풍", - "달걀", - "달러", - "달력", - "달리", - "닭고기", - "담당", - "담배", - "담요", - "담임", - "답변", - "답장", - "당근", - "당분간", - "당연히", - "당장", - "대규모", - "대낮", - "대단히", - "대답", - "대도시", - "대략", - "대량", - "대륙", - "대문", - "대부분", - "대신", - "대응", - "대장", - "대전", - "대접", - "대중", - "대책", - "대출", - "대충", - "대통령", - "대학", - "대한민국", - "대합실", - "대형", - "덩어리", - "데이트", - "도대체", - "도덕", - "도둑", - "도망", - "도서관", - "도심", - "도움", - "도입", - "도자기", - "도저히", - "도전", - "도중", - "도착", - "독감", - "독립", - "독서", - "독일", - "독창적", - "동화책", - "뒷모습", - "뒷산", - "딸아이", - "마누라", - "마늘", - "마당", - "마라톤", - "마련", - "마무리", - "마사지", - "마약", - "마요네즈", - "마을", - "마음", - "마이크", - "마중", - "마지막", - "마찬가지", - "마찰", - "마흔", - "막걸리", - "막내", - "막상", - "만남", - "만두", - "만세", - "만약", - "만일", - "만점", - "만족", - "만화", - "많이", - "말기", - "말씀", - "말투", - "맘대로", - "망원경", - "매년", - "매달", - "매력", - "매번", - "매스컴", - "매일", - "매장", - "맥주", - "먹이", - "먼저", - "먼지", - "멀리", - "메일", - "며느리", - "며칠", - "면담", - "멸치", - "명단", - "명령", - "명예", - "명의", - "명절", - "명칭", - "명함", - "모금", - "모니터", - "모델", - "모든", - "모범", - "모습", - "모양", - "모임", - "모조리", - "모집", - "모퉁이", - "목걸이", - "목록", - "목사", - "목소리", - "목숨", - "목적", - "목표", - "몰래", - "몸매", - "몸무게", - "몸살", - "몸속", - "몸짓", - "몸통", - "몹시", - "무관심", - "무궁화", - "무더위", - "무덤", - "무릎", - "무슨", - "무엇", - "무역", - "무용", - "무조건", - "무지개", - "무척", - "문구", - "문득", - "문법", - "문서", - "문제", - "문학", - "문화", - "물가", - "물건", - "물결", - "물고기", - "물론", - "물리학", - "물음", - "물질", - "물체", - "미국", - "미디어", - "미사일", - "미술", - "미역", - "미용실", - "미움", - "미인", - "미팅", - "미혼", - "민간", - "민족", - "민주", - "믿음", - "밀가루", - "밀리미터", - "밑바닥", - "바가지", - "바구니", - "바나나", - "바늘", - "바닥", - "바닷가", - "바람", - "바이러스", - "바탕", - "박물관", - "박사", - "박수", - "반대", - "반드시", - "반말", - "반발", - "반성", - "반응", - "반장", - "반죽", - "반지", - "반찬", - "받침", - "발가락", - "발걸음", - "발견", - "발달", - "발레", - "발목", - "발바닥", - "발생", - "발음", - "발자국", - "발전", - "발톱", - "발표", - "밤하늘", - "밥그릇", - "밥맛", - "밥상", - "밥솥", - "방금", - "방면", - "방문", - "방바닥", - "방법", - "방송", - "방식", - "방안", - "방울", - "방지", - "방학", - "방해", - "방향", - "배경", - "배꼽", - "배달", - "배드민턴", - "백두산", - "백색", - "백성", - "백인", - "백제", - "백화점", - "버릇", - "버섯", - "버튼", - "번개", - "번역", - "번지", - "번호", - "벌금", - "벌레", - "벌써", - "범위", - "범인", - "범죄", - "법률", - "법원", - "법적", - "법칙", - "베이징", - "벨트", - "변경", - "변동", - "변명", - "변신", - "변호사", - "변화", - "별도", - "별명", - "별일", - "병실", - "병아리", - "병원", - "보관", - "보너스", - "보라색", - "보람", - "보름", - "보상", - "보안", - "보자기", - "보장", - "보전", - "보존", - "보통", - "보편적", - "보험", - "복도", - "복사", - "복숭아", - "복습", - "볶음", - "본격적", - "본래", - "본부", - "본사", - "본성", - "본인", - "본질", - "볼펜", - "봉사", - "봉지", - "봉투", - "부근", - "부끄러움", - "부담", - "부동산", - "부문", - "부분", - "부산", - "부상", - "부엌", - "부인", - "부작용", - "부장", - "부정", - "부족", - "부지런히", - "부친", - "부탁", - "부품", - "부회장", - "북부", - "북한", - "분노", - "분량", - "분리", - "분명", - "분석", - "분야", - "분위기", - "분필", - "분홍색", - "불고기", - "불과", - "불교", - "불꽃", - "불만", - "불법", - "불빛", - "불안", - "불이익", - "불행", - "브랜드", - "비극", - "비난", - "비닐", - "비둘기", - "비디오", - "비로소", - "비만", - "비명", - "비밀", - "비바람", - "비빔밥", - "비상", - "비용", - "비율", - "비중", - "비타민", - "비판", - "빌딩", - "빗물", - "빗방울", - "빗줄기", - "빛깔", - "빨간색", - "빨래", - "빨리", - "사건", - "사계절", - "사나이", - "사냥", - "사람", - "사랑", - "사립", - "사모님", - "사물", - "사방", - "사상", - "사생활", - "사설", - "사슴", - "사실", - "사업", - "사용", - "사월", - "사장", - "사전", - "사진", - "사촌", - "사춘기", - "사탕", - "사투리", - "사흘", - "산길", - "산부인과", - "산업", - "산책", - "살림", - "살인", - "살짝", - "삼계탕", - "삼국", - "삼십", - "삼월", - "삼촌", - "상관", - "상금", - "상대", - "상류", - "상반기", - "상상", - "상식", - "상업", - "상인", - "상자", - "상점", - "상처", - "상추", - "상태", - "상표", - "상품", - "상황", - "새벽", - "색깔", - "색연필", - "생각", - "생명", - "생물", - "생방송", - "생산", - "생선", - "생신", - "생일", - "생활", - "서랍", - "서른", - "서명", - "서민", - "서비스", - "서양", - "서울", - "서적", - "서점", - "서쪽", - "서클", - "석사", - "석유", - "선거", - "선물", - "선배", - "선생", - "선수", - "선원", - "선장", - "선전", - "선택", - "선풍기", - "설거지", - "설날", - "설렁탕", - "설명", - "설문", - "설사", - "설악산", - "설치", - "설탕", - "섭씨", - "성공", - "성당", - "성명", - "성별", - "성인", - "성장", - "성적", - "성질", - "성함", - "세금", - "세미나", - "세상", - "세월", - "세종대왕", - "세탁", - "센터", - "센티미터", - "셋째", - "소규모", - "소극적", - "소금", - "소나기", - "소년", - "소득", - "소망", - "소문", - "소설", - "소속", - "소아과", - "소용", - "소원", - "소음", - "소중히", - "소지품", - "소질", - "소풍", - "소형", - "속담", - "속도", - "속옷", - "손가락", - "손길", - "손녀", - "손님", - "손등", - "손목", - "손뼉", - "손실", - "손질", - "손톱", - "손해", - "솔직히", - "솜씨", - "송아지", - "송이", - "송편", - "쇠고기", - "쇼핑", - "수건", - "수년", - "수단", - "수돗물", - "수동적", - "수면", - "수명", - "수박", - "수상", - "수석", - "수술", - "수시로", - "수업", - "수염", - "수영", - "수입", - "수준", - "수집", - "수출", - "수컷", - "수필", - "수학", - "수험생", - "수화기", - "숙녀", - "숙소", - "숙제", - "순간", - "순서", - "순수", - "순식간", - "순위", - "숟가락", - "술병", - "술집", - "숫자", - "스님", - "스물", - "스스로", - "스승", - "스웨터", - "스위치", - "스케이트", - "스튜디오", - "스트레스", - "스포츠", - "슬쩍", - "슬픔", - "습관", - "습기", - "승객", - "승리", - "승부", - "승용차", - "승진", - "시각", - "시간", - "시골", - "시금치", - "시나리오", - "시댁", - "시리즈", - "시멘트", - "시민", - "시부모", - "시선", - "시설", - "시스템", - "시아버지", - "시어머니", - "시월", - "시인", - "시일", - "시작", - "시장", - "시절", - "시점", - "시중", - "시즌", - "시집", - "시청", - "시합", - "시험", - "식구", - "식기", - "식당", - "식량", - "식료품", - "식물", - "식빵", - "식사", - "식생활", - "식초", - "식탁", - "식품", - "신고", - "신규", - "신념", - "신문", - "신발", - "신비", - "신사", - "신세", - "신용", - "신제품", - "신청", - "신체", - "신화", - "실감", - "실내", - "실력", - "실례", - "실망", - "실수", - "실습", - "실시", - "실장", - "실정", - "실질적", - "실천", - "실체", - "실컷", - "실태", - "실패", - "실험", - "실현", - "심리", - "심부름", - "심사", - "심장", - "심정", - "심판", - "쌍둥이", - "씨름", - "씨앗", - "아가씨", - "아나운서", - "아드님", - "아들", - "아쉬움", - "아스팔트", - "아시아", - "아울러", - "아저씨", - "아줌마", - "아직", - "아침", - "아파트", - "아프리카", - "아픔", - "아홉", - "아흔", - "악기", - "악몽", - "악수", - "안개", - "안경", - "안과", - "안내", - "안녕", - "안동", - "안방", - "안부", - "안주", - "알루미늄", - "알코올", - "암시", - "암컷", - "압력", - "앞날", - "앞문", - "애인", - "애정", - "액수", - "앨범", - "야간", - "야단", - "야옹", - "약간", - "약국", - "약속", - "약수", - "약점", - "약품", - "약혼녀", - "양념", - "양력", - "양말", - "양배추", - "양주", - "양파", - "어둠", - "어려움", - "어른", - "어젯밤", - "어쨌든", - "어쩌다가", - "어쩐지", - "언니", - "언덕", - "언론", - "언어", - "얼굴", - "얼른", - "얼음", - "얼핏", - "엄마", - "업무", - "업종", - "업체", - "엉덩이", - "엉망", - "엉터리", - "엊그제", - "에너지", - "에어컨", - "엔진", - "여건", - "여고생", - "여관", - "여군", - "여권", - "여대생", - "여덟", - "여동생", - "여든", - "여론", - "여름", - "여섯", - "여성", - "여왕", - "여인", - "여전히", - "여직원", - "여학생", - "여행", - "역사", - "역시", - "역할", - "연결", - "연구", - "연극", - "연기", - "연락", - "연설", - "연세", - "연속", - "연습", - "연애", - "연예인", - "연인", - "연장", - "연주", - "연출", - "연필", - "연합", - "연휴", - "열기", - "열매", - "열쇠", - "열심히", - "열정", - "열차", - "열흘", - "염려", - "엽서", - "영국", - "영남", - "영상", - "영양", - "영역", - "영웅", - "영원히", - "영하", - "영향", - "영혼", - "영화", - "옆구리", - "옆방", - "옆집", - "예감", - "예금", - "예방", - "예산", - "예상", - "예선", - "예술", - "예습", - "예식장", - "예약", - "예전", - "예절", - "예정", - "예컨대", - "옛날", - "오늘", - "오락", - "오랫동안", - "오렌지", - "오로지", - "오른발", - "오븐", - "오십", - "오염", - "오월", - "오전", - "오직", - "오징어", - "오페라", - "오피스텔", - "오히려", - "옥상", - "옥수수", - "온갖", - "온라인", - "온몸", - "온종일", - "온통", - "올가을", - "올림픽", - "올해", - "옷차림", - "와이셔츠", - "와인", - "완성", - "완전", - "왕비", - "왕자", - "왜냐하면", - "왠지", - "외갓집", - "외국", - "외로움", - "외삼촌", - "외출", - "외침", - "외할머니", - "왼발", - "왼손", - "왼쪽", - "요금", - "요일", - "요즘", - "요청", - "용기", - "용서", - "용어", - "우산", - "우선", - "우승", - "우연히", - "우정", - "우체국", - "우편", - "운동", - "운명", - "운반", - "운전", - "운행", - "울산", - "울음", - "움직임", - "웃어른", - "웃음", - "워낙", - "원고", - "원래", - "원서", - "원숭이", - "원인", - "원장", - "원피스", - "월급", - "월드컵", - "월세", - "월요일", - "웨이터", - "위반", - "위법", - "위성", - "위원", - "위험", - "위협", - "윗사람", - "유난히", - "유럽", - "유명", - "유물", - "유산", - "유적", - "유치원", - "유학", - "유행", - "유형", - "육군", - "육상", - "육십", - "육체", - "은행", - "음력", - "음료", - "음반", - "음성", - "음식", - "음악", - "음주", - "의견", - "의논", - "의문", - "의복", - "의식", - "의심", - "의외로", - "의욕", - "의원", - "의학", - "이것", - "이곳", - "이념", - "이놈", - "이달", - "이대로", - "이동", - "이렇게", - "이력서", - "이론적", - "이름", - "이민", - "이발소", - "이별", - "이불", - "이빨", - "이상", - "이성", - "이슬", - "이야기", - "이용", - "이웃", - "이월", - "이윽고", - "이익", - "이전", - "이중", - "이튿날", - "이틀", - "이혼", - "인간", - "인격", - "인공", - "인구", - "인근", - "인기", - "인도", - "인류", - "인물", - "인생", - "인쇄", - "인연", - "인원", - "인재", - "인종", - "인천", - "인체", - "인터넷", - "인하", - "인형", - "일곱", - "일기", - "일단", - "일대", - "일등", - "일반", - "일본", - "일부", - "일상", - "일생", - "일손", - "일요일", - "일월", - "일정", - "일종", - "일주일", - "일찍", - "일체", - "일치", - "일행", - "일회용", - "임금", - "임무", - "입대", - "입력", - "입맛", - "입사", - "입술", - "입시", - "입원", - "입장", - "입학", - "자가용", - "자격", - "자극", - "자동", - "자랑", - "자부심", - "자식", - "자신", - "자연", - "자원", - "자율", - "자전거", - "자정", - "자존심", - "자판", - "작가", - "작년", - "작성", - "작업", - "작용", - "작은딸", - "작품", - "잔디", - "잔뜩", - "잔치", - "잘못", - "잠깐", - "잠수함", - "잠시", - "잠옷", - "잠자리", - "잡지", - "장관", - "장군", - "장기간", - "장래", - "장례", - "장르", - "장마", - "장면", - "장모", - "장미", - "장비", - "장사", - "장소", - "장식", - "장애인", - "장인", - "장점", - "장차", - "장학금", - "재능", - "재빨리", - "재산", - "재생", - "재작년", - "재정", - "재채기", - "재판", - "재학", - "재활용", - "저것", - "저고리", - "저곳", - "저녁", - "저런", - "저렇게", - "저번", - "저울", - "저절로", - "저축", - "적극", - "적당히", - "적성", - "적용", - "적응", - "전개", - "전공", - "전기", - "전달", - "전라도", - "전망", - "전문", - "전반", - "전부", - "전세", - "전시", - "전용", - "전자", - "전쟁", - "전주", - "전철", - "전체", - "전통", - "전혀", - "전후", - "절대", - "절망", - "절반", - "절약", - "절차", - "점검", - "점수", - "점심", - "점원", - "점점", - "점차", - "접근", - "접시", - "접촉", - "젓가락", - "정거장", - "정도", - "정류장", - "정리", - "정말", - "정면", - "정문", - "정반대", - "정보", - "정부", - "정비", - "정상", - "정성", - "정오", - "정원", - "정장", - "정지", - "정치", - "정확히", - "제공", - "제과점", - "제대로", - "제목", - "제발", - "제법", - "제삿날", - "제안", - "제일", - "제작", - "제주도", - "제출", - "제품", - "제한", - "조각", - "조건", - "조금", - "조깅", - "조명", - "조미료", - "조상", - "조선", - "조용히", - "조절", - "조정", - "조직", - "존댓말", - "존재", - "졸업", - "졸음", - "종교", - "종로", - "종류", - "종소리", - "종업원", - "종종", - "종합", - "좌석", - "죄인", - "주관적", - "주름", - "주말", - "주머니", - "주먹", - "주문", - "주민", - "주방", - "주변", - "주식", - "주인", - "주일", - "주장", - "주전자", - "주택", - "준비", - "줄거리", - "줄기", - "줄무늬", - "중간", - "중계방송", - "중국", - "중년", - "중단", - "중독", - "중반", - "중부", - "중세", - "중소기업", - "중순", - "중앙", - "중요", - "중학교", - "즉석", - "즉시", - "즐거움", - "증가", - "증거", - "증권", - "증상", - "증세", - "지각", - "지갑", - "지경", - "지극히", - "지금", - "지급", - "지능", - "지름길", - "지리산", - "지방", - "지붕", - "지식", - "지역", - "지우개", - "지원", - "지적", - "지점", - "지진", - "지출", - "직선", - "직업", - "직원", - "직장", - "진급", - "진동", - "진로", - "진료", - "진리", - "진짜", - "진찰", - "진출", - "진통", - "진행", - "질문", - "질병", - "질서", - "짐작", - "집단", - "집안", - "집중", - "짜증", - "찌꺼기", - "차남", - "차라리", - "차량", - "차림", - "차별", - "차선", - "차츰", - "착각", - "찬물", - "찬성", - "참가", - "참기름", - "참새", - "참석", - "참여", - "참외", - "참조", - "찻잔", - "창가", - "창고", - "창구", - "창문", - "창밖", - "창작", - "창조", - "채널", - "채점", - "책가방", - "책방", - "책상", - "책임", - "챔피언", - "처벌", - "처음", - "천국", - "천둥", - "천장", - "천재", - "천천히", - "철도", - "철저히", - "철학", - "첫날", - "첫째", - "청년", - "청바지", - "청소", - "청춘", - "체계", - "체력", - "체온", - "체육", - "체중", - "체험", - "초등학생", - "초반", - "초밥", - "초상화", - "초순", - "초여름", - "초원", - "초저녁", - "초점", - "초청", - "초콜릿", - "촛불", - "총각", - "총리", - "총장", - "촬영", - "최근", - "최상", - "최선", - "최신", - "최악", - "최종", - "추석", - "추억", - "추진", - "추천", - "추측", - "축구", - "축소", - "축제", - "축하", - "출근", - "출발", - "출산", - "출신", - "출연", - "출입", - "출장", - "출판", - "충격", - "충고", - "충돌", - "충분히", - "충청도", - "취업", - "취직", - "취향", - "치약", - "친구", - "친척", - "칠십", - "칠월", - "칠판", - "침대", - "침묵", - "침실", - "칫솔", - "칭찬", - "카메라", - "카운터", - "칼국수", - "캐릭터", - "캠퍼스", - "캠페인", - "커튼", - "컨디션", - "컬러", - "컴퓨터", - "코끼리", - "코미디", - "콘서트", - "콜라", - "콤플렉스", - "콩나물", - "쾌감", - "쿠데타", - "크림", - "큰길", - "큰딸", - "큰소리", - "큰아들", - "큰어머니", - "큰일", - "큰절", - "클래식", - "클럽", - "킬로", - "타입", - "타자기", - "탁구", - "탁자", - "탄생", - "태권도", - "태양", - "태풍", - "택시", - "탤런트", - "터널", - "터미널", - "테니스", - "테스트", - "테이블", - "텔레비전", - "토론", - "토마토", - "토요일", - "통계", - "통과", - "통로", - "통신", - "통역", - "통일", - "통장", - "통제", - "통증", - "통합", - "통화", - "퇴근", - "퇴원", - "퇴직금", - "튀김", - "트럭", - "특급", - "특별", - "특성", - "특수", - "특징", - "특히", - "튼튼히", - "티셔츠", - "파란색", - "파일", - "파출소", - "판결", - "판단", - "판매", - "판사", - "팔십", - "팔월", - "팝송", - "패션", - "팩스", - "팩시밀리", - "팬티", - "퍼센트", - "페인트", - "편견", - "편의", - "편지", - "편히", - "평가", - "평균", - "평생", - "평소", - "평양", - "평일", - "평화", - "포스터", - "포인트", - "포장", - "포함", - "표면", - "표정", - "표준", - "표현", - "품목", - "품질", - "풍경", - "풍속", - "풍습", - "프랑스", - "프린터", - "플라스틱", - "피곤", - "피망", - "피아노", - "필름", - "필수", - "필요", - "필자", - "필통", - "핑계", - "하느님", - "하늘", - "하드웨어", - "하룻밤", - "하반기", - "하숙집", - "하순", - "하여튼", - "하지만", - "하천", - "하품", - "하필", - "학과", - "학교", - "학급", - "학기", - "학년", - "학력", - "학번", - "학부모", - "학비", - "학생", - "학술", - "학습", - "학용품", - "학원", - "학위", - "학자", - "학점", - "한계", - "한글", - "한꺼번에", - "한낮", - "한눈", - "한동안", - "한때", - "한라산", - "한마디", - "한문", - "한번", - "한복", - "한식", - "한여름", - "한쪽", - "할머니", - "할아버지", - "할인", - "함께", - "함부로", - "합격", - "합리적", - "항공", - "항구", - "항상", - "항의", - "해결", - "해군", - "해답", - "해당", - "해물", - "해석", - "해설", - "해수욕장", - "해안", - "핵심", - "핸드백", - "햄버거", - "햇볕", - "햇살", - "행동", - "행복", - "행사", - "행운", - "행위", - "향기", - "향상", - "향수", - "허락", - "허용", - "헬기", - "현관", - "현금", - "현대", - "현상", - "현실", - "현장", - "현재", - "현지", - "혈액", - "협력", - "형부", - "형사", - "형수", - "형식", - "형제", - "형태", - "형편", - "혜택", - "호기심", - "호남", - "호랑이", - "호박", - "호텔", - "호흡", - "혹시", - "홀로", - "홈페이지", - "홍보", - "홍수", - "홍차", - "화면", - "화분", - "화살", - "화요일", - "화장", - "화학", - "확보", - "확인", - "확장", - "확정", - "환갑", - "환경", - "환영", - "환율", - "환자", - "활기", - "활동", - "활발히", - "활용", - "활짝", - "회견", - "회관", - "회복", - "회색", - "회원", - "회장", - "회전", - "횟수", - "횡단보도", - "효율적", - "후반", - "후춧가루", - "훈련", - "훨씬", - "휴식", - "휴일", - "흉내", - "흐름", - "흑백", - "흑인", - "흔적", - "흔히", - "흥미", - "흥분", - "희곡", - "희망", - "희생", - "흰색", - "힘껏", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt deleted file mode 100644 index c90e4ec7b..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeSimplifiedChinese { - val wordList: List = listOf( - "的", - "一", - "是", - "在", - "不", - "了", - "有", - "和", - "人", - "这", - "中", - "大", - "为", - "上", - "个", - "国", - "我", - "以", - "要", - "他", - "时", - "来", - "用", - "们", - "生", - "到", - "作", - "地", - "于", - "出", - "就", - "分", - "对", - "成", - "会", - "可", - "主", - "发", - "年", - "动", - "同", - "工", - "也", - "能", - "下", - "过", - "子", - "说", - "产", - "种", - "面", - "而", - "方", - "后", - "多", - "定", - "行", - "学", - "法", - "所", - "民", - "得", - "经", - "十", - "三", - "之", - "进", - "着", - "等", - "部", - "度", - "家", - "电", - "力", - "里", - "如", - "水", - "化", - "高", - "自", - "二", - "理", - "起", - "小", - "物", - "现", - "实", - "加", - "量", - "都", - "两", - "体", - "制", - "机", - "当", - "使", - "点", - "从", - "业", - "本", - "去", - "把", - "性", - "好", - "应", - "开", - "它", - "合", - "还", - "因", - "由", - "其", - "些", - "然", - "前", - "外", - "天", - "政", - "四", - "日", - "那", - "社", - "义", - "事", - "平", - "形", - "相", - "全", - "表", - "间", - "样", - "与", - "关", - "各", - "重", - "新", - "线", - "内", - "数", - "正", - "心", - "反", - "你", - "明", - "看", - "原", - "又", - "么", - "利", - "比", - "或", - "但", - "质", - "气", - "第", - "向", - "道", - "命", - "此", - "变", - "条", - "只", - "没", - "结", - "解", - "问", - "意", - "建", - "月", - "公", - "无", - "系", - "军", - "很", - "情", - "者", - "最", - "立", - "代", - "想", - "已", - "通", - "并", - "提", - "直", - "题", - "党", - "程", - "展", - "五", - "果", - "料", - "象", - "员", - "革", - "位", - "入", - "常", - "文", - "总", - "次", - "品", - "式", - "活", - "设", - "及", - "管", - "特", - "件", - "长", - "求", - "老", - "头", - "基", - "资", - "边", - "流", - "路", - "级", - "少", - "图", - "山", - "统", - "接", - "知", - "较", - "将", - "组", - "见", - "计", - "别", - "她", - "手", - "角", - "期", - "根", - "论", - "运", - "农", - "指", - "几", - "九", - "区", - "强", - "放", - "决", - "西", - "被", - "干", - "做", - "必", - "战", - "先", - "回", - "则", - "任", - "取", - "据", - "处", - "队", - "南", - "给", - "色", - "光", - "门", - "即", - "保", - "治", - "北", - "造", - "百", - "规", - "热", - "领", - "七", - "海", - "口", - "东", - "导", - "器", - "压", - "志", - "世", - "金", - "增", - "争", - "济", - "阶", - "油", - "思", - "术", - "极", - "交", - "受", - "联", - "什", - "认", - "六", - "共", - "权", - "收", - "证", - "改", - "清", - "美", - "再", - "采", - "转", - "更", - "单", - "风", - "切", - "打", - "白", - "教", - "速", - "花", - "带", - "安", - "场", - "身", - "车", - "例", - "真", - "务", - "具", - "万", - "每", - "目", - "至", - "达", - "走", - "积", - "示", - "议", - "声", - "报", - "斗", - "完", - "类", - "八", - "离", - "华", - "名", - "确", - "才", - "科", - "张", - "信", - "马", - "节", - "话", - "米", - "整", - "空", - "元", - "况", - "今", - "集", - "温", - "传", - "土", - "许", - "步", - "群", - "广", - "石", - "记", - "需", - "段", - "研", - "界", - "拉", - "林", - "律", - "叫", - "且", - "究", - "观", - "越", - "织", - "装", - "影", - "算", - "低", - "持", - "音", - "众", - "书", - "布", - "复", - "容", - "儿", - "须", - "际", - "商", - "非", - "验", - "连", - "断", - "深", - "难", - "近", - "矿", - "千", - "周", - "委", - "素", - "技", - "备", - "半", - "办", - "青", - "省", - "列", - "习", - "响", - "约", - "支", - "般", - "史", - "感", - "劳", - "便", - "团", - "往", - "酸", - "历", - "市", - "克", - "何", - "除", - "消", - "构", - "府", - "称", - "太", - "准", - "精", - "值", - "号", - "率", - "族", - "维", - "划", - "选", - "标", - "写", - "存", - "候", - "毛", - "亲", - "快", - "效", - "斯", - "院", - "查", - "江", - "型", - "眼", - "王", - "按", - "格", - "养", - "易", - "置", - "派", - "层", - "片", - "始", - "却", - "专", - "状", - "育", - "厂", - "京", - "识", - "适", - "属", - "圆", - "包", - "火", - "住", - "调", - "满", - "县", - "局", - "照", - "参", - "红", - "细", - "引", - "听", - "该", - "铁", - "价", - "严", - "首", - "底", - "液", - "官", - "德", - "随", - "病", - "苏", - "失", - "尔", - "死", - "讲", - "配", - "女", - "黄", - "推", - "显", - "谈", - "罪", - "神", - "艺", - "呢", - "席", - "含", - "企", - "望", - "密", - "批", - "营", - "项", - "防", - "举", - "球", - "英", - "氧", - "势", - "告", - "李", - "台", - "落", - "木", - "帮", - "轮", - "破", - "亚", - "师", - "围", - "注", - "远", - "字", - "材", - "排", - "供", - "河", - "态", - "封", - "另", - "施", - "减", - "树", - "溶", - "怎", - "止", - "案", - "言", - "士", - "均", - "武", - "固", - "叶", - "鱼", - "波", - "视", - "仅", - "费", - "紧", - "爱", - "左", - "章", - "早", - "朝", - "害", - "续", - "轻", - "服", - "试", - "食", - "充", - "兵", - "源", - "判", - "护", - "司", - "足", - "某", - "练", - "差", - "致", - "板", - "田", - "降", - "黑", - "犯", - "负", - "击", - "范", - "继", - "兴", - "似", - "余", - "坚", - "曲", - "输", - "修", - "故", - "城", - "夫", - "够", - "送", - "笔", - "船", - "占", - "右", - "财", - "吃", - "富", - "春", - "职", - "觉", - "汉", - "画", - "功", - "巴", - "跟", - "虽", - "杂", - "飞", - "检", - "吸", - "助", - "升", - "阳", - "互", - "初", - "创", - "抗", - "考", - "投", - "坏", - "策", - "古", - "径", - "换", - "未", - "跑", - "留", - "钢", - "曾", - "端", - "责", - "站", - "简", - "述", - "钱", - "副", - "尽", - "帝", - "射", - "草", - "冲", - "承", - "独", - "令", - "限", - "阿", - "宣", - "环", - "双", - "请", - "超", - "微", - "让", - "控", - "州", - "良", - "轴", - "找", - "否", - "纪", - "益", - "依", - "优", - "顶", - "础", - "载", - "倒", - "房", - "突", - "坐", - "粉", - "敌", - "略", - "客", - "袁", - "冷", - "胜", - "绝", - "析", - "块", - "剂", - "测", - "丝", - "协", - "诉", - "念", - "陈", - "仍", - "罗", - "盐", - "友", - "洋", - "错", - "苦", - "夜", - "刑", - "移", - "频", - "逐", - "靠", - "混", - "母", - "短", - "皮", - "终", - "聚", - "汽", - "村", - "云", - "哪", - "既", - "距", - "卫", - "停", - "烈", - "央", - "察", - "烧", - "迅", - "境", - "若", - "印", - "洲", - "刻", - "括", - "激", - "孔", - "搞", - "甚", - "室", - "待", - "核", - "校", - "散", - "侵", - "吧", - "甲", - "游", - "久", - "菜", - "味", - "旧", - "模", - "湖", - "货", - "损", - "预", - "阻", - "毫", - "普", - "稳", - "乙", - "妈", - "植", - "息", - "扩", - "银", - "语", - "挥", - "酒", - "守", - "拿", - "序", - "纸", - "医", - "缺", - "雨", - "吗", - "针", - "刘", - "啊", - "急", - "唱", - "误", - "训", - "愿", - "审", - "附", - "获", - "茶", - "鲜", - "粮", - "斤", - "孩", - "脱", - "硫", - "肥", - "善", - "龙", - "演", - "父", - "渐", - "血", - "欢", - "械", - "掌", - "歌", - "沙", - "刚", - "攻", - "谓", - "盾", - "讨", - "晚", - "粒", - "乱", - "燃", - "矛", - "乎", - "杀", - "药", - "宁", - "鲁", - "贵", - "钟", - "煤", - "读", - "班", - "伯", - "香", - "介", - "迫", - "句", - "丰", - "培", - "握", - "兰", - "担", - "弦", - "蛋", - "沉", - "假", - "穿", - "执", - "答", - "乐", - "谁", - "顺", - "烟", - "缩", - "征", - "脸", - "喜", - "松", - "脚", - "困", - "异", - "免", - "背", - "星", - "福", - "买", - "染", - "井", - "概", - "慢", - "怕", - "磁", - "倍", - "祖", - "皇", - "促", - "静", - "补", - "评", - "翻", - "肉", - "践", - "尼", - "衣", - "宽", - "扬", - "棉", - "希", - "伤", - "操", - "垂", - "秋", - "宜", - "氢", - "套", - "督", - "振", - "架", - "亮", - "末", - "宪", - "庆", - "编", - "牛", - "触", - "映", - "雷", - "销", - "诗", - "座", - "居", - "抓", - "裂", - "胞", - "呼", - "娘", - "景", - "威", - "绿", - "晶", - "厚", - "盟", - "衡", - "鸡", - "孙", - "延", - "危", - "胶", - "屋", - "乡", - "临", - "陆", - "顾", - "掉", - "呀", - "灯", - "岁", - "措", - "束", - "耐", - "剧", - "玉", - "赵", - "跳", - "哥", - "季", - "课", - "凯", - "胡", - "额", - "款", - "绍", - "卷", - "齐", - "伟", - "蒸", - "殖", - "永", - "宗", - "苗", - "川", - "炉", - "岩", - "弱", - "零", - "杨", - "奏", - "沿", - "露", - "杆", - "探", - "滑", - "镇", - "饭", - "浓", - "航", - "怀", - "赶", - "库", - "夺", - "伊", - "灵", - "税", - "途", - "灭", - "赛", - "归", - "召", - "鼓", - "播", - "盘", - "裁", - "险", - "康", - "唯", - "录", - "菌", - "纯", - "借", - "糖", - "盖", - "横", - "符", - "私", - "努", - "堂", - "域", - "枪", - "润", - "幅", - "哈", - "竟", - "熟", - "虫", - "泽", - "脑", - "壤", - "碳", - "欧", - "遍", - "侧", - "寨", - "敢", - "彻", - "虑", - "斜", - "薄", - "庭", - "纳", - "弹", - "饲", - "伸", - "折", - "麦", - "湿", - "暗", - "荷", - "瓦", - "塞", - "床", - "筑", - "恶", - "户", - "访", - "塔", - "奇", - "透", - "梁", - "刀", - "旋", - "迹", - "卡", - "氯", - "遇", - "份", - "毒", - "泥", - "退", - "洗", - "摆", - "灰", - "彩", - "卖", - "耗", - "夏", - "择", - "忙", - "铜", - "献", - "硬", - "予", - "繁", - "圈", - "雪", - "函", - "亦", - "抽", - "篇", - "阵", - "阴", - "丁", - "尺", - "追", - "堆", - "雄", - "迎", - "泛", - "爸", - "楼", - "避", - "谋", - "吨", - "野", - "猪", - "旗", - "累", - "偏", - "典", - "馆", - "索", - "秦", - "脂", - "潮", - "爷", - "豆", - "忽", - "托", - "惊", - "塑", - "遗", - "愈", - "朱", - "替", - "纤", - "粗", - "倾", - "尚", - "痛", - "楚", - "谢", - "奋", - "购", - "磨", - "君", - "池", - "旁", - "碎", - "骨", - "监", - "捕", - "弟", - "暴", - "割", - "贯", - "殊", - "释", - "词", - "亡", - "壁", - "顿", - "宝", - "午", - "尘", - "闻", - "揭", - "炮", - "残", - "冬", - "桥", - "妇", - "警", - "综", - "招", - "吴", - "付", - "浮", - "遭", - "徐", - "您", - "摇", - "谷", - "赞", - "箱", - "隔", - "订", - "男", - "吹", - "园", - "纷", - "唐", - "败", - "宋", - "玻", - "巨", - "耕", - "坦", - "荣", - "闭", - "湾", - "键", - "凡", - "驻", - "锅", - "救", - "恩", - "剥", - "凝", - "碱", - "齿", - "截", - "炼", - "麻", - "纺", - "禁", - "废", - "盛", - "版", - "缓", - "净", - "睛", - "昌", - "婚", - "涉", - "筒", - "嘴", - "插", - "岸", - "朗", - "庄", - "街", - "藏", - "姑", - "贸", - "腐", - "奴", - "啦", - "惯", - "乘", - "伙", - "恢", - "匀", - "纱", - "扎", - "辩", - "耳", - "彪", - "臣", - "亿", - "璃", - "抵", - "脉", - "秀", - "萨", - "俄", - "网", - "舞", - "店", - "喷", - "纵", - "寸", - "汗", - "挂", - "洪", - "贺", - "闪", - "柬", - "爆", - "烯", - "津", - "稻", - "墙", - "软", - "勇", - "像", - "滚", - "厘", - "蒙", - "芳", - "肯", - "坡", - "柱", - "荡", - "腿", - "仪", - "旅", - "尾", - "轧", - "冰", - "贡", - "登", - "黎", - "削", - "钻", - "勒", - "逃", - "障", - "氨", - "郭", - "峰", - "币", - "港", - "伏", - "轨", - "亩", - "毕", - "擦", - "莫", - "刺", - "浪", - "秘", - "援", - "株", - "健", - "售", - "股", - "岛", - "甘", - "泡", - "睡", - "童", - "铸", - "汤", - "阀", - "休", - "汇", - "舍", - "牧", - "绕", - "炸", - "哲", - "磷", - "绩", - "朋", - "淡", - "尖", - "启", - "陷", - "柴", - "呈", - "徒", - "颜", - "泪", - "稍", - "忘", - "泵", - "蓝", - "拖", - "洞", - "授", - "镜", - "辛", - "壮", - "锋", - "贫", - "虚", - "弯", - "摩", - "泰", - "幼", - "廷", - "尊", - "窗", - "纲", - "弄", - "隶", - "疑", - "氏", - "宫", - "姐", - "震", - "瑞", - "怪", - "尤", - "琴", - "循", - "描", - "膜", - "违", - "夹", - "腰", - "缘", - "珠", - "穷", - "森", - "枝", - "竹", - "沟", - "催", - "绳", - "忆", - "邦", - "剩", - "幸", - "浆", - "栏", - "拥", - "牙", - "贮", - "礼", - "滤", - "钠", - "纹", - "罢", - "拍", - "咱", - "喊", - "袖", - "埃", - "勤", - "罚", - "焦", - "潜", - "伍", - "墨", - "欲", - "缝", - "姓", - "刊", - "饱", - "仿", - "奖", - "铝", - "鬼", - "丽", - "跨", - "默", - "挖", - "链", - "扫", - "喝", - "袋", - "炭", - "污", - "幕", - "诸", - "弧", - "励", - "梅", - "奶", - "洁", - "灾", - "舟", - "鉴", - "苯", - "讼", - "抱", - "毁", - "懂", - "寒", - "智", - "埔", - "寄", - "届", - "跃", - "渡", - "挑", - "丹", - "艰", - "贝", - "碰", - "拔", - "爹", - "戴", - "码", - "梦", - "芽", - "熔", - "赤", - "渔", - "哭", - "敬", - "颗", - "奔", - "铅", - "仲", - "虎", - "稀", - "妹", - "乏", - "珍", - "申", - "桌", - "遵", - "允", - "隆", - "螺", - "仓", - "魏", - "锐", - "晓", - "氮", - "兼", - "隐", - "碍", - "赫", - "拨", - "忠", - "肃", - "缸", - "牵", - "抢", - "博", - "巧", - "壳", - "兄", - "杜", - "讯", - "诚", - "碧", - "祥", - "柯", - "页", - "巡", - "矩", - "悲", - "灌", - "龄", - "伦", - "票", - "寻", - "桂", - "铺", - "圣", - "恐", - "恰", - "郑", - "趣", - "抬", - "荒", - "腾", - "贴", - "柔", - "滴", - "猛", - "阔", - "辆", - "妻", - "填", - "撤", - "储", - "签", - "闹", - "扰", - "紫", - "砂", - "递", - "戏", - "吊", - "陶", - "伐", - "喂", - "疗", - "瓶", - "婆", - "抚", - "臂", - "摸", - "忍", - "虾", - "蜡", - "邻", - "胸", - "巩", - "挤", - "偶", - "弃", - "槽", - "劲", - "乳", - "邓", - "吉", - "仁", - "烂", - "砖", - "租", - "乌", - "舰", - "伴", - "瓜", - "浅", - "丙", - "暂", - "燥", - "橡", - "柳", - "迷", - "暖", - "牌", - "秧", - "胆", - "详", - "簧", - "踏", - "瓷", - "谱", - "呆", - "宾", - "糊", - "洛", - "辉", - "愤", - "竞", - "隙", - "怒", - "粘", - "乃", - "绪", - "肩", - "籍", - "敏", - "涂", - "熙", - "皆", - "侦", - "悬", - "掘", - "享", - "纠", - "醒", - "狂", - "锁", - "淀", - "恨", - "牲", - "霸", - "爬", - "赏", - "逆", - "玩", - "陵", - "祝", - "秒", - "浙", - "貌", - "役", - "彼", - "悉", - "鸭", - "趋", - "凤", - "晨", - "畜", - "辈", - "秩", - "卵", - "署", - "梯", - "炎", - "滩", - "棋", - "驱", - "筛", - "峡", - "冒", - "啥", - "寿", - "译", - "浸", - "泉", - "帽", - "迟", - "硅", - "疆", - "贷", - "漏", - "稿", - "冠", - "嫩", - "胁", - "芯", - "牢", - "叛", - "蚀", - "奥", - "鸣", - "岭", - "羊", - "凭", - "串", - "塘", - "绘", - "酵", - "融", - "盆", - "锡", - "庙", - "筹", - "冻", - "辅", - "摄", - "袭", - "筋", - "拒", - "僚", - "旱", - "钾", - "鸟", - "漆", - "沈", - "眉", - "疏", - "添", - "棒", - "穗", - "硝", - "韩", - "逼", - "扭", - "侨", - "凉", - "挺", - "碗", - "栽", - "炒", - "杯", - "患", - "馏", - "劝", - "豪", - "辽", - "勃", - "鸿", - "旦", - "吏", - "拜", - "狗", - "埋", - "辊", - "掩", - "饮", - "搬", - "骂", - "辞", - "勾", - "扣", - "估", - "蒋", - "绒", - "雾", - "丈", - "朵", - "姆", - "拟", - "宇", - "辑", - "陕", - "雕", - "偿", - "蓄", - "崇", - "剪", - "倡", - "厅", - "咬", - "驶", - "薯", - "刷", - "斥", - "番", - "赋", - "奉", - "佛", - "浇", - "漫", - "曼", - "扇", - "钙", - "桃", - "扶", - "仔", - "返", - "俗", - "亏", - "腔", - "鞋", - "棱", - "覆", - "框", - "悄", - "叔", - "撞", - "骗", - "勘", - "旺", - "沸", - "孤", - "吐", - "孟", - "渠", - "屈", - "疾", - "妙", - "惜", - "仰", - "狠", - "胀", - "谐", - "抛", - "霉", - "桑", - "岗", - "嘛", - "衰", - "盗", - "渗", - "脏", - "赖", - "涌", - "甜", - "曹", - "阅", - "肌", - "哩", - "厉", - "烃", - "纬", - "毅", - "昨", - "伪", - "症", - "煮", - "叹", - "钉", - "搭", - "茎", - "笼", - "酷", - "偷", - "弓", - "锥", - "恒", - "杰", - "坑", - "鼻", - "翼", - "纶", - "叙", - "狱", - "逮", - "罐", - "络", - "棚", - "抑", - "膨", - "蔬", - "寺", - "骤", - "穆", - "冶", - "枯", - "册", - "尸", - "凸", - "绅", - "坯", - "牺", - "焰", - "轰", - "欣", - "晋", - "瘦", - "御", - "锭", - "锦", - "丧", - "旬", - "锻", - "垄", - "搜", - "扑", - "邀", - "亭", - "酯", - "迈", - "舒", - "脆", - "酶", - "闲", - "忧", - "酚", - "顽", - "羽", - "涨", - "卸", - "仗", - "陪", - "辟", - "惩", - "杭", - "姚", - "肚", - "捉", - "飘", - "漂", - "昆", - "欺", - "吾", - "郎", - "烷", - "汁", - "呵", - "饰", - "萧", - "雅", - "邮", - "迁", - "燕", - "撒", - "姻", - "赴", - "宴", - "烦", - "债", - "帐", - "斑", - "铃", - "旨", - "醇", - "董", - "饼", - "雏", - "姿", - "拌", - "傅", - "腹", - "妥", - "揉", - "贤", - "拆", - "歪", - "葡", - "胺", - "丢", - "浩", - "徽", - "昂", - "垫", - "挡", - "览", - "贪", - "慰", - "缴", - "汪", - "慌", - "冯", - "诺", - "姜", - "谊", - "凶", - "劣", - "诬", - "耀", - "昏", - "躺", - "盈", - "骑", - "乔", - "溪", - "丛", - "卢", - "抹", - "闷", - "咨", - "刮", - "驾", - "缆", - "悟", - "摘", - "铒", - "掷", - "颇", - "幻", - "柄", - "惠", - "惨", - "佳", - "仇", - "腊", - "窝", - "涤", - "剑", - "瞧", - "堡", - "泼", - "葱", - "罩", - "霍", - "捞", - "胎", - "苍", - "滨", - "俩", - "捅", - "湘", - "砍", - "霞", - "邵", - "萄", - "疯", - "淮", - "遂", - "熊", - "粪", - "烘", - "宿", - "档", - "戈", - "驳", - "嫂", - "裕", - "徙", - "箭", - "捐", - "肠", - "撑", - "晒", - "辨", - "殿", - "莲", - "摊", - "搅", - "酱", - "屏", - "疫", - "哀", - "蔡", - "堵", - "沫", - "皱", - "畅", - "叠", - "阁", - "莱", - "敲", - "辖", - "钩", - "痕", - "坝", - "巷", - "饿", - "祸", - "丘", - "玄", - "溜", - "曰", - "逻", - "彭", - "尝", - "卿", - "妨", - "艇", - "吞", - "韦", - "怨", - "矮", - "歇", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt deleted file mode 100644 index 5c7f4caa8..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeSpanish { - val wordList: List = listOf( - "ábaco", - "abdomen", - "abeja", - "abierto", - "abogado", - "abono", - "aborto", - "abrazo", - "abrir", - "abuelo", - "abuso", - "acabar", - "academia", - "acceso", - "acción", - "aceite", - "acelga", - "acento", - "aceptar", - "ácido", - "aclarar", - "acné", - "acoger", - "acoso", - "activo", - "acto", - "actriz", - "actuar", - "acudir", - "acuerdo", - "acusar", - "adicto", - "admitir", - "adoptar", - "adorno", - "aduana", - "adulto", - "aéreo", - "afectar", - "afición", - "afinar", - "afirmar", - "ágil", - "agitar", - "agonía", - "agosto", - "agotar", - "agregar", - "agrio", - "agua", - "agudo", - "águila", - "aguja", - "ahogo", - "ahorro", - "aire", - "aislar", - "ajedrez", - "ajeno", - "ajuste", - "alacrán", - "alambre", - "alarma", - "alba", - "álbum", - "alcalde", - "aldea", - "alegre", - "alejar", - "alerta", - "aleta", - "alfiler", - "alga", - "algodón", - "aliado", - "aliento", - "alivio", - "alma", - "almeja", - "almíbar", - "altar", - "alteza", - "altivo", - "alto", - "altura", - "alumno", - "alzar", - "amable", - "amante", - "amapola", - "amargo", - "amasar", - "ámbar", - "ámbito", - "ameno", - "amigo", - "amistad", - "amor", - "amparo", - "amplio", - "ancho", - "anciano", - "ancla", - "andar", - "andén", - "anemia", - "ángulo", - "anillo", - "ánimo", - "anís", - "anotar", - "antena", - "antiguo", - "antojo", - "anual", - "anular", - "anuncio", - "añadir", - "añejo", - "año", - "apagar", - "aparato", - "apetito", - "apio", - "aplicar", - "apodo", - "aporte", - "apoyo", - "aprender", - "aprobar", - "apuesta", - "apuro", - "arado", - "araña", - "arar", - "árbitro", - "árbol", - "arbusto", - "archivo", - "arco", - "arder", - "ardilla", - "arduo", - "área", - "árido", - "aries", - "armonía", - "arnés", - "aroma", - "arpa", - "arpón", - "arreglo", - "arroz", - "arruga", - "arte", - "artista", - "asa", - "asado", - "asalto", - "ascenso", - "asegurar", - "aseo", - "asesor", - "asiento", - "asilo", - "asistir", - "asno", - "asombro", - "áspero", - "astilla", - "astro", - "astuto", - "asumir", - "asunto", - "atajo", - "ataque", - "atar", - "atento", - "ateo", - "ático", - "atleta", - "átomo", - "atraer", - "atroz", - "atún", - "audaz", - "audio", - "auge", - "aula", - "aumento", - "ausente", - "autor", - "aval", - "avance", - "avaro", - "ave", - "avellana", - "avena", - "avestruz", - "avión", - "aviso", - "ayer", - "ayuda", - "ayuno", - "azafrán", - "azar", - "azote", - "azúcar", - "azufre", - "azul", - "baba", - "babor", - "bache", - "bahía", - "baile", - "bajar", - "balanza", - "balcón", - "balde", - "bambú", - "banco", - "banda", - "baño", - "barba", - "barco", - "barniz", - "barro", - "báscula", - "bastón", - "basura", - "batalla", - "batería", - "batir", - "batuta", - "baúl", - "bazar", - "bebé", - "bebida", - "bello", - "besar", - "beso", - "bestia", - "bicho", - "bien", - "bingo", - "blanco", - "bloque", - "blusa", - "boa", - "bobina", - "bobo", - "boca", - "bocina", - "boda", - "bodega", - "boina", - "bola", - "bolero", - "bolsa", - "bomba", - "bondad", - "bonito", - "bono", - "bonsái", - "borde", - "borrar", - "bosque", - "bote", - "botín", - "bóveda", - "bozal", - "bravo", - "brazo", - "brecha", - "breve", - "brillo", - "brinco", - "brisa", - "broca", - "broma", - "bronce", - "brote", - "bruja", - "brusco", - "bruto", - "buceo", - "bucle", - "bueno", - "buey", - "bufanda", - "bufón", - "búho", - "buitre", - "bulto", - "burbuja", - "burla", - "burro", - "buscar", - "butaca", - "buzón", - "caballo", - "cabeza", - "cabina", - "cabra", - "cacao", - "cadáver", - "cadena", - "caer", - "café", - "caída", - "caimán", - "caja", - "cajón", - "cal", - "calamar", - "calcio", - "caldo", - "calidad", - "calle", - "calma", - "calor", - "calvo", - "cama", - "cambio", - "camello", - "camino", - "campo", - "cáncer", - "candil", - "canela", - "canguro", - "canica", - "canto", - "caña", - "cañón", - "caoba", - "caos", - "capaz", - "capitán", - "capote", - "captar", - "capucha", - "cara", - "carbón", - "cárcel", - "careta", - "carga", - "cariño", - "carne", - "carpeta", - "carro", - "carta", - "casa", - "casco", - "casero", - "caspa", - "castor", - "catorce", - "catre", - "caudal", - "causa", - "cazo", - "cebolla", - "ceder", - "cedro", - "celda", - "célebre", - "celoso", - "célula", - "cemento", - "ceniza", - "centro", - "cerca", - "cerdo", - "cereza", - "cero", - "cerrar", - "certeza", - "césped", - "cetro", - "chacal", - "chaleco", - "champú", - "chancla", - "chapa", - "charla", - "chico", - "chiste", - "chivo", - "choque", - "choza", - "chuleta", - "chupar", - "ciclón", - "ciego", - "cielo", - "cien", - "cierto", - "cifra", - "cigarro", - "cima", - "cinco", - "cine", - "cinta", - "ciprés", - "circo", - "ciruela", - "cisne", - "cita", - "ciudad", - "clamor", - "clan", - "claro", - "clase", - "clave", - "cliente", - "clima", - "clínica", - "cobre", - "cocción", - "cochino", - "cocina", - "coco", - "código", - "codo", - "cofre", - "coger", - "cohete", - "cojín", - "cojo", - "cola", - "colcha", - "colegio", - "colgar", - "colina", - "collar", - "colmo", - "columna", - "combate", - "comer", - "comida", - "cómodo", - "compra", - "conde", - "conejo", - "conga", - "conocer", - "consejo", - "contar", - "copa", - "copia", - "corazón", - "corbata", - "corcho", - "cordón", - "corona", - "correr", - "coser", - "cosmos", - "costa", - "cráneo", - "cráter", - "crear", - "crecer", - "creído", - "crema", - "cría", - "crimen", - "cripta", - "crisis", - "cromo", - "crónica", - "croqueta", - "crudo", - "cruz", - "cuadro", - "cuarto", - "cuatro", - "cubo", - "cubrir", - "cuchara", - "cuello", - "cuento", - "cuerda", - "cuesta", - "cueva", - "cuidar", - "culebra", - "culpa", - "culto", - "cumbre", - "cumplir", - "cuna", - "cuneta", - "cuota", - "cupón", - "cúpula", - "curar", - "curioso", - "curso", - "curva", - "cutis", - "dama", - "danza", - "dar", - "dardo", - "dátil", - "deber", - "débil", - "década", - "decir", - "dedo", - "defensa", - "definir", - "dejar", - "delfín", - "delgado", - "delito", - "demora", - "denso", - "dental", - "deporte", - "derecho", - "derrota", - "desayuno", - "deseo", - "desfile", - "desnudo", - "destino", - "desvío", - "detalle", - "detener", - "deuda", - "día", - "diablo", - "diadema", - "diamante", - "diana", - "diario", - "dibujo", - "dictar", - "diente", - "dieta", - "diez", - "difícil", - "digno", - "dilema", - "diluir", - "dinero", - "directo", - "dirigir", - "disco", - "diseño", - "disfraz", - "diva", - "divino", - "doble", - "doce", - "dolor", - "domingo", - "don", - "donar", - "dorado", - "dormir", - "dorso", - "dos", - "dosis", - "dragón", - "droga", - "ducha", - "duda", - "duelo", - "dueño", - "dulce", - "dúo", - "duque", - "durar", - "dureza", - "duro", - "ébano", - "ebrio", - "echar", - "eco", - "ecuador", - "edad", - "edición", - "edificio", - "editor", - "educar", - "efecto", - "eficaz", - "eje", - "ejemplo", - "elefante", - "elegir", - "elemento", - "elevar", - "elipse", - "élite", - "elixir", - "elogio", - "eludir", - "embudo", - "emitir", - "emoción", - "empate", - "empeño", - "empleo", - "empresa", - "enano", - "encargo", - "enchufe", - "encía", - "enemigo", - "enero", - "enfado", - "enfermo", - "engaño", - "enigma", - "enlace", - "enorme", - "enredo", - "ensayo", - "enseñar", - "entero", - "entrar", - "envase", - "envío", - "época", - "equipo", - "erizo", - "escala", - "escena", - "escolar", - "escribir", - "escudo", - "esencia", - "esfera", - "esfuerzo", - "espada", - "espejo", - "espía", - "esposa", - "espuma", - "esquí", - "estar", - "este", - "estilo", - "estufa", - "etapa", - "eterno", - "ética", - "etnia", - "evadir", - "evaluar", - "evento", - "evitar", - "exacto", - "examen", - "exceso", - "excusa", - "exento", - "exigir", - "exilio", - "existir", - "éxito", - "experto", - "explicar", - "exponer", - "extremo", - "fábrica", - "fábula", - "fachada", - "fácil", - "factor", - "faena", - "faja", - "falda", - "fallo", - "falso", - "faltar", - "fama", - "familia", - "famoso", - "faraón", - "farmacia", - "farol", - "farsa", - "fase", - "fatiga", - "fauna", - "favor", - "fax", - "febrero", - "fecha", - "feliz", - "feo", - "feria", - "feroz", - "fértil", - "fervor", - "festín", - "fiable", - "fianza", - "fiar", - "fibra", - "ficción", - "ficha", - "fideo", - "fiebre", - "fiel", - "fiera", - "fiesta", - "figura", - "fijar", - "fijo", - "fila", - "filete", - "filial", - "filtro", - "fin", - "finca", - "fingir", - "finito", - "firma", - "flaco", - "flauta", - "flecha", - "flor", - "flota", - "fluir", - "flujo", - "flúor", - "fobia", - "foca", - "fogata", - "fogón", - "folio", - "folleto", - "fondo", - "forma", - "forro", - "fortuna", - "forzar", - "fosa", - "foto", - "fracaso", - "frágil", - "franja", - "frase", - "fraude", - "freír", - "freno", - "fresa", - "frío", - "frito", - "fruta", - "fuego", - "fuente", - "fuerza", - "fuga", - "fumar", - "función", - "funda", - "furgón", - "furia", - "fusil", - "fútbol", - "futuro", - "gacela", - "gafas", - "gaita", - "gajo", - "gala", - "galería", - "gallo", - "gamba", - "ganar", - "gancho", - "ganga", - "ganso", - "garaje", - "garza", - "gasolina", - "gastar", - "gato", - "gavilán", - "gemelo", - "gemir", - "gen", - "género", - "genio", - "gente", - "geranio", - "gerente", - "germen", - "gesto", - "gigante", - "gimnasio", - "girar", - "giro", - "glaciar", - "globo", - "gloria", - "gol", - "golfo", - "goloso", - "golpe", - "goma", - "gordo", - "gorila", - "gorra", - "gota", - "goteo", - "gozar", - "grada", - "gráfico", - "grano", - "grasa", - "gratis", - "grave", - "grieta", - "grillo", - "gripe", - "gris", - "grito", - "grosor", - "grúa", - "grueso", - "grumo", - "grupo", - "guante", - "guapo", - "guardia", - "guerra", - "guía", - "guiño", - "guion", - "guiso", - "guitarra", - "gusano", - "gustar", - "haber", - "hábil", - "hablar", - "hacer", - "hacha", - "hada", - "hallar", - "hamaca", - "harina", - "haz", - "hazaña", - "hebilla", - "hebra", - "hecho", - "helado", - "helio", - "hembra", - "herir", - "hermano", - "héroe", - "hervir", - "hielo", - "hierro", - "hígado", - "higiene", - "hijo", - "himno", - "historia", - "hocico", - "hogar", - "hoguera", - "hoja", - "hombre", - "hongo", - "honor", - "honra", - "hora", - "hormiga", - "horno", - "hostil", - "hoyo", - "hueco", - "huelga", - "huerta", - "hueso", - "huevo", - "huida", - "huir", - "humano", - "húmedo", - "humilde", - "humo", - "hundir", - "huracán", - "hurto", - "icono", - "ideal", - "idioma", - "ídolo", - "iglesia", - "iglú", - "igual", - "ilegal", - "ilusión", - "imagen", - "imán", - "imitar", - "impar", - "imperio", - "imponer", - "impulso", - "incapaz", - "índice", - "inerte", - "infiel", - "informe", - "ingenio", - "inicio", - "inmenso", - "inmune", - "innato", - "insecto", - "instante", - "interés", - "íntimo", - "intuir", - "inútil", - "invierno", - "ira", - "iris", - "ironía", - "isla", - "islote", - "jabalí", - "jabón", - "jamón", - "jarabe", - "jardín", - "jarra", - "jaula", - "jazmín", - "jefe", - "jeringa", - "jinete", - "jornada", - "joroba", - "joven", - "joya", - "juerga", - "jueves", - "juez", - "jugador", - "jugo", - "juguete", - "juicio", - "junco", - "jungla", - "junio", - "juntar", - "júpiter", - "jurar", - "justo", - "juvenil", - "juzgar", - "kilo", - "koala", - "labio", - "lacio", - "lacra", - "lado", - "ladrón", - "lagarto", - "lágrima", - "laguna", - "laico", - "lamer", - "lámina", - "lámpara", - "lana", - "lancha", - "langosta", - "lanza", - "lápiz", - "largo", - "larva", - "lástima", - "lata", - "látex", - "latir", - "laurel", - "lavar", - "lazo", - "leal", - "lección", - "leche", - "lector", - "leer", - "legión", - "legumbre", - "lejano", - "lengua", - "lento", - "leña", - "león", - "leopardo", - "lesión", - "letal", - "letra", - "leve", - "leyenda", - "libertad", - "libro", - "licor", - "líder", - "lidiar", - "lienzo", - "liga", - "ligero", - "lima", - "límite", - "limón", - "limpio", - "lince", - "lindo", - "línea", - "lingote", - "lino", - "linterna", - "líquido", - "liso", - "lista", - "litera", - "litio", - "litro", - "llaga", - "llama", - "llanto", - "llave", - "llegar", - "llenar", - "llevar", - "llorar", - "llover", - "lluvia", - "lobo", - "loción", - "loco", - "locura", - "lógica", - "logro", - "lombriz", - "lomo", - "lonja", - "lote", - "lucha", - "lucir", - "lugar", - "lujo", - "luna", - "lunes", - "lupa", - "lustro", - "luto", - "luz", - "maceta", - "macho", - "madera", - "madre", - "maduro", - "maestro", - "mafia", - "magia", - "mago", - "maíz", - "maldad", - "maleta", - "malla", - "malo", - "mamá", - "mambo", - "mamut", - "manco", - "mando", - "manejar", - "manga", - "maniquí", - "manjar", - "mano", - "manso", - "manta", - "mañana", - "mapa", - "máquina", - "mar", - "marco", - "marea", - "marfil", - "margen", - "marido", - "mármol", - "marrón", - "martes", - "marzo", - "masa", - "máscara", - "masivo", - "matar", - "materia", - "matiz", - "matriz", - "máximo", - "mayor", - "mazorca", - "mecha", - "medalla", - "medio", - "médula", - "mejilla", - "mejor", - "melena", - "melón", - "memoria", - "menor", - "mensaje", - "mente", - "menú", - "mercado", - "merengue", - "mérito", - "mes", - "mesón", - "meta", - "meter", - "método", - "metro", - "mezcla", - "miedo", - "miel", - "miembro", - "miga", - "mil", - "milagro", - "militar", - "millón", - "mimo", - "mina", - "minero", - "mínimo", - "minuto", - "miope", - "mirar", - "misa", - "miseria", - "misil", - "mismo", - "mitad", - "mito", - "mochila", - "moción", - "moda", - "modelo", - "moho", - "mojar", - "molde", - "moler", - "molino", - "momento", - "momia", - "monarca", - "moneda", - "monja", - "monto", - "moño", - "morada", - "morder", - "moreno", - "morir", - "morro", - "morsa", - "mortal", - "mosca", - "mostrar", - "motivo", - "mover", - "móvil", - "mozo", - "mucho", - "mudar", - "mueble", - "muela", - "muerte", - "muestra", - "mugre", - "mujer", - "mula", - "muleta", - "multa", - "mundo", - "muñeca", - "mural", - "muro", - "músculo", - "museo", - "musgo", - "música", - "muslo", - "nácar", - "nación", - "nadar", - "naipe", - "naranja", - "nariz", - "narrar", - "nasal", - "natal", - "nativo", - "natural", - "náusea", - "naval", - "nave", - "navidad", - "necio", - "néctar", - "negar", - "negocio", - "negro", - "neón", - "nervio", - "neto", - "neutro", - "nevar", - "nevera", - "nicho", - "nido", - "niebla", - "nieto", - "niñez", - "niño", - "nítido", - "nivel", - "nobleza", - "noche", - "nómina", - "noria", - "norma", - "norte", - "nota", - "noticia", - "novato", - "novela", - "novio", - "nube", - "nuca", - "núcleo", - "nudillo", - "nudo", - "nuera", - "nueve", - "nuez", - "nulo", - "número", - "nutria", - "oasis", - "obeso", - "obispo", - "objeto", - "obra", - "obrero", - "observar", - "obtener", - "obvio", - "oca", - "ocaso", - "océano", - "ochenta", - "ocho", - "ocio", - "ocre", - "octavo", - "octubre", - "oculto", - "ocupar", - "ocurrir", - "odiar", - "odio", - "odisea", - "oeste", - "ofensa", - "oferta", - "oficio", - "ofrecer", - "ogro", - "oído", - "oír", - "ojo", - "ola", - "oleada", - "olfato", - "olivo", - "olla", - "olmo", - "olor", - "olvido", - "ombligo", - "onda", - "onza", - "opaco", - "opción", - "ópera", - "opinar", - "oponer", - "optar", - "óptica", - "opuesto", - "oración", - "orador", - "oral", - "órbita", - "orca", - "orden", - "oreja", - "órgano", - "orgía", - "orgullo", - "oriente", - "origen", - "orilla", - "oro", - "orquesta", - "oruga", - "osadía", - "oscuro", - "osezno", - "oso", - "ostra", - "otoño", - "otro", - "oveja", - "óvulo", - "óxido", - "oxígeno", - "oyente", - "ozono", - "pacto", - "padre", - "paella", - "página", - "pago", - "país", - "pájaro", - "palabra", - "palco", - "paleta", - "pálido", - "palma", - "paloma", - "palpar", - "pan", - "panal", - "pánico", - "pantera", - "pañuelo", - "papá", - "papel", - "papilla", - "paquete", - "parar", - "parcela", - "pared", - "parir", - "paro", - "párpado", - "parque", - "párrafo", - "parte", - "pasar", - "paseo", - "pasión", - "paso", - "pasta", - "pata", - "patio", - "patria", - "pausa", - "pauta", - "pavo", - "payaso", - "peatón", - "pecado", - "pecera", - "pecho", - "pedal", - "pedir", - "pegar", - "peine", - "pelar", - "peldaño", - "pelea", - "peligro", - "pellejo", - "pelo", - "peluca", - "pena", - "pensar", - "peñón", - "peón", - "peor", - "pepino", - "pequeño", - "pera", - "percha", - "perder", - "pereza", - "perfil", - "perico", - "perla", - "permiso", - "perro", - "persona", - "pesa", - "pesca", - "pésimo", - "pestaña", - "pétalo", - "petróleo", - "pez", - "pezuña", - "picar", - "pichón", - "pie", - "piedra", - "pierna", - "pieza", - "pijama", - "pilar", - "piloto", - "pimienta", - "pino", - "pintor", - "pinza", - "piña", - "piojo", - "pipa", - "pirata", - "pisar", - "piscina", - "piso", - "pista", - "pitón", - "pizca", - "placa", - "plan", - "plata", - "playa", - "plaza", - "pleito", - "pleno", - "plomo", - "pluma", - "plural", - "pobre", - "poco", - "poder", - "podio", - "poema", - "poesía", - "poeta", - "polen", - "policía", - "pollo", - "polvo", - "pomada", - "pomelo", - "pomo", - "pompa", - "poner", - "porción", - "portal", - "posada", - "poseer", - "posible", - "poste", - "potencia", - "potro", - "pozo", - "prado", - "precoz", - "pregunta", - "premio", - "prensa", - "preso", - "previo", - "primo", - "príncipe", - "prisión", - "privar", - "proa", - "probar", - "proceso", - "producto", - "proeza", - "profesor", - "programa", - "prole", - "promesa", - "pronto", - "propio", - "próximo", - "prueba", - "público", - "puchero", - "pudor", - "pueblo", - "puerta", - "puesto", - "pulga", - "pulir", - "pulmón", - "pulpo", - "pulso", - "puma", - "punto", - "puñal", - "puño", - "pupa", - "pupila", - "puré", - "quedar", - "queja", - "quemar", - "querer", - "queso", - "quieto", - "química", - "quince", - "quitar", - "rábano", - "rabia", - "rabo", - "ración", - "radical", - "raíz", - "rama", - "rampa", - "rancho", - "rango", - "rapaz", - "rápido", - "rapto", - "rasgo", - "raspa", - "rato", - "rayo", - "raza", - "razón", - "reacción", - "realidad", - "rebaño", - "rebote", - "recaer", - "receta", - "rechazo", - "recoger", - "recreo", - "recto", - "recurso", - "red", - "redondo", - "reducir", - "reflejo", - "reforma", - "refrán", - "refugio", - "regalo", - "regir", - "regla", - "regreso", - "rehén", - "reino", - "reír", - "reja", - "relato", - "relevo", - "relieve", - "relleno", - "reloj", - "remar", - "remedio", - "remo", - "rencor", - "rendir", - "renta", - "reparto", - "repetir", - "reposo", - "reptil", - "res", - "rescate", - "resina", - "respeto", - "resto", - "resumen", - "retiro", - "retorno", - "retrato", - "reunir", - "revés", - "revista", - "rey", - "rezar", - "rico", - "riego", - "rienda", - "riesgo", - "rifa", - "rígido", - "rigor", - "rincón", - "riñón", - "río", - "riqueza", - "risa", - "ritmo", - "rito", - "rizo", - "roble", - "roce", - "rociar", - "rodar", - "rodeo", - "rodilla", - "roer", - "rojizo", - "rojo", - "romero", - "romper", - "ron", - "ronco", - "ronda", - "ropa", - "ropero", - "rosa", - "rosca", - "rostro", - "rotar", - "rubí", - "rubor", - "rudo", - "rueda", - "rugir", - "ruido", - "ruina", - "ruleta", - "rulo", - "rumbo", - "rumor", - "ruptura", - "ruta", - "rutina", - "sábado", - "saber", - "sabio", - "sable", - "sacar", - "sagaz", - "sagrado", - "sala", - "saldo", - "salero", - "salir", - "salmón", - "salón", - "salsa", - "salto", - "salud", - "salvar", - "samba", - "sanción", - "sandía", - "sanear", - "sangre", - "sanidad", - "sano", - "santo", - "sapo", - "saque", - "sardina", - "sartén", - "sastre", - "satán", - "sauna", - "saxofón", - "sección", - "seco", - "secreto", - "secta", - "sed", - "seguir", - "seis", - "sello", - "selva", - "semana", - "semilla", - "senda", - "sensor", - "señal", - "señor", - "separar", - "sepia", - "sequía", - "ser", - "serie", - "sermón", - "servir", - "sesenta", - "sesión", - "seta", - "setenta", - "severo", - "sexo", - "sexto", - "sidra", - "siesta", - "siete", - "siglo", - "signo", - "sílaba", - "silbar", - "silencio", - "silla", - "símbolo", - "simio", - "sirena", - "sistema", - "sitio", - "situar", - "sobre", - "socio", - "sodio", - "sol", - "solapa", - "soldado", - "soledad", - "sólido", - "soltar", - "solución", - "sombra", - "sondeo", - "sonido", - "sonoro", - "sonrisa", - "sopa", - "soplar", - "soporte", - "sordo", - "sorpresa", - "sorteo", - "sostén", - "sótano", - "suave", - "subir", - "suceso", - "sudor", - "suegra", - "suelo", - "sueño", - "suerte", - "sufrir", - "sujeto", - "sultán", - "sumar", - "superar", - "suplir", - "suponer", - "supremo", - "sur", - "surco", - "sureño", - "surgir", - "susto", - "sutil", - "tabaco", - "tabique", - "tabla", - "tabú", - "taco", - "tacto", - "tajo", - "talar", - "talco", - "talento", - "talla", - "talón", - "tamaño", - "tambor", - "tango", - "tanque", - "tapa", - "tapete", - "tapia", - "tapón", - "taquilla", - "tarde", - "tarea", - "tarifa", - "tarjeta", - "tarot", - "tarro", - "tarta", - "tatuaje", - "tauro", - "taza", - "tazón", - "teatro", - "techo", - "tecla", - "técnica", - "tejado", - "tejer", - "tejido", - "tela", - "teléfono", - "tema", - "temor", - "templo", - "tenaz", - "tender", - "tener", - "tenis", - "tenso", - "teoría", - "terapia", - "terco", - "término", - "ternura", - "terror", - "tesis", - "tesoro", - "testigo", - "tetera", - "texto", - "tez", - "tibio", - "tiburón", - "tiempo", - "tienda", - "tierra", - "tieso", - "tigre", - "tijera", - "tilde", - "timbre", - "tímido", - "timo", - "tinta", - "tío", - "típico", - "tipo", - "tira", - "tirón", - "titán", - "títere", - "título", - "tiza", - "toalla", - "tobillo", - "tocar", - "tocino", - "todo", - "toga", - "toldo", - "tomar", - "tono", - "tonto", - "topar", - "tope", - "toque", - "tórax", - "torero", - "tormenta", - "torneo", - "toro", - "torpedo", - "torre", - "torso", - "tortuga", - "tos", - "tosco", - "toser", - "tóxico", - "trabajo", - "tractor", - "traer", - "tráfico", - "trago", - "traje", - "tramo", - "trance", - "trato", - "trauma", - "trazar", - "trébol", - "tregua", - "treinta", - "tren", - "trepar", - "tres", - "tribu", - "trigo", - "tripa", - "triste", - "triunfo", - "trofeo", - "trompa", - "tronco", - "tropa", - "trote", - "trozo", - "truco", - "trueno", - "trufa", - "tubería", - "tubo", - "tuerto", - "tumba", - "tumor", - "túnel", - "túnica", - "turbina", - "turismo", - "turno", - "tutor", - "ubicar", - "úlcera", - "umbral", - "unidad", - "unir", - "universo", - "uno", - "untar", - "uña", - "urbano", - "urbe", - "urgente", - "urna", - "usar", - "usuario", - "útil", - "utopía", - "uva", - "vaca", - "vacío", - "vacuna", - "vagar", - "vago", - "vaina", - "vajilla", - "vale", - "válido", - "valle", - "valor", - "válvula", - "vampiro", - "vara", - "variar", - "varón", - "vaso", - "vecino", - "vector", - "vehículo", - "veinte", - "vejez", - "vela", - "velero", - "veloz", - "vena", - "vencer", - "venda", - "veneno", - "vengar", - "venir", - "venta", - "venus", - "ver", - "verano", - "verbo", - "verde", - "vereda", - "verja", - "verso", - "verter", - "vía", - "viaje", - "vibrar", - "vicio", - "víctima", - "vida", - "vídeo", - "vidrio", - "viejo", - "viernes", - "vigor", - "vil", - "villa", - "vinagre", - "vino", - "viñedo", - "violín", - "viral", - "virgo", - "virtud", - "visor", - "víspera", - "vista", - "vitamina", - "viudo", - "vivaz", - "vivero", - "vivir", - "vivo", - "volcán", - "volumen", - "volver", - "voraz", - "votar", - "voto", - "voz", - "vuelo", - "vulgar", - "yacer", - "yate", - "yegua", - "yema", - "yerno", - "yeso", - "yodo", - "yoga", - "yogur", - "zafiro", - "zanja", - "zapato", - "zarza", - "zona", - "zorro", - "zumo", - "zurdo", - ) -} diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt deleted file mode 100644 index a138d14bf..000000000 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt +++ /dev/null @@ -1,2059 +0,0 @@ -package io.iohk.atala.prism.apollo.utils.bip39.wordlists - -import kotlin.js.ExperimentalJsExport -import kotlin.js.JsExport - -@OptIn(ExperimentalJsExport::class) -@JsExport -internal object MnemonicCodeTraditionalChinese { - val wordList: List = listOf( - "的", - "一", - "是", - "在", - "不", - "了", - "有", - "和", - "人", - "這", - "中", - "大", - "為", - "上", - "個", - "國", - "我", - "以", - "要", - "他", - "時", - "來", - "用", - "們", - "生", - "到", - "作", - "地", - "於", - "出", - "就", - "分", - "對", - "成", - "會", - "可", - "主", - "發", - "年", - "動", - "同", - "工", - "也", - "能", - "下", - "過", - "子", - "說", - "產", - "種", - "面", - "而", - "方", - "後", - "多", - "定", - "行", - "學", - "法", - "所", - "民", - "得", - "經", - "十", - "三", - "之", - "進", - "著", - "等", - "部", - "度", - "家", - "電", - "力", - "裡", - "如", - "水", - "化", - "高", - "自", - "二", - "理", - "起", - "小", - "物", - "現", - "實", - "加", - "量", - "都", - "兩", - "體", - "制", - "機", - "當", - "使", - "點", - "從", - "業", - "本", - "去", - "把", - "性", - "好", - "應", - "開", - "它", - "合", - "還", - "因", - "由", - "其", - "些", - "然", - "前", - "外", - "天", - "政", - "四", - "日", - "那", - "社", - "義", - "事", - "平", - "形", - "相", - "全", - "表", - "間", - "樣", - "與", - "關", - "各", - "重", - "新", - "線", - "內", - "數", - "正", - "心", - "反", - "你", - "明", - "看", - "原", - "又", - "麼", - "利", - "比", - "或", - "但", - "質", - "氣", - "第", - "向", - "道", - "命", - "此", - "變", - "條", - "只", - "沒", - "結", - "解", - "問", - "意", - "建", - "月", - "公", - "無", - "系", - "軍", - "很", - "情", - "者", - "最", - "立", - "代", - "想", - "已", - "通", - "並", - "提", - "直", - "題", - "黨", - "程", - "展", - "五", - "果", - "料", - "象", - "員", - "革", - "位", - "入", - "常", - "文", - "總", - "次", - "品", - "式", - "活", - "設", - "及", - "管", - "特", - "件", - "長", - "求", - "老", - "頭", - "基", - "資", - "邊", - "流", - "路", - "級", - "少", - "圖", - "山", - "統", - "接", - "知", - "較", - "將", - "組", - "見", - "計", - "別", - "她", - "手", - "角", - "期", - "根", - "論", - "運", - "農", - "指", - "幾", - "九", - "區", - "強", - "放", - "決", - "西", - "被", - "幹", - "做", - "必", - "戰", - "先", - "回", - "則", - "任", - "取", - "據", - "處", - "隊", - "南", - "給", - "色", - "光", - "門", - "即", - "保", - "治", - "北", - "造", - "百", - "規", - "熱", - "領", - "七", - "海", - "口", - "東", - "導", - "器", - "壓", - "志", - "世", - "金", - "增", - "爭", - "濟", - "階", - "油", - "思", - "術", - "極", - "交", - "受", - "聯", - "什", - "認", - "六", - "共", - "權", - "收", - "證", - "改", - "清", - "美", - "再", - "採", - "轉", - "更", - "單", - "風", - "切", - "打", - "白", - "教", - "速", - "花", - "帶", - "安", - "場", - "身", - "車", - "例", - "真", - "務", - "具", - "萬", - "每", - "目", - "至", - "達", - "走", - "積", - "示", - "議", - "聲", - "報", - "鬥", - "完", - "類", - "八", - "離", - "華", - "名", - "確", - "才", - "科", - "張", - "信", - "馬", - "節", - "話", - "米", - "整", - "空", - "元", - "況", - "今", - "集", - "溫", - "傳", - "土", - "許", - "步", - "群", - "廣", - "石", - "記", - "需", - "段", - "研", - "界", - "拉", - "林", - "律", - "叫", - "且", - "究", - "觀", - "越", - "織", - "裝", - "影", - "算", - "低", - "持", - "音", - "眾", - "書", - "布", - "复", - "容", - "兒", - "須", - "際", - "商", - "非", - "驗", - "連", - "斷", - "深", - "難", - "近", - "礦", - "千", - "週", - "委", - "素", - "技", - "備", - "半", - "辦", - "青", - "省", - "列", - "習", - "響", - "約", - "支", - "般", - "史", - "感", - "勞", - "便", - "團", - "往", - "酸", - "歷", - "市", - "克", - "何", - "除", - "消", - "構", - "府", - "稱", - "太", - "準", - "精", - "值", - "號", - "率", - "族", - "維", - "劃", - "選", - "標", - "寫", - "存", - "候", - "毛", - "親", - "快", - "效", - "斯", - "院", - "查", - "江", - "型", - "眼", - "王", - "按", - "格", - "養", - "易", - "置", - "派", - "層", - "片", - "始", - "卻", - "專", - "狀", - "育", - "廠", - "京", - "識", - "適", - "屬", - "圓", - "包", - "火", - "住", - "調", - "滿", - "縣", - "局", - "照", - "參", - "紅", - "細", - "引", - "聽", - "該", - "鐵", - "價", - "嚴", - "首", - "底", - "液", - "官", - "德", - "隨", - "病", - "蘇", - "失", - "爾", - "死", - "講", - "配", - "女", - "黃", - "推", - "顯", - "談", - "罪", - "神", - "藝", - "呢", - "席", - "含", - "企", - "望", - "密", - "批", - "營", - "項", - "防", - "舉", - "球", - "英", - "氧", - "勢", - "告", - "李", - "台", - "落", - "木", - "幫", - "輪", - "破", - "亞", - "師", - "圍", - "注", - "遠", - "字", - "材", - "排", - "供", - "河", - "態", - "封", - "另", - "施", - "減", - "樹", - "溶", - "怎", - "止", - "案", - "言", - "士", - "均", - "武", - "固", - "葉", - "魚", - "波", - "視", - "僅", - "費", - "緊", - "愛", - "左", - "章", - "早", - "朝", - "害", - "續", - "輕", - "服", - "試", - "食", - "充", - "兵", - "源", - "判", - "護", - "司", - "足", - "某", - "練", - "差", - "致", - "板", - "田", - "降", - "黑", - "犯", - "負", - "擊", - "范", - "繼", - "興", - "似", - "餘", - "堅", - "曲", - "輸", - "修", - "故", - "城", - "夫", - "夠", - "送", - "筆", - "船", - "佔", - "右", - "財", - "吃", - "富", - "春", - "職", - "覺", - "漢", - "畫", - "功", - "巴", - "跟", - "雖", - "雜", - "飛", - "檢", - "吸", - "助", - "昇", - "陽", - "互", - "初", - "創", - "抗", - "考", - "投", - "壞", - "策", - "古", - "徑", - "換", - "未", - "跑", - "留", - "鋼", - "曾", - "端", - "責", - "站", - "簡", - "述", - "錢", - "副", - "盡", - "帝", - "射", - "草", - "衝", - "承", - "獨", - "令", - "限", - "阿", - "宣", - "環", - "雙", - "請", - "超", - "微", - "讓", - "控", - "州", - "良", - "軸", - "找", - "否", - "紀", - "益", - "依", - "優", - "頂", - "礎", - "載", - "倒", - "房", - "突", - "坐", - "粉", - "敵", - "略", - "客", - "袁", - "冷", - "勝", - "絕", - "析", - "塊", - "劑", - "測", - "絲", - "協", - "訴", - "念", - "陳", - "仍", - "羅", - "鹽", - "友", - "洋", - "錯", - "苦", - "夜", - "刑", - "移", - "頻", - "逐", - "靠", - "混", - "母", - "短", - "皮", - "終", - "聚", - "汽", - "村", - "雲", - "哪", - "既", - "距", - "衛", - "停", - "烈", - "央", - "察", - "燒", - "迅", - "境", - "若", - "印", - "洲", - "刻", - "括", - "激", - "孔", - "搞", - "甚", - "室", - "待", - "核", - "校", - "散", - "侵", - "吧", - "甲", - "遊", - "久", - "菜", - "味", - "舊", - "模", - "湖", - "貨", - "損", - "預", - "阻", - "毫", - "普", - "穩", - "乙", - "媽", - "植", - "息", - "擴", - "銀", - "語", - "揮", - "酒", - "守", - "拿", - "序", - "紙", - "醫", - "缺", - "雨", - "嗎", - "針", - "劉", - "啊", - "急", - "唱", - "誤", - "訓", - "願", - "審", - "附", - "獲", - "茶", - "鮮", - "糧", - "斤", - "孩", - "脫", - "硫", - "肥", - "善", - "龍", - "演", - "父", - "漸", - "血", - "歡", - "械", - "掌", - "歌", - "沙", - "剛", - "攻", - "謂", - "盾", - "討", - "晚", - "粒", - "亂", - "燃", - "矛", - "乎", - "殺", - "藥", - "寧", - "魯", - "貴", - "鐘", - "煤", - "讀", - "班", - "伯", - "香", - "介", - "迫", - "句", - "豐", - "培", - "握", - "蘭", - "擔", - "弦", - "蛋", - "沉", - "假", - "穿", - "執", - "答", - "樂", - "誰", - "順", - "煙", - "縮", - "徵", - "臉", - "喜", - "松", - "腳", - "困", - "異", - "免", - "背", - "星", - "福", - "買", - "染", - "井", - "概", - "慢", - "怕", - "磁", - "倍", - "祖", - "皇", - "促", - "靜", - "補", - "評", - "翻", - "肉", - "踐", - "尼", - "衣", - "寬", - "揚", - "棉", - "希", - "傷", - "操", - "垂", - "秋", - "宜", - "氫", - "套", - "督", - "振", - "架", - "亮", - "末", - "憲", - "慶", - "編", - "牛", - "觸", - "映", - "雷", - "銷", - "詩", - "座", - "居", - "抓", - "裂", - "胞", - "呼", - "娘", - "景", - "威", - "綠", - "晶", - "厚", - "盟", - "衡", - "雞", - "孫", - "延", - "危", - "膠", - "屋", - "鄉", - "臨", - "陸", - "顧", - "掉", - "呀", - "燈", - "歲", - "措", - "束", - "耐", - "劇", - "玉", - "趙", - "跳", - "哥", - "季", - "課", - "凱", - "胡", - "額", - "款", - "紹", - "卷", - "齊", - "偉", - "蒸", - "殖", - "永", - "宗", - "苗", - "川", - "爐", - "岩", - "弱", - "零", - "楊", - "奏", - "沿", - "露", - "桿", - "探", - "滑", - "鎮", - "飯", - "濃", - "航", - "懷", - "趕", - "庫", - "奪", - "伊", - "靈", - "稅", - "途", - "滅", - "賽", - "歸", - "召", - "鼓", - "播", - "盤", - "裁", - "險", - "康", - "唯", - "錄", - "菌", - "純", - "借", - "糖", - "蓋", - "橫", - "符", - "私", - "努", - "堂", - "域", - "槍", - "潤", - "幅", - "哈", - "竟", - "熟", - "蟲", - "澤", - "腦", - "壤", - "碳", - "歐", - "遍", - "側", - "寨", - "敢", - "徹", - "慮", - "斜", - "薄", - "庭", - "納", - "彈", - "飼", - "伸", - "折", - "麥", - "濕", - "暗", - "荷", - "瓦", - "塞", - "床", - "築", - "惡", - "戶", - "訪", - "塔", - "奇", - "透", - "梁", - "刀", - "旋", - "跡", - "卡", - "氯", - "遇", - "份", - "毒", - "泥", - "退", - "洗", - "擺", - "灰", - "彩", - "賣", - "耗", - "夏", - "擇", - "忙", - "銅", - "獻", - "硬", - "予", - "繁", - "圈", - "雪", - "函", - "亦", - "抽", - "篇", - "陣", - "陰", - "丁", - "尺", - "追", - "堆", - "雄", - "迎", - "泛", - "爸", - "樓", - "避", - "謀", - "噸", - "野", - "豬", - "旗", - "累", - "偏", - "典", - "館", - "索", - "秦", - "脂", - "潮", - "爺", - "豆", - "忽", - "托", - "驚", - "塑", - "遺", - "愈", - "朱", - "替", - "纖", - "粗", - "傾", - "尚", - "痛", - "楚", - "謝", - "奮", - "購", - "磨", - "君", - "池", - "旁", - "碎", - "骨", - "監", - "捕", - "弟", - "暴", - "割", - "貫", - "殊", - "釋", - "詞", - "亡", - "壁", - "頓", - "寶", - "午", - "塵", - "聞", - "揭", - "炮", - "殘", - "冬", - "橋", - "婦", - "警", - "綜", - "招", - "吳", - "付", - "浮", - "遭", - "徐", - "您", - "搖", - "谷", - "贊", - "箱", - "隔", - "訂", - "男", - "吹", - "園", - "紛", - "唐", - "敗", - "宋", - "玻", - "巨", - "耕", - "坦", - "榮", - "閉", - "灣", - "鍵", - "凡", - "駐", - "鍋", - "救", - "恩", - "剝", - "凝", - "鹼", - "齒", - "截", - "煉", - "麻", - "紡", - "禁", - "廢", - "盛", - "版", - "緩", - "淨", - "睛", - "昌", - "婚", - "涉", - "筒", - "嘴", - "插", - "岸", - "朗", - "莊", - "街", - "藏", - "姑", - "貿", - "腐", - "奴", - "啦", - "慣", - "乘", - "夥", - "恢", - "勻", - "紗", - "扎", - "辯", - "耳", - "彪", - "臣", - "億", - "璃", - "抵", - "脈", - "秀", - "薩", - "俄", - "網", - "舞", - "店", - "噴", - "縱", - "寸", - "汗", - "掛", - "洪", - "賀", - "閃", - "柬", - "爆", - "烯", - "津", - "稻", - "牆", - "軟", - "勇", - "像", - "滾", - "厘", - "蒙", - "芳", - "肯", - "坡", - "柱", - "盪", - "腿", - "儀", - "旅", - "尾", - "軋", - "冰", - "貢", - "登", - "黎", - "削", - "鑽", - "勒", - "逃", - "障", - "氨", - "郭", - "峰", - "幣", - "港", - "伏", - "軌", - "畝", - "畢", - "擦", - "莫", - "刺", - "浪", - "秘", - "援", - "株", - "健", - "售", - "股", - "島", - "甘", - "泡", - "睡", - "童", - "鑄", - "湯", - "閥", - "休", - "匯", - "舍", - "牧", - "繞", - "炸", - "哲", - "磷", - "績", - "朋", - "淡", - "尖", - "啟", - "陷", - "柴", - "呈", - "徒", - "顏", - "淚", - "稍", - "忘", - "泵", - "藍", - "拖", - "洞", - "授", - "鏡", - "辛", - "壯", - "鋒", - "貧", - "虛", - "彎", - "摩", - "泰", - "幼", - "廷", - "尊", - "窗", - "綱", - "弄", - "隸", - "疑", - "氏", - "宮", - "姐", - "震", - "瑞", - "怪", - "尤", - "琴", - "循", - "描", - "膜", - "違", - "夾", - "腰", - "緣", - "珠", - "窮", - "森", - "枝", - "竹", - "溝", - "催", - "繩", - "憶", - "邦", - "剩", - "幸", - "漿", - "欄", - "擁", - "牙", - "貯", - "禮", - "濾", - "鈉", - "紋", - "罷", - "拍", - "咱", - "喊", - "袖", - "埃", - "勤", - "罰", - "焦", - "潛", - "伍", - "墨", - "欲", - "縫", - "姓", - "刊", - "飽", - "仿", - "獎", - "鋁", - "鬼", - "麗", - "跨", - "默", - "挖", - "鏈", - "掃", - "喝", - "袋", - "炭", - "污", - "幕", - "諸", - "弧", - "勵", - "梅", - "奶", - "潔", - "災", - "舟", - "鑑", - "苯", - "訟", - "抱", - "毀", - "懂", - "寒", - "智", - "埔", - "寄", - "屆", - "躍", - "渡", - "挑", - "丹", - "艱", - "貝", - "碰", - "拔", - "爹", - "戴", - "碼", - "夢", - "芽", - "熔", - "赤", - "漁", - "哭", - "敬", - "顆", - "奔", - "鉛", - "仲", - "虎", - "稀", - "妹", - "乏", - "珍", - "申", - "桌", - "遵", - "允", - "隆", - "螺", - "倉", - "魏", - "銳", - "曉", - "氮", - "兼", - "隱", - "礙", - "赫", - "撥", - "忠", - "肅", - "缸", - "牽", - "搶", - "博", - "巧", - "殼", - "兄", - "杜", - "訊", - "誠", - "碧", - "祥", - "柯", - "頁", - "巡", - "矩", - "悲", - "灌", - "齡", - "倫", - "票", - "尋", - "桂", - "鋪", - "聖", - "恐", - "恰", - "鄭", - "趣", - "抬", - "荒", - "騰", - "貼", - "柔", - "滴", - "猛", - "闊", - "輛", - "妻", - "填", - "撤", - "儲", - "簽", - "鬧", - "擾", - "紫", - "砂", - "遞", - "戲", - "吊", - "陶", - "伐", - "餵", - "療", - "瓶", - "婆", - "撫", - "臂", - "摸", - "忍", - "蝦", - "蠟", - "鄰", - "胸", - "鞏", - "擠", - "偶", - "棄", - "槽", - "勁", - "乳", - "鄧", - "吉", - "仁", - "爛", - "磚", - "租", - "烏", - "艦", - "伴", - "瓜", - "淺", - "丙", - "暫", - "燥", - "橡", - "柳", - "迷", - "暖", - "牌", - "秧", - "膽", - "詳", - "簧", - "踏", - "瓷", - "譜", - "呆", - "賓", - "糊", - "洛", - "輝", - "憤", - "競", - "隙", - "怒", - "粘", - "乃", - "緒", - "肩", - "籍", - "敏", - "塗", - "熙", - "皆", - "偵", - "懸", - "掘", - "享", - "糾", - "醒", - "狂", - "鎖", - "淀", - "恨", - "牲", - "霸", - "爬", - "賞", - "逆", - "玩", - "陵", - "祝", - "秒", - "浙", - "貌", - "役", - "彼", - "悉", - "鴨", - "趨", - "鳳", - "晨", - "畜", - "輩", - "秩", - "卵", - "署", - "梯", - "炎", - "灘", - "棋", - "驅", - "篩", - "峽", - "冒", - "啥", - "壽", - "譯", - "浸", - "泉", - "帽", - "遲", - "矽", - "疆", - "貸", - "漏", - "稿", - "冠", - "嫩", - "脅", - "芯", - "牢", - "叛", - "蝕", - "奧", - "鳴", - "嶺", - "羊", - "憑", - "串", - "塘", - "繪", - "酵", - "融", - "盆", - "錫", - "廟", - "籌", - "凍", - "輔", - "攝", - "襲", - "筋", - "拒", - "僚", - "旱", - "鉀", - "鳥", - "漆", - "沈", - "眉", - "疏", - "添", - "棒", - "穗", - "硝", - "韓", - "逼", - "扭", - "僑", - "涼", - "挺", - "碗", - "栽", - "炒", - "杯", - "患", - "餾", - "勸", - "豪", - "遼", - "勃", - "鴻", - "旦", - "吏", - "拜", - "狗", - "埋", - "輥", - "掩", - "飲", - "搬", - "罵", - "辭", - "勾", - "扣", - "估", - "蔣", - "絨", - "霧", - "丈", - "朵", - "姆", - "擬", - "宇", - "輯", - "陝", - "雕", - "償", - "蓄", - "崇", - "剪", - "倡", - "廳", - "咬", - "駛", - "薯", - "刷", - "斥", - "番", - "賦", - "奉", - "佛", - "澆", - "漫", - "曼", - "扇", - "鈣", - "桃", - "扶", - "仔", - "返", - "俗", - "虧", - "腔", - "鞋", - "棱", - "覆", - "框", - "悄", - "叔", - "撞", - "騙", - "勘", - "旺", - "沸", - "孤", - "吐", - "孟", - "渠", - "屈", - "疾", - "妙", - "惜", - "仰", - "狠", - "脹", - "諧", - "拋", - "黴", - "桑", - "崗", - "嘛", - "衰", - "盜", - "滲", - "臟", - "賴", - "湧", - "甜", - "曹", - "閱", - "肌", - "哩", - "厲", - "烴", - "緯", - "毅", - "昨", - "偽", - "症", - "煮", - "嘆", - "釘", - "搭", - "莖", - "籠", - "酷", - "偷", - "弓", - "錐", - "恆", - "傑", - "坑", - "鼻", - "翼", - "綸", - "敘", - "獄", - "逮", - "罐", - "絡", - "棚", - "抑", - "膨", - "蔬", - "寺", - "驟", - "穆", - "冶", - "枯", - "冊", - "屍", - "凸", - "紳", - "坯", - "犧", - "焰", - "轟", - "欣", - "晉", - "瘦", - "禦", - "錠", - "錦", - "喪", - "旬", - "鍛", - "壟", - "搜", - "撲", - "邀", - "亭", - "酯", - "邁", - "舒", - "脆", - "酶", - "閒", - "憂", - "酚", - "頑", - "羽", - "漲", - "卸", - "仗", - "陪", - "闢", - "懲", - "杭", - "姚", - "肚", - "捉", - "飄", - "漂", - "昆", - "欺", - "吾", - "郎", - "烷", - "汁", - "呵", - "飾", - "蕭", - "雅", - "郵", - "遷", - "燕", - "撒", - "姻", - "赴", - "宴", - "煩", - "債", - "帳", - "斑", - "鈴", - "旨", - "醇", - "董", - "餅", - "雛", - "姿", - "拌", - "傅", - "腹", - "妥", - "揉", - "賢", - "拆", - "歪", - "葡", - "胺", - "丟", - "浩", - "徽", - "昂", - "墊", - "擋", - "覽", - "貪", - "慰", - "繳", - "汪", - "慌", - "馮", - "諾", - "姜", - "誼", - "兇", - "劣", - "誣", - "耀", - "昏", - "躺", - "盈", - "騎", - "喬", - "溪", - "叢", - "盧", - "抹", - "悶", - "諮", - "刮", - "駕", - "纜", - "悟", - "摘", - "鉺", - "擲", - "頗", - "幻", - "柄", - "惠", - "慘", - "佳", - "仇", - "臘", - "窩", - "滌", - "劍", - "瞧", - "堡", - "潑", - "蔥", - "罩", - "霍", - "撈", - "胎", - "蒼", - "濱", - "倆", - "捅", - "湘", - "砍", - "霞", - "邵", - "萄", - "瘋", - "淮", - "遂", - "熊", - "糞", - "烘", - "宿", - "檔", - "戈", - "駁", - "嫂", - "裕", - "徙", - "箭", - "捐", - "腸", - "撐", - "曬", - "辨", - "殿", - "蓮", - "攤", - "攪", - "醬", - "屏", - "疫", - "哀", - "蔡", - "堵", - "沫", - "皺", - "暢", - "疊", - "閣", - "萊", - "敲", - "轄", - "鉤", - "痕", - "壩", - "巷", - "餓", - "禍", - "丘", - "玄", - "溜", - "曰", - "邏", - "彭", - "嘗", - "卿", - "妨", - "艇", - "吞", - "韋", - "怨", - "矮", - "歇", - ) -} diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt b/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt deleted file mode 100644 index b79f12a07..000000000 --- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt +++ /dev/null @@ -1,188 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -class TestPoint(val x: ByteArray, val y: ByteArray) - -object Secp256k1TestVectors { - // Vectors from https://crypto.stackexchange.com/a/21206 - val vectors = listOf( - TestPoint( - "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(), - "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8".decodeHex() - ), - TestPoint( - "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(), - "1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a".decodeHex() - ), - TestPoint( - "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(), - "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672".decodeHex() - ), - TestPoint( - "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(), - "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6".decodeHex() - ), - TestPoint( - "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(), - "ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297".decodeHex() - ), - TestPoint( - "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(), - "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da".decodeHex() - ), - TestPoint( - "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(), - "5c4da8a741539949293d082a132d13b4c2e213d6ba5b7617b5da2cb76cbde904".decodeHex() - ), - TestPoint( - "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(), - "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37".decodeHex() - ), - TestPoint( - "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(), - "893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7".decodeHex() - ), - TestPoint( - "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(), - "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b".decodeHex() - ), - TestPoint( - "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(), - "a9f34ffdc815e0d7a8b64537e17bd81579238c5dd9a86d526b051b13f4062327".decodeHex() - ), - TestPoint( - "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(), - "0ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81".decodeHex() - ), - TestPoint( - "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(), - "cac2f6c4b54e855190f044e4a7b3d464464279c27a3f95bcc65f40d403a13f5b".decodeHex() - ), - TestPoint( - "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(), - "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58".decodeHex() - ), - TestPoint( - "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(), - "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821".decodeHex() - ), - TestPoint( - "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(), - "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77".decodeHex() - ), - TestPoint( - "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(), - "c136c1dc0cbeb930e9e298043589351d81d8e0bc736ae2a1f5192e5e8b061d58".decodeHex() - ), - TestPoint( - "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(), - "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a".decodeHex() - ), - TestPoint( - "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(), - "12ba26dcb10ec1625da61fa10a844c676162948271d96967450288ee9233dc3a".decodeHex() - ), - TestPoint( - "a90cc3d3f3e146daadfc74ca1372207cb4b725ae708cef713a98edd73d99ef29".decodeHex(), - "5a79d6b289610c68bc3b47f3d72f9788a26a06868b4d8e433e1e2ad76fb7dc76".decodeHex() - ), - TestPoint( - "e5a2636bcfd412ebf36ec45b19bfb68a1bc5f8632e678132b885f7df99c5e9b3".decodeHex(), - "736c1ce161ae27b405cafd2a7520370153c2c861ac51d6c1d5985d9606b45f39".decodeHex() - ), - TestPoint( - "a6b594b38fb3e77c6edf78161fade2041f4e09fd8497db776e546c41567feb3c".decodeHex(), - "71444009192228730cd8237a490feba2afe3d27d7cc1136bc97e439d13330d55".decodeHex() - ), - TestPoint( - "00000000000000000000003b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63".decodeHex(), - "3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3".decodeHex() - ), - TestPoint( - "e24ce4beee294aa6350faa67512b99d388693ae4e7f53d19882a6ea169fc1ce1".decodeHex(), - "8b71e83545fc2b5872589f99d948c03108d36797c4de363ebd3ff6a9e1a95b10".decodeHex() - ), - TestPoint( - "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(), - "ed45d9234ef13e9da259e05ef57bb3989e9d6b7d8e269698bafd77106dcc1ff5".decodeHex() - ), - TestPoint( - "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(), - "7a17643fc86ba26c4cbcf7c4a5e379ece5fe09f3afd9689c4a8f37aa1a3f60b5".decodeHex() - ), - TestPoint( - "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(), - "3ec93e23f34146cf161d67fbca76cae27e271f438c951d5e0ae6d1a074f9ded7".decodeHex() - ), - TestPoint( - "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(), - "bdee54f96b9cae9716684f152d56c251312e0b5fb56a3f09304e660861a910b8".decodeHex() - ), - TestPoint( - "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(), - "081caf8c661a6a6d624660cb0a86c8efed6976e1bb2dc0f41e0cd330969e940e".decodeHex() - ), - TestPoint( - "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(), - "a7e1d78d57938d597c7bd13dd733921015bf50d427692c5a3afb235f095d90d7".decodeHex() - ), - TestPoint( - "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(), - "353d093b4ab17aae6f0fbb1b584c2b9bb9bd863d85c06a4339a0bf2afc5ebcd4".decodeHex() - ), - TestPoint( - "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(), - "f54f6fd17277f5768a7ded149a3250b8c5e5f925ade056e0d64a34ac24fc0eae".decodeHex() - ), - TestPoint( - "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(), - "560cb00237ea1f285749bac81e8427ea86dc73a2265792ad94fae4eb0bf9d908".decodeHex() - ), - TestPoint( - "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(), - "267b5fcd1494a1e6fdbc22a928484c9ac8d24e1d20062957cfe28b3536ac3614".decodeHex() - ), - TestPoint( - "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(), - "76c545bdabe643d85c4938196c5db3969086b3d127885ea6c3411ac3fc8c9358".decodeHex() - ), - TestPoint( - "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(), - "33cc76de4f5826029bc7f68e89c49e165227775bc8a071f0fa33d9d439b05ff8".decodeHex() - ), - TestPoint( - "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(), - "a3b25758beac66b6d6c2f7d5ecd2ec4b3d1dec2945a489e84a25d3479342132b".decodeHex() - ), - TestPoint( - "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(), - "951435bf45daa69f5ce8729279e5ab2457ec2f47ec02184a5af7d9d6f78d9755".decodeHex() - ), - TestPoint( - "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(), - "51ed8885530449df0c4169fe80ba3a9f217f0f09ae701b5fc378f3c84f8a0998".decodeHex() - ), - TestPoint( - "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(), - "2753ddd9c91a1c292b24562259363bd90877d8e454f297bf235782c459539959".decodeHex() - ), - TestPoint( - "e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13".decodeHex(), - "ae1266c15f2baa48a9bd1df6715aebb7269851cc404201bf30168422b88c630d".decodeHex() - ), - TestPoint( - "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(), - "c77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bd".decodeHex() - ), - TestPoint( - "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(), - "e51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705".decodeHex() - ), - TestPoint( - "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(), - "b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777".decodeHex() - ) - ) - - fun publicKeysFromSecp256k1TestVectors(): List = - vectors.map { KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(it.x, it.y) } -} diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt b/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt deleted file mode 100644 index 5ad147077..000000000 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt +++ /dev/null @@ -1,64 +0,0 @@ -// package io.iohk.atala.prism.apollo.secp256k1 -// -// /* ktlint-disable */ -// import kotlinx.cinterop.UByteVar -// import kotlinx.cinterop.alloc -// import kotlinx.cinterop.allocArray -// import kotlinx.cinterop.memScoped -// import kotlinx.cinterop.ptr -// import kotlinx.cinterop.readBytes -// // import io.iohk.atala.prism.apollo.kmmsecp256k1.* -// import secp256k1.* -// /* ktlint-disable */ -// -// class Schnorr : Secp256k1() { -// /** -// * Create a Schnorr signature. -// * -// * @param data message to sign. -// * @param sec signer's private key. -// * @param auxrand32 32 bytes of fresh randomness (optional). -// */ -// fun sign(data: ByteArray, sec: ByteArray, auxrand32: ByteArray?): ByteArray { -// require(sec.size == 32) -// require(data.size == 32) -// auxrand32?.let { require(it.size == 32) } -// memScoped { -// val nSec = toNat(sec) -// val nData = toNat(data) -// val nAuxrand32 = auxrand32?.let { toNat(it) } -// val nSig = allocArray(64) -// val keypair = alloc() -// secp256k1_keypair_create(ctx, keypair.ptr, nSec).requireSuccess("secp256k1_keypair_create() failed") -// secp256k1_schnorrsig_sign32( -// ctx, -// nSig, -// nData, -// keypair.ptr, -// nAuxrand32 -// ).requireSuccess("secp256k1_ecdsa_sign() failed") -// return nSig.readBytes(64) -// } -// } -// -// /** -// * Verify a Schnorr signature. -// * -// * @param signature 64 bytes signature. -// * @param data message signed. -// * @param pub signer's x-only public key (32 bytes). -// */ -// fun verify(signature: ByteArray, data: ByteArray, pub: ByteArray): Boolean { -// require(signature.size == 64) -// require(data.size == 32) -// require(pub.size == 32) -// memScoped { -// val nPub = toNat(pub) -// val pubkey = alloc() -// secp256k1_xonly_pubkey_parse(ctx, pubkey.ptr, nPub).requireSuccess("secp256k1_xonly_pubkey_parse() failed") -// val nData = toNat(data) -// val nSig = toNat(signature) -// return secp256k1_schnorrsig_verify(ctx, nSig, nData, 32, pubkey.ptr) == 1 -// } -// } -// } diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt b/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt deleted file mode 100644 index 3af6f4c04..000000000 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt +++ /dev/null @@ -1,253 +0,0 @@ -// Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") -// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") -@file:JsModule("@noble/secp256k1") -/* ktlint-disable */ -package io.iohk.atala.prism.apollo.utils.external.secp256k1 - -import io.iohk.atala.prism.apollo.utils.external.BN -import kotlin.js.* -import org.khronos.webgl.* -import org.w3c.dom.* -import org.w3c.dom.events.* -import org.w3c.dom.parsing.* -import org.w3c.dom.svg.* -import org.w3c.dom.url.* -import org.w3c.fetch.* -import org.w3c.files.* -import org.w3c.notifications.* -import org.w3c.performance.* -import org.w3c.workers.* -import org.w3c.xhr.* -import org.khronos.webgl.Uint8Array - -external object CURVE { - var p: BN - var n: BN - var a: BN - var b: BN - var Gx: BN - var Gy: BN -} - -external interface AffinePoint { - var x: BN - var y: BN -} - -external open class Point(px: BN, py: BN, pz: BN) { - open var px: BN - open var py: BN - open var pz: BN - open fun equals(other: Point): Boolean - open fun negate(): Point - open fun double(): Point - open fun add(other: Point): Point - open fun mul(n: BN, safe: Boolean = definedExternally): Point - open fun mulAddQUns(R: Point, u1: BN, u2: BN): Point - open fun toAffine(): AffinePoint - open fun assertValidity(): Point - open fun multiply(n: BN): Point - open fun aff(): AffinePoint - open fun ok(): Point - open fun toHex(isCompressed: Boolean = definedExternally): String - open fun toRawBytes(isCompressed: Boolean = definedExternally): Uint8Array - - companion object { - var BASE: Point - var ZERO: Point - fun fromAffine(p: AffinePoint): Point - fun fromHex(hex: Uint8Array): Point - fun fromHex(hex: String): Point - fun fromPrivateKey(k: Uint8Array): Point - fun fromPrivateKey(k: String): Point - fun fromPrivateKey(k: BN): Point - } -} - -external fun getPublicKey(privKey: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getPublicKey(privKey: Uint8Array): Uint8Array - -external fun getPublicKey(privKey: String, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getPublicKey(privKey: String): Uint8Array - -external fun getPublicKey(privKey: BN, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getPublicKey(privKey: BN): Uint8Array - -external open class Signature(r: BN, s: BN, recovery: BN? = definedExternally) { - open var r: BN - open var s: BN - open var recovery: BN? - open fun assertValidity(): Signature /* this */ - open fun addRecoveryBit(rec: BN): Signature /* Signature & `T$2` */ - open fun hasHighS(): Boolean - open fun recoverPublicKey(msgh: Uint8Array): Point - open fun recoverPublicKey(msgh: String): Point - open fun toCompactRawBytes(): Uint8Array - open fun toCompactHex(): String - - companion object { - fun fromCompact(hex: Uint8Array): Signature - fun fromCompact(hex: String): Signature - } -} - -external interface `T$0` { - var lowS: Boolean? - get() = definedExternally - set(value) = definedExternally - var extraEntropy: dynamic /* Boolean? | Uint8Array? | String? */ - get() = definedExternally - set(value) = definedExternally -} - -external fun signAsync(msgh: Uint8Array, priv: Uint8Array, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: Uint8Array, priv: Uint8Array): Promise - -external fun signAsync(msgh: Uint8Array, priv: String, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: Uint8Array, priv: String): Promise - -external fun signAsync(msgh: Uint8Array, priv: BN, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: Uint8Array, priv: BN): Promise - -external fun signAsync(msgh: String, priv: Uint8Array, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: String, priv: Uint8Array): Promise - -external fun signAsync(msgh: String, priv: String, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: String, priv: String): Promise - -external fun signAsync(msgh: String, priv: BN, opts: `T$0` = definedExternally): Promise - -external fun signAsync(msgh: String, priv: BN): Promise - -external fun sign(msgh: Uint8Array, priv: Uint8Array, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: Uint8Array, priv: Uint8Array): Signature /* Signature & `T$2` */ - -external fun sign(msgh: Uint8Array, priv: String, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: Uint8Array, priv: String): Signature /* Signature & `T$2` */ - -external fun sign(msgh: Uint8Array, priv: BN, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: Uint8Array, priv: BN): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: Uint8Array, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: Uint8Array): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: String, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: String): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: Any, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */ - -external fun sign(msgh: String, priv: Any): Signature /* Signature & `T$2` */ - -external interface SigLike { - var r: BN - var s: BN -} - -external interface `T$1` { - var lowS: Boolean? - get() = definedExternally - set(value) = definedExternally -} - -external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: Uint8Array): Boolean - -external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: String): Boolean - -external fun verify(sig: Uint8Array, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: Uint8Array, msgh: String, pub: Uint8Array): Boolean - -external fun verify(sig: Uint8Array, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: Uint8Array, msgh: String, pub: String): Boolean - -external fun verify(sig: String, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: String, msgh: Uint8Array, pub: Uint8Array): Boolean - -external fun verify(sig: String, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: String, msgh: Uint8Array, pub: String): Boolean - -external fun verify(sig: String, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: String, msgh: String, pub: Uint8Array): Boolean - -external fun verify(sig: String, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: String, msgh: String, pub: String): Boolean - -external fun verify(sig: SigLike, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: SigLike, msgh: Uint8Array, pub: Uint8Array): Boolean - -external fun verify(sig: SigLike, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: SigLike, msgh: Uint8Array, pub: String): Boolean - -external fun verify(sig: SigLike, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: SigLike, msgh: String, pub: Uint8Array): Boolean - -external fun verify(sig: SigLike, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean - -external fun verify(sig: SigLike, msgh: String, pub: String): Boolean - -external fun getSharedSecret(privA: Uint8Array, pubB: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getSharedSecret(privA: Uint8Array, pubB: Uint8Array): Uint8Array - -external fun getSharedSecret(privA: Uint8Array, pubB: String, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getSharedSecret(privA: Uint8Array, pubB: String): Uint8Array - -external fun getSharedSecret(privA: String, pubB: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getSharedSecret(privA: String, pubB: Uint8Array): Uint8Array - -external fun getSharedSecret(privA: String, pubB: String, isCompressed: Boolean = definedExternally): Uint8Array - -external fun getSharedSecret(privA: String, pubB: String): Uint8Array - -external fun hashToPrivateKey(hash: Uint8Array): Uint8Array - -external fun hashToPrivateKey(hash: String): Uint8Array - -external object etc { - var hexToBytes: (hex: String) -> Uint8Array - var bytesToHex: (b: Uint8Array) -> String - var concatBytes: (arrs: Uint8Array) -> Uint8Array - var bytesToNumberBE: (b: Uint8Array) -> Any - var numberToBytesBE: (num: Any) -> Uint8Array - var mod: (a: Any, b: Any) -> Any - var invert: (num: Any, md: Any) -> Any - var hmacSha256Async: (key: Uint8Array, msgs: Uint8Array) -> Promise - var hmacSha256Sync: ((key: Uint8Array, msgs: Uint8Array) -> Uint8Array)? - var hashToPrivateKey: Any - var randomBytes: (len: BN) -> Uint8Array -} - -external object utils { - var normPrivateKeyToScalar: (p: dynamic /* Uint8Array | String | Any */) -> Any - var isValidPrivateKey: (key: dynamic /* Uint8Array | String */) -> Boolean - var randomPrivateKey: () -> Uint8Array - fun precompute(w: BN = definedExternally, p: Point = definedExternally): Point -} \ No newline at end of file diff --git a/base-symmetric-encryption/build.gradle.kts b/base-symmetric-encryption/build.gradle.kts deleted file mode 100644 index 8644853da..000000000 --- a/base-symmetric-encryption/build.gradle.kts +++ /dev/null @@ -1,194 +0,0 @@ -import org.gradle.internal.os.OperatingSystem -import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target - -val currentModuleName = "ApolloBaseSymmetricEncryption" -val os: OperatingSystem = OperatingSystem.current() - -plugins { - kotlin("multiplatform") - id("com.android.library") - id("org.jetbrains.dokka") -} - -kotlin { - android { - publishAllLibraryVariants() - } - jvm { - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - testRuns["test"].executionTask.configure { - useJUnitPlatform() - } - } - if (os.isMacOsX) { - ios() -// tvos() -// watchos() - iosSimulatorArm64() -// tvosSimulatorArm64() -// watchosSimulatorArm64() - macosArm64() - } -// if (os.isWindows) { -// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// mingwX64() -// } - js(IR) { - this.moduleName = currentModuleName - this.binaries.library() - this.useCommonJs() - generateTypeScriptDefinitions() - this.compilations["main"].packageJson { - this.version = rootProject.version.toString() - } - this.compilations["test"].packageJson { - this.version = rootProject.version.toString() - } - browser { - this.webpackTask { - this.output.library = currentModuleName - this.output.libraryTarget = Target.VAR - } - this.commonWebpackConfig { - } - this.testTask { - if (os.isWindows) { - this.enabled = false - } - this.useKarma { - this.useChromeHeadless() - } - } - } - nodejs { - this.testTask { - if (os.isWindows) { - this.enabled = false - } - this.useKarma { - this.useChromeHeadless() - } - } - } - } - - sourceSets { - val commonMain by getting { - dependencies { - implementation(project(":secure-random")) - implementation(project(":base64")) - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - val jvmMain by getting - val jvmTest by getting - val androidMain by getting - val androidTest by getting { - dependencies { - implementation("junit:junit:4.13.2") - } - } - val jsMain by getting { - dependencies { - implementation("org.jetbrains.kotlin-wrappers:kotlin-web:1.0.0-pre.461") - implementation("org.jetbrains.kotlin-wrappers:kotlin-node:18.11.13-pre.461") - } - } - val jsTest by getting - if (os.isMacOsX) { - val iosMain by getting - val iosTest by getting -// val tvosMain by getting -// val tvosTest by getting -// val watchosMain by getting -// val watchosTest by getting - val iosSimulatorArm64Main by getting { - this.dependsOn(iosMain) - } - val iosSimulatorArm64Test by getting { - this.dependsOn(iosTest) - } -// val tvosSimulatorArm64Main by getting { -// this.dependsOn(tvosMain) -// } -// val tvosSimulatorArm64Test by getting { -// this.dependsOn(tvosTest) -// } -// val watchosSimulatorArm64Main by getting { -// this.dependsOn(watchosMain) -// } -// val watchosSimulatorArm64Test by getting { -// this.dependsOn(watchosTest) -// } - val macosArm64Main by getting { - this.dependsOn(iosMain) - } - val macosArm64Test by getting { - this.dependsOn(iosTest) - } - } -// if (os.isWindows) { -// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// val mingwX64Main by getting -// val mingwX64Test by getting -// } - } - - if (os.isMacOsX) { - tasks.getByName("iosX64Test") { - device.set("iPhone 14 Plus") - } - tasks.getByName("iosSimulatorArm64Test") { - device.set("iPhone 14 Plus") - } - } -} - -android { - compileSdk = 32 - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - defaultConfig { - minSdk = 21 - targetSdk = 32 - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - /** - * Because Software Components will not be created automatically for Maven publishing from - * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android. - * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new - * publishing DSL. - */ - publishing { - multipleVariants { - withSourcesJar() - withJavadocJar() - allVariants() - } - } -} - -// Dokka implementation -tasks.withType { - moduleName.set(project.name) - moduleVersion.set(rootProject.version.toString()) - description = "This is a Kotlin Multiplatform Library for Base Symmetric Encryption" - dokkaSourceSets { - // TODO: Figure out how to include files to the documentations - named("commonMain") { - includes.from("Module.md", "docs/Module.md") - } - } -} diff --git a/base-symmetric-encryption/src/androidMain/AndroidManifest.xml b/base-symmetric-encryption/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 1ddfad099..000000000 --- a/base-symmetric-encryption/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt deleted file mode 100644 index b8a637ba7..000000000 --- a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes -import io.iohk.atala.prism.apollo.base64.base64PadEncoded -import javax.crypto.SecretKey -import javax.crypto.spec.SecretKeySpec - -actual open class KMMSymmetricKey(val nativeType: SecretKey) : SymmetricKeyBase64Export { - override fun exportToBase64(): String { - return nativeType.encoded.base64PadEncoded - } - - actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration { - override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey { - val decodedKey = base64Encoded.base64PadDecodedBytes - val originalKey: SecretKey = SecretKeySpec(decodedKey, 0, decodedKey.size, algorithm.value) - return KMMSymmetricKey(originalKey) - } - } -} diff --git a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt deleted file mode 100644 index 9edaf17a9..000000000 --- a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -actual enum class SymmetricKeyType(val value: String) { - AES("AES"); -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt deleted file mode 100644 index b917c91d3..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadEncoded - -interface IVBase64Export { - /** - * Export IV to Base64 standard with padding - * - * @param iv iv value to convert to Base64 standard with padding - */ - fun exportToBase64(iv: ByteArray): String { - return iv.base64PadEncoded - } -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt deleted file mode 100644 index ed237bec9..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes - -interface IVBase64Import { - /** - * Create an IV from Base64 standard with padding - * - * @param base64Encoded Base64 standard with padding value to convert to IV - */ - fun createIVFromBase64(base64Encoded: String): ByteArray { - return base64Encoded.base64PadDecodedBytes - } -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt deleted file mode 100644 index 04ac31aee..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.securerandom.SecureRandom - -interface IVGeneration { - /** - * Generate random data with specified size - * - * @param size the size of the random generated data - */ - fun createRandomIV(size: Int): ByteArray = SecureRandom().nextBytes(size) -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt deleted file mode 100644 index 730dd2d33..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -expect open class KMMSymmetricKey : SymmetricKeyBase64Export { - companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt deleted file mode 100644 index 998529672..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -public interface SymmetricKeyBase64Export { - /** - * export [KMMSymmetricKey] to Base64 standard with padding - */ - fun exportToBase64(): String -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt deleted file mode 100644 index a7a38964d..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -public interface SymmetricKeyBase64Import { - /** - * Create an instance of [KMMSymmetricKey] from a Base64 standard with padding encoded key - * - * @param base64Encoded a Base64 standard with padding encoded key value - * @param algorithm algorithm type supported - */ - fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey -} diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt deleted file mode 100644 index bf30bff06..000000000 --- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -expect enum class SymmetricKeyType { - AES -} diff --git a/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt b/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt deleted file mode 100644 index edc19840b..000000000 --- a/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import kotlin.test.Test -import kotlin.test.assertEquals - -class KMMSymmetricKeyTests { - @Test - fun test() { - assertEquals(1, 1) - } -} diff --git a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt deleted file mode 100644 index 800149c9e..000000000 --- a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes -import io.iohk.atala.prism.apollo.base64.base64PadEncoded -import platform.Foundation.NSData - -actual open class KMMSymmetricKey(val nativeValue: NSData) : SymmetricKeyBase64Export { - override fun exportToBase64(): String { - return nativeValue.toByteArray().base64PadEncoded - } - - actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration { - override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey { - return KMMSymmetricKey(base64Encoded.base64PadDecodedBytes.toNSData()) - } - } -} diff --git a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt deleted file mode 100644 index ff0e79f15..000000000 --- a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -actual enum class SymmetricKeyType { - AES -} diff --git a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt deleted file mode 100644 index 588581a91..000000000 --- a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes -import io.iohk.atala.prism.apollo.base64.base64PadEncoded - -@OptIn(ExperimentalJsExport::class) -@JsExport -actual open class KMMSymmetricKey(val nativeValue: ByteArray) : SymmetricKeyBase64Export { - override fun exportToBase64(): String { - return nativeValue.base64PadEncoded - } - - actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration { - override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey { - return KMMSymmetricKey(base64Encoded.base64PadDecodedBytes) - } - } -} diff --git a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt deleted file mode 100644 index 88bf48f70..000000000 --- a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -@OptIn(ExperimentalJsExport::class) -@JsExport -actual enum class SymmetricKeyType { - AES; -} diff --git a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt deleted file mode 100644 index b8a637ba7..000000000 --- a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt +++ /dev/null @@ -1,20 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes -import io.iohk.atala.prism.apollo.base64.base64PadEncoded -import javax.crypto.SecretKey -import javax.crypto.spec.SecretKeySpec - -actual open class KMMSymmetricKey(val nativeType: SecretKey) : SymmetricKeyBase64Export { - override fun exportToBase64(): String { - return nativeType.encoded.base64PadEncoded - } - - actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration { - override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey { - val decodedKey = base64Encoded.base64PadDecodedBytes - val originalKey: SecretKey = SecretKeySpec(decodedKey, 0, decodedKey.size, algorithm.value) - return KMMSymmetricKey(originalKey) - } - } -} diff --git a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt deleted file mode 100644 index 9edaf17a9..000000000 --- a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.iohk.atala.prism.apollo.utils - -actual enum class SymmetricKeyType(val value: String) { - AES("AES"); -} diff --git a/build.gradle.kts b/build.gradle.kts index bcce562a9..e6be2fa3b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin plugins { id("org.jetbrains.dokka") version "1.7.10" - id("org.jlleitschuh.gradle.ktlint") version "11.0.0" + id("org.jlleitschuh.gradle.ktlint") version "11.6.1" id("maven-publish") id("org.jetbrains.kotlinx.kover") version "0.7.2" } @@ -17,11 +17,9 @@ buildscript { dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20") classpath("com.android.tools.build:gradle:7.2.2") - // classpath("org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21") } } -version = "1.0.2" group = "io.iohk.atala.prism.apollo" dependencies { @@ -34,11 +32,10 @@ dependencies { kover(project(":base64")) kover(project(":multibase")) kover(project(":utils")) - kover(project(":base-symmetric-encryption")) + kover(project(":cryptography")) kover(project(":secure-random")) // kover(project(":aes")) - kover(project(":base-asymmetric-encryption")) -// kover(project(":rsa")) + // kover(project(":rsa")) // kover(project(":ecdsa")) kover(project(":varint")) // kover(project(":jose")) @@ -47,7 +44,6 @@ dependencies { } allprojects { - version = "1.0.2" group = "io.iohk.atala.prism.apollo" repositories { diff --git a/base-asymmetric-encryption/build.gradle.kts b/cryptography/build.gradle.kts similarity index 83% rename from base-asymmetric-encryption/build.gradle.kts rename to cryptography/build.gradle.kts index a23967f46..30692ee5a 100644 --- a/base-asymmetric-encryption/build.gradle.kts +++ b/cryptography/build.gradle.kts @@ -1,17 +1,14 @@ -import dev.petuska.npm.publish.extension.domain.NpmAccess import org.gradle.internal.os.OperatingSystem import org.jetbrains.dokka.gradle.DokkaTask import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target -val currentModuleName = "ApolloBaseAsymmetricEncryption" +val currentModuleName = "Cryptography" val os: OperatingSystem = OperatingSystem.current() plugins { kotlin("multiplatform") - id("io.github.luca992.multiplatform-swiftpackage") version "2.0.5-arm64" id("com.android.library") id("org.jetbrains.dokka") - id("dev.petuska.npm.publish") version "3.4.1" } kotlin { @@ -116,16 +113,6 @@ kotlin { } } - multiplatformSwiftPackage { - packageName("Apollo") - swiftToolsVersion("5.3") - targetPlatforms { - iOS { v("13") } - macOS { v("11") } - } - outputDirectory(File(rootDir, "base-asymmetric-encryption/build/packages/ApolloSwift")) - } - sourceSets { val commonMain by getting { dependencies { @@ -150,14 +137,7 @@ kotlin { dependencies { api("fr.acinq.secp256k1:secp256k1-kmp:0.9.0") } - val target = - when { - os.isLinux -> "linux" - os.isMacOsX -> "darwin" - os.isWindows -> "mingw" - else -> error("Unsupported OS $os") - } - implementation("fr.acinq.secp256k1:secp256k1-kmp-jni-jvm-$target:0.9.0") + implementation("fr.acinq.secp256k1:secp256k1-kmp-jni-jvm:0.9.0") implementation("com.google.guava:guava:30.1-jre") implementation("org.bouncycastle:bcprov-jdk15on:1.68") } @@ -183,7 +163,7 @@ kotlin { implementation(npm("elliptic", "6.5.4")) implementation(npm("@types/elliptic", "6.4.14")) - implementation(npm("@noble/secp256k1", "2.0.0")) + implementation(npm("@noble/curves", "1.2.0")) implementation(npm("@stablelib/x25519", "1.0.3")) // Polyfill dependencies @@ -287,33 +267,3 @@ ktlint { exclude { projectDir.toURI().relativize(it.file.toURI()).path.contains("/external/") } } } - -npmPublish { - organization.set("input-output-hk") - version.set(project.version.toString()) - access.set(NpmAccess.PUBLIC) - packages { - access.set(NpmAccess.PUBLIC) - named("js") { - scope.set("input-output-hk") - packageName.set("apollo") - packageJson { - author { - name.set("IOG") - } - repository { - type.set("git") - url.set("https://github.com/input-output-hk/atala-prism-apollo.git") - } - } - } - } - registries { - access.set(NpmAccess.PUBLIC) - github { - uri.set("https://npm.pkg.github.com/") - access.set(NpmAccess.PUBLIC) - this.authToken.set(System.getenv("ATALA_GITHUB_TOKEN")) - } - } -} diff --git a/base-asymmetric-encryption/src/androidMain/AndroidManifest.xml b/cryptography/src/androidMain/AndroidManifest.xml similarity index 100% rename from base-asymmetric-encryption/src/androidMain/AndroidManifest.xml rename to cryptography/src/androidMain/AndroidManifest.xml diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt similarity index 97% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt index 4e40ea7ad..a768cf944 100644 --- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt +++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt @@ -17,7 +17,7 @@ actual class KMMEdKeyPair actual constructor( val pair = generator.generateKeyPair() return KMMEdKeyPair( privateKey = KMMEdPrivateKey((pair.private as Ed25519PrivateKeyParameters).encoded), - publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded), + publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded) ) } } diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt similarity index 99% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt index acceabf0f..d993f4e55 100644 --- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt +++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt @@ -4,7 +4,6 @@ import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters import org.bouncycastle.crypto.signers.Ed25519Signer actual class KMMEdPrivateKey(val raw: ByteArray) { - fun publicKey(): KMMEdPublicKey { val private = Ed25519PrivateKeyParameters(raw, 0) val public = private.generatePublicKey() diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt similarity index 99% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt index e0ce7c12f..592c60384 100644 --- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt +++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt @@ -5,7 +5,6 @@ import java.security.SecureRandom actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) { actual companion object : RSAKeyPairGeneration { - @JvmStatic override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair { val keyPairGen = KeyPairGenerator.getInstance(algorithm.nativeValue()) diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt similarity index 99% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt index 1067ed504..78da76f87 100644 --- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt +++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt @@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils import org.bouncycastle.crypto.params.X25519PrivateKeyParameters actual class KMMX25519PrivateKey(val raw: ByteArray) { - fun publicKey(): KMMX25519PublicKey { val private = X25519PrivateKeyParameters(raw, 0) val public = private.generatePublicKey() diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt similarity index 100% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt similarity index 99% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt index 368847040..d2a9d602b 100644 --- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt +++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt @@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils actual interface RSAKeyPairGeneration { suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair + suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair } diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt similarity index 81% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt index b1324d51d..1a7cb91d2 100644 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt @@ -71,7 +71,6 @@ class HDKey( val depth: Int = 0, val childIndex: BigIntegerWrapper = BigIntegerWrapper(0) ) { - @JsName("InitFromSeed") constructor(seed: ByteArray, depth: Int, childIndex: BigIntegerWrapper) : this( privateKey = sha512(key = "Bitcoin seed".encodeToByteArray(), input = seed).sliceArray(IntRange(0, 31)), @@ -136,40 +135,40 @@ class HDKey( throw Exception("No chainCode set") } - val data = if (index >= HARDENED_OFFSET) { - val priv = privateKey ?: throw Error("Could not derive hardened child key") - byteArrayOf(0) + priv + index.toByteArray() - } else { - throw Exception("Not supported") - } + val data = + if (index >= HARDENED_OFFSET) { + val priv = privateKey ?: throw Error("Could not derive hardened child key") + byteArrayOf(0) + priv + index.toByteArray() + } else { + throw Exception("Not supported") + } - val I = sha512(chainCode, data) - val childTweak = I.sliceArray(IntRange(0, 31)) - val newChainCode = I.sliceArray(32 until I.size) + val i = sha512(chainCode, data) + val childTweak = i.sliceArray(IntRange(0, 31)) + val newChainCode = i.sliceArray(32 until i.size) if (!isValidPrivateKey(childTweak)) { - throw ECPrivateKeyDecodingException("Expected encoded byte length to be ${ECConfig.PRIVATE_KEY_BYTE_SIZE}, but got ${data.size}") + throw ECPrivateKeyDecodingException( + "Expected encoded byte length to be ${ECConfig.PRIVATE_KEY_BYTE_SIZE}, but got ${data.size}" + ) } - val opt = HDKeyOptions( - versions = Pair(BITCOIN_VERSIONS_PRIVATE, BITCOIN_VERSIONS_PUBLIC), - chainCode = newChainCode, - depth = depth + 1, - parentFingerprint = null, - index = index - ) - - return try { - opt.privateKey = KMMECSecp256k1PrivateKey.tweak(privateKey, childTweak).raw - return HDKey( - privateKey = opt.privateKey, - chainCode = opt.chainCode, - depth = opt.depth, - childIndex = BigIntegerWrapper(opt.index) + val opt = + HDKeyOptions( + versions = Pair(BITCOIN_VERSIONS_PRIVATE, BITCOIN_VERSIONS_PUBLIC), + chainCode = newChainCode, + depth = depth + 1, + parentFingerprint = null, + index = index ) - } catch (err: Error) { - this.deriveChild(BigIntegerWrapper(index + 1)) - } + + opt.privateKey = KMMECSecp256k1PrivateKey.tweak(privateKey, childTweak).raw + return HDKey( + privateKey = opt.privateKey, + chainCode = opt.chainCode, + depth = opt.depth, + childIndex = BigIntegerWrapper(opt.index) + ) } /** diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt similarity index 99% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt index ac728ebf5..cd3a71102 100644 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt @@ -2050,6 +2050,6 @@ internal object MnemonicCodeEnglish { "zebra", "zero", "zone", - "zoo", + "zoo" ) } diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt similarity index 99% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt index a61cfcaf4..73dc47640 100644 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt @@ -2,9 +2,13 @@ package io.iohk.atala.prism.apollo.secp256k1 expect class Secp256k1Lib constructor() { fun createPublicKey(privateKey: ByteArray, compressed: Boolean): ByteArray + fun derivePrivateKey(privateKeyBytes: ByteArray, derivedPrivateKeyBytes: ByteArray): ByteArray? + fun sign(privateKey: ByteArray, data: ByteArray): ByteArray + fun verify(publicKey: ByteArray, signature: ByteArray, data: ByteArray): Boolean + fun uncompressPublicKey(compressed: ByteArray): ByteArray fun compressPublicKey(uncompressed: ByteArray): ByteArray diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt similarity index 91% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt index d1bd9d581..e924c6836 100644 --- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt @@ -2,5 +2,5 @@ package io.iohk.atala.prism.apollo.utils expect final enum class RSAAsymmetricAlgorithm : NativeTypeInterface { RSA, - RSAPSS; + RSAPSS } diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt similarity index 100% rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt new file mode 100644 index 000000000..f4b6885fd --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeCzech { + val wordList: List = + listOf( + "abdikace", + "abeceda", + "adresa", + "agrese", + "akce", + "aktovka", + "alej", + "alkohol", + "amputace", + "ananas", + "andulka", + "anekdota", + "anketa", + "antika", + "anulovat", + "archa", + "arogance", + "asfalt", + "asistent", + "aspirace", + "astma", + "astronom", + "atlas", + "atletika", + "atol", + "autobus", + "azyl", + "babka", + "bachor", + "bacil", + "baculka", + "badatel", + "bageta", + "bagr", + "bahno", + "bakterie", + "balada", + "baletka", + "balkon", + "balonek", + "balvan", + "balza", + "bambus", + "bankomat", + "barbar", + "baret", + "barman", + "baroko", + "barva", + "baterka", + "batoh", + "bavlna", + "bazalka", + "bazilika", + "bazuka", + "bedna", + "beran", + "beseda", + "bestie", + "beton", + "bezinka", + "bezmoc", + "beztak", + "bicykl", + "bidlo", + "biftek", + "bikiny", + "bilance", + "biograf", + "biolog", + "bitva", + "bizon", + "blahobyt", + "blatouch", + "blecha", + "bledule", + "blesk", + "blikat", + "blizna", + "blokovat", + "bloudit", + "blud", + "bobek", + "bobr", + "bodlina", + "bodnout", + "bohatost", + "bojkot", + "bojovat", + "bokorys", + "bolest", + "borec", + "borovice", + "bota", + "boubel", + "bouchat", + "bouda", + "boule", + "bourat", + "boxer", + "bradavka", + "brambora", + "branka", + "bratr", + "brepta", + "briketa", + "brko", + "brloh", + "bronz", + "broskev", + "brunetka", + "brusinka", + "brzda", + "brzy", + "bublina", + "bubnovat", + "buchta", + "buditel", + "budka", + "budova", + "bufet", + "bujarost", + "bukvice", + "buldok", + "bulva", + "bunda", + "bunkr", + "burza", + "butik", + "buvol", + "buzola", + "bydlet", + "bylina", + "bytovka", + "bzukot", + "capart", + "carevna", + "cedr", + "cedule", + "cejch", + "cejn", + "cela", + "celer", + "celkem", + "celnice", + "cenina", + "cennost", + "cenovka", + "centrum", + "cenzor", + "cestopis", + "cetka", + "chalupa", + "chapadlo", + "charita", + "chata", + "chechtat", + "chemie", + "chichot", + "chirurg", + "chlad", + "chleba", + "chlubit", + "chmel", + "chmura", + "chobot", + "chochol", + "chodba", + "cholera", + "chomout", + "chopit", + "choroba", + "chov", + "chrapot", + "chrlit", + "chrt", + "chrup", + "chtivost", + "chudina", + "chutnat", + "chvat", + "chvilka", + "chvost", + "chyba", + "chystat", + "chytit", + "cibule", + "cigareta", + "cihelna", + "cihla", + "cinkot", + "cirkus", + "cisterna", + "citace", + "citrus", + "cizinec", + "cizost", + "clona", + "cokoliv", + "couvat", + "ctitel", + "ctnost", + "cudnost", + "cuketa", + "cukr", + "cupot", + "cvaknout", + "cval", + "cvik", + "cvrkot", + "cyklista", + "daleko", + "dareba", + "datel", + "datum", + "dcera", + "debata", + "dechovka", + "decibel", + "deficit", + "deflace", + "dekl", + "dekret", + "demokrat", + "deprese", + "derby", + "deska", + "detektiv", + "dikobraz", + "diktovat", + "dioda", + "diplom", + "disk", + "displej", + "divadlo", + "divoch", + "dlaha", + "dlouho", + "dluhopis", + "dnes", + "dobro", + "dobytek", + "docent", + "dochutit", + "dodnes", + "dohled", + "dohoda", + "dohra", + "dojem", + "dojnice", + "doklad", + "dokola", + "doktor", + "dokument", + "dolar", + "doleva", + "dolina", + "doma", + "dominant", + "domluvit", + "domov", + "donutit", + "dopad", + "dopis", + "doplnit", + "doposud", + "doprovod", + "dopustit", + "dorazit", + "dorost", + "dort", + "dosah", + "doslov", + "dostatek", + "dosud", + "dosyta", + "dotaz", + "dotek", + "dotknout", + "doufat", + "doutnat", + "dovozce", + "dozadu", + "doznat", + "dozorce", + "drahota", + "drak", + "dramatik", + "dravec", + "draze", + "drdol", + "drobnost", + "drogerie", + "drozd", + "drsnost", + "drtit", + "drzost", + "duben", + "duchovno", + "dudek", + "duha", + "duhovka", + "dusit", + "dusno", + "dutost", + "dvojice", + "dvorec", + "dynamit", + "ekolog", + "ekonomie", + "elektron", + "elipsa", + "email", + "emise", + "emoce", + "empatie", + "epizoda", + "epocha", + "epopej", + "epos", + "esej", + "esence", + "eskorta", + "eskymo", + "etiketa", + "euforie", + "evoluce", + "exekuce", + "exkurze", + "expedice", + "exploze", + "export", + "extrakt", + "facka", + "fajfka", + "fakulta", + "fanatik", + "fantazie", + "farmacie", + "favorit", + "fazole", + "federace", + "fejeton", + "fenka", + "fialka", + "figurant", + "filozof", + "filtr", + "finance", + "finta", + "fixace", + "fjord", + "flanel", + "flirt", + "flotila", + "fond", + "fosfor", + "fotbal", + "fotka", + "foton", + "frakce", + "freska", + "fronta", + "fukar", + "funkce", + "fyzika", + "galeje", + "garant", + "genetika", + "geolog", + "gilotina", + "glazura", + "glejt", + "golem", + "golfista", + "gotika", + "graf", + "gramofon", + "granule", + "grep", + "gril", + "grog", + "groteska", + "guma", + "hadice", + "hadr", + "hala", + "halenka", + "hanba", + "hanopis", + "harfa", + "harpuna", + "havran", + "hebkost", + "hejkal", + "hejno", + "hejtman", + "hektar", + "helma", + "hematom", + "herec", + "herna", + "heslo", + "hezky", + "historik", + "hladovka", + "hlasivky", + "hlava", + "hledat", + "hlen", + "hlodavec", + "hloh", + "hloupost", + "hltat", + "hlubina", + "hluchota", + "hmat", + "hmota", + "hmyz", + "hnis", + "hnojivo", + "hnout", + "hoblina", + "hoboj", + "hoch", + "hodiny", + "hodlat", + "hodnota", + "hodovat", + "hojnost", + "hokej", + "holinka", + "holka", + "holub", + "homole", + "honitba", + "honorace", + "horal", + "horda", + "horizont", + "horko", + "horlivec", + "hormon", + "hornina", + "horoskop", + "horstvo", + "hospoda", + "hostina", + "hotovost", + "houba", + "houf", + "houpat", + "houska", + "hovor", + "hradba", + "hranice", + "hravost", + "hrazda", + "hrbolek", + "hrdina", + "hrdlo", + "hrdost", + "hrnek", + "hrobka", + "hromada", + "hrot", + "hrouda", + "hrozen", + "hrstka", + "hrubost", + "hryzat", + "hubenost", + "hubnout", + "hudba", + "hukot", + "humr", + "husita", + "hustota", + "hvozd", + "hybnost", + "hydrant", + "hygiena", + "hymna", + "hysterik", + "idylka", + "ihned", + "ikona", + "iluze", + "imunita", + "infekce", + "inflace", + "inkaso", + "inovace", + "inspekce", + "internet", + "invalida", + "investor", + "inzerce", + "ironie", + "jablko", + "jachta", + "jahoda", + "jakmile", + "jakost", + "jalovec", + "jantar", + "jarmark", + "jaro", + "jasan", + "jasno", + "jatka", + "javor", + "jazyk", + "jedinec", + "jedle", + "jednatel", + "jehlan", + "jekot", + "jelen", + "jelito", + "jemnost", + "jenom", + "jepice", + "jeseter", + "jevit", + "jezdec", + "jezero", + "jinak", + "jindy", + "jinoch", + "jiskra", + "jistota", + "jitrnice", + "jizva", + "jmenovat", + "jogurt", + "jurta", + "kabaret", + "kabel", + "kabinet", + "kachna", + "kadet", + "kadidlo", + "kahan", + "kajak", + "kajuta", + "kakao", + "kaktus", + "kalamita", + "kalhoty", + "kalibr", + "kalnost", + "kamera", + "kamkoliv", + "kamna", + "kanibal", + "kanoe", + "kantor", + "kapalina", + "kapela", + "kapitola", + "kapka", + "kaple", + "kapota", + "kapr", + "kapusta", + "kapybara", + "karamel", + "karotka", + "karton", + "kasa", + "katalog", + "katedra", + "kauce", + "kauza", + "kavalec", + "kazajka", + "kazeta", + "kazivost", + "kdekoliv", + "kdesi", + "kedluben", + "kemp", + "keramika", + "kino", + "klacek", + "kladivo", + "klam", + "klapot", + "klasika", + "klaun", + "klec", + "klenba", + "klepat", + "klesnout", + "klid", + "klima", + "klisna", + "klobouk", + "klokan", + "klopa", + "kloub", + "klubovna", + "klusat", + "kluzkost", + "kmen", + "kmitat", + "kmotr", + "kniha", + "knot", + "koalice", + "koberec", + "kobka", + "kobliha", + "kobyla", + "kocour", + "kohout", + "kojenec", + "kokos", + "koktejl", + "kolaps", + "koleda", + "kolize", + "kolo", + "komando", + "kometa", + "komik", + "komnata", + "komora", + "kompas", + "komunita", + "konat", + "koncept", + "kondice", + "konec", + "konfese", + "kongres", + "konina", + "konkurs", + "kontakt", + "konzerva", + "kopanec", + "kopie", + "kopnout", + "koprovka", + "korbel", + "korektor", + "kormidlo", + "koroptev", + "korpus", + "koruna", + "koryto", + "korzet", + "kosatec", + "kostka", + "kotel", + "kotleta", + "kotoul", + "koukat", + "koupelna", + "kousek", + "kouzlo", + "kovboj", + "koza", + "kozoroh", + "krabice", + "krach", + "krajina", + "kralovat", + "krasopis", + "kravata", + "kredit", + "krejcar", + "kresba", + "kreveta", + "kriket", + "kritik", + "krize", + "krkavec", + "krmelec", + "krmivo", + "krocan", + "krok", + "kronika", + "kropit", + "kroupa", + "krovka", + "krtek", + "kruhadlo", + "krupice", + "krutost", + "krvinka", + "krychle", + "krypta", + "krystal", + "kryt", + "kudlanka", + "kufr", + "kujnost", + "kukla", + "kulajda", + "kulich", + "kulka", + "kulomet", + "kultura", + "kuna", + "kupodivu", + "kurt", + "kurzor", + "kutil", + "kvalita", + "kvasinka", + "kvestor", + "kynolog", + "kyselina", + "kytara", + "kytice", + "kytka", + "kytovec", + "kyvadlo", + "labrador", + "lachtan", + "ladnost", + "laik", + "lakomec", + "lamela", + "lampa", + "lanovka", + "lasice", + "laso", + "lastura", + "latinka", + "lavina", + "lebka", + "leckdy", + "leden", + "lednice", + "ledovka", + "ledvina", + "legenda", + "legie", + "legrace", + "lehce", + "lehkost", + "lehnout", + "lektvar", + "lenochod", + "lentilka", + "lepenka", + "lepidlo", + "letadlo", + "letec", + "letmo", + "letokruh", + "levhart", + "levitace", + "levobok", + "libra", + "lichotka", + "lidojed", + "lidskost", + "lihovina", + "lijavec", + "lilek", + "limetka", + "linie", + "linka", + "linoleum", + "listopad", + "litina", + "litovat", + "lobista", + "lodivod", + "logika", + "logoped", + "lokalita", + "loket", + "lomcovat", + "lopata", + "lopuch", + "lord", + "losos", + "lotr", + "loudal", + "louh", + "louka", + "louskat", + "lovec", + "lstivost", + "lucerna", + "lucifer", + "lump", + "lusk", + "lustrace", + "lvice", + "lyra", + "lyrika", + "lysina", + "madam", + "madlo", + "magistr", + "mahagon", + "majetek", + "majitel", + "majorita", + "makak", + "makovice", + "makrela", + "malba", + "malina", + "malovat", + "malvice", + "maminka", + "mandle", + "manko", + "marnost", + "masakr", + "maskot", + "masopust", + "matice", + "matrika", + "maturita", + "mazanec", + "mazivo", + "mazlit", + "mazurka", + "mdloba", + "mechanik", + "meditace", + "medovina", + "melasa", + "meloun", + "mentolka", + "metla", + "metoda", + "metr", + "mezera", + "migrace", + "mihnout", + "mihule", + "mikina", + "mikrofon", + "milenec", + "milimetr", + "milost", + "mimika", + "mincovna", + "minibar", + "minomet", + "minulost", + "miska", + "mistr", + "mixovat", + "mladost", + "mlha", + "mlhovina", + "mlok", + "mlsat", + "mluvit", + "mnich", + "mnohem", + "mobil", + "mocnost", + "modelka", + "modlitba", + "mohyla", + "mokro", + "molekula", + "momentka", + "monarcha", + "monokl", + "monstrum", + "montovat", + "monzun", + "mosaz", + "moskyt", + "most", + "motivace", + "motorka", + "motyka", + "moucha", + "moudrost", + "mozaika", + "mozek", + "mozol", + "mramor", + "mravenec", + "mrkev", + "mrtvola", + "mrzet", + "mrzutost", + "mstitel", + "mudrc", + "muflon", + "mulat", + "mumie", + "munice", + "muset", + "mutace", + "muzeum", + "muzikant", + "myslivec", + "mzda", + "nabourat", + "nachytat", + "nadace", + "nadbytek", + "nadhoz", + "nadobro", + "nadpis", + "nahlas", + "nahnat", + "nahodile", + "nahradit", + "naivita", + "najednou", + "najisto", + "najmout", + "naklonit", + "nakonec", + "nakrmit", + "nalevo", + "namazat", + "namluvit", + "nanometr", + "naoko", + "naopak", + "naostro", + "napadat", + "napevno", + "naplnit", + "napnout", + "naposled", + "naprosto", + "narodit", + "naruby", + "narychlo", + "nasadit", + "nasekat", + "naslepo", + "nastat", + "natolik", + "navenek", + "navrch", + "navzdory", + "nazvat", + "nebe", + "nechat", + "necky", + "nedaleko", + "nedbat", + "neduh", + "negace", + "nehet", + "nehoda", + "nejen", + "nejprve", + "neklid", + "nelibost", + "nemilost", + "nemoc", + "neochota", + "neonka", + "nepokoj", + "nerost", + "nerv", + "nesmysl", + "nesoulad", + "netvor", + "neuron", + "nevina", + "nezvykle", + "nicota", + "nijak", + "nikam", + "nikdy", + "nikl", + "nikterak", + "nitro", + "nocleh", + "nohavice", + "nominace", + "nora", + "norek", + "nositel", + "nosnost", + "nouze", + "noviny", + "novota", + "nozdra", + "nuda", + "nudle", + "nuget", + "nutit", + "nutnost", + "nutrie", + "nymfa", + "obal", + "obarvit", + "obava", + "obdiv", + "obec", + "obehnat", + "obejmout", + "obezita", + "obhajoba", + "obilnice", + "objasnit", + "objekt", + "obklopit", + "oblast", + "oblek", + "obliba", + "obloha", + "obluda", + "obnos", + "obohatit", + "obojek", + "obout", + "obrazec", + "obrna", + "obruba", + "obrys", + "obsah", + "obsluha", + "obstarat", + "obuv", + "obvaz", + "obvinit", + "obvod", + "obvykle", + "obyvatel", + "obzor", + "ocas", + "ocel", + "ocenit", + "ochladit", + "ochota", + "ochrana", + "ocitnout", + "odboj", + "odbyt", + "odchod", + "odcizit", + "odebrat", + "odeslat", + "odevzdat", + "odezva", + "odhadce", + "odhodit", + "odjet", + "odjinud", + "odkaz", + "odkoupit", + "odliv", + "odluka", + "odmlka", + "odolnost", + "odpad", + "odpis", + "odplout", + "odpor", + "odpustit", + "odpykat", + "odrazka", + "odsoudit", + "odstup", + "odsun", + "odtok", + "odtud", + "odvaha", + "odveta", + "odvolat", + "odvracet", + "odznak", + "ofina", + "ofsajd", + "ohlas", + "ohnisko", + "ohrada", + "ohrozit", + "ohryzek", + "okap", + "okenice", + "oklika", + "okno", + "okouzlit", + "okovy", + "okrasa", + "okres", + "okrsek", + "okruh", + "okupant", + "okurka", + "okusit", + "olejnina", + "olizovat", + "omak", + "omeleta", + "omezit", + "omladina", + "omlouvat", + "omluva", + "omyl", + "onehdy", + "opakovat", + "opasek", + "operace", + "opice", + "opilost", + "opisovat", + "opora", + "opozice", + "opravdu", + "oproti", + "orbital", + "orchestr", + "orgie", + "orlice", + "orloj", + "ortel", + "osada", + "oschnout", + "osika", + "osivo", + "oslava", + "oslepit", + "oslnit", + "oslovit", + "osnova", + "osoba", + "osolit", + "ospalec", + "osten", + "ostraha", + "ostuda", + "ostych", + "osvojit", + "oteplit", + "otisk", + "otop", + "otrhat", + "otrlost", + "otrok", + "otruby", + "otvor", + "ovanout", + "ovar", + "oves", + "ovlivnit", + "ovoce", + "oxid", + "ozdoba", + "pachatel", + "pacient", + "padouch", + "pahorek", + "pakt", + "palanda", + "palec", + "palivo", + "paluba", + "pamflet", + "pamlsek", + "panenka", + "panika", + "panna", + "panovat", + "panstvo", + "pantofle", + "paprika", + "parketa", + "parodie", + "parta", + "paruka", + "paryba", + "paseka", + "pasivita", + "pastelka", + "patent", + "patrona", + "pavouk", + "pazneht", + "pazourek", + "pecka", + "pedagog", + "pejsek", + "peklo", + "peloton", + "penalta", + "pendrek", + "penze", + "periskop", + "pero", + "pestrost", + "petarda", + "petice", + "petrolej", + "pevnina", + "pexeso", + "pianista", + "piha", + "pijavice", + "pikle", + "piknik", + "pilina", + "pilnost", + "pilulka", + "pinzeta", + "pipeta", + "pisatel", + "pistole", + "pitevna", + "pivnice", + "pivovar", + "placenta", + "plakat", + "plamen", + "planeta", + "plastika", + "platit", + "plavidlo", + "plaz", + "plech", + "plemeno", + "plenta", + "ples", + "pletivo", + "plevel", + "plivat", + "plnit", + "plno", + "plocha", + "plodina", + "plomba", + "plout", + "pluk", + "plyn", + "pobavit", + "pobyt", + "pochod", + "pocit", + "poctivec", + "podat", + "podcenit", + "podepsat", + "podhled", + "podivit", + "podklad", + "podmanit", + "podnik", + "podoba", + "podpora", + "podraz", + "podstata", + "podvod", + "podzim", + "poezie", + "pohanka", + "pohnutka", + "pohovor", + "pohroma", + "pohyb", + "pointa", + "pojistka", + "pojmout", + "pokazit", + "pokles", + "pokoj", + "pokrok", + "pokuta", + "pokyn", + "poledne", + "polibek", + "polknout", + "poloha", + "polynom", + "pomalu", + "pominout", + "pomlka", + "pomoc", + "pomsta", + "pomyslet", + "ponechat", + "ponorka", + "ponurost", + "popadat", + "popel", + "popisek", + "poplach", + "poprosit", + "popsat", + "popud", + "poradce", + "porce", + "porod", + "porucha", + "poryv", + "posadit", + "posed", + "posila", + "poskok", + "poslanec", + "posoudit", + "pospolu", + "postava", + "posudek", + "posyp", + "potah", + "potkan", + "potlesk", + "potomek", + "potrava", + "potupa", + "potvora", + "poukaz", + "pouto", + "pouzdro", + "povaha", + "povidla", + "povlak", + "povoz", + "povrch", + "povstat", + "povyk", + "povzdech", + "pozdrav", + "pozemek", + "poznatek", + "pozor", + "pozvat", + "pracovat", + "prahory", + "praktika", + "prales", + "praotec", + "praporek", + "prase", + "pravda", + "princip", + "prkno", + "probudit", + "procento", + "prodej", + "profese", + "prohra", + "projekt", + "prolomit", + "promile", + "pronikat", + "propad", + "prorok", + "prosba", + "proton", + "proutek", + "provaz", + "prskavka", + "prsten", + "prudkost", + "prut", + "prvek", + "prvohory", + "psanec", + "psovod", + "pstruh", + "ptactvo", + "puberta", + "puch", + "pudl", + "pukavec", + "puklina", + "pukrle", + "pult", + "pumpa", + "punc", + "pupen", + "pusa", + "pusinka", + "pustina", + "putovat", + "putyka", + "pyramida", + "pysk", + "pytel", + "racek", + "rachot", + "radiace", + "radnice", + "radon", + "raft", + "ragby", + "raketa", + "rakovina", + "rameno", + "rampouch", + "rande", + "rarach", + "rarita", + "rasovna", + "rastr", + "ratolest", + "razance", + "razidlo", + "reagovat", + "reakce", + "recept", + "redaktor", + "referent", + "reflex", + "rejnok", + "reklama", + "rekord", + "rekrut", + "rektor", + "reputace", + "revize", + "revma", + "revolver", + "rezerva", + "riskovat", + "riziko", + "robotika", + "rodokmen", + "rohovka", + "rokle", + "rokoko", + "romaneto", + "ropovod", + "ropucha", + "rorejs", + "rosol", + "rostlina", + "rotmistr", + "rotoped", + "rotunda", + "roubenka", + "roucho", + "roup", + "roura", + "rovina", + "rovnice", + "rozbor", + "rozchod", + "rozdat", + "rozeznat", + "rozhodce", + "rozinka", + "rozjezd", + "rozkaz", + "rozloha", + "rozmar", + "rozpad", + "rozruch", + "rozsah", + "roztok", + "rozum", + "rozvod", + "rubrika", + "ruchadlo", + "rukavice", + "rukopis", + "ryba", + "rybolov", + "rychlost", + "rydlo", + "rypadlo", + "rytina", + "ryzost", + "sadista", + "sahat", + "sako", + "samec", + "samizdat", + "samota", + "sanitka", + "sardinka", + "sasanka", + "satelit", + "sazba", + "sazenice", + "sbor", + "schovat", + "sebranka", + "secese", + "sedadlo", + "sediment", + "sedlo", + "sehnat", + "sejmout", + "sekera", + "sekta", + "sekunda", + "sekvoje", + "semeno", + "seno", + "servis", + "sesadit", + "seshora", + "seskok", + "seslat", + "sestra", + "sesuv", + "sesypat", + "setba", + "setina", + "setkat", + "setnout", + "setrvat", + "sever", + "seznam", + "shoda", + "shrnout", + "sifon", + "silnice", + "sirka", + "sirotek", + "sirup", + "situace", + "skafandr", + "skalisko", + "skanzen", + "skaut", + "skeptik", + "skica", + "skladba", + "sklenice", + "sklo", + "skluz", + "skoba", + "skokan", + "skoro", + "skripta", + "skrz", + "skupina", + "skvost", + "skvrna", + "slabika", + "sladidlo", + "slanina", + "slast", + "slavnost", + "sledovat", + "slepec", + "sleva", + "slezina", + "slib", + "slina", + "sliznice", + "slon", + "sloupek", + "slovo", + "sluch", + "sluha", + "slunce", + "slupka", + "slza", + "smaragd", + "smetana", + "smilstvo", + "smlouva", + "smog", + "smrad", + "smrk", + "smrtka", + "smutek", + "smysl", + "snad", + "snaha", + "snob", + "sobota", + "socha", + "sodovka", + "sokol", + "sopka", + "sotva", + "souboj", + "soucit", + "soudce", + "souhlas", + "soulad", + "soumrak", + "souprava", + "soused", + "soutok", + "souviset", + "spalovna", + "spasitel", + "spis", + "splav", + "spodek", + "spojenec", + "spolu", + "sponzor", + "spornost", + "spousta", + "sprcha", + "spustit", + "sranda", + "sraz", + "srdce", + "srna", + "srnec", + "srovnat", + "srpen", + "srst", + "srub", + "stanice", + "starosta", + "statika", + "stavba", + "stehno", + "stezka", + "stodola", + "stolek", + "stopa", + "storno", + "stoupat", + "strach", + "stres", + "strhnout", + "strom", + "struna", + "studna", + "stupnice", + "stvol", + "styk", + "subjekt", + "subtropy", + "suchar", + "sudost", + "sukno", + "sundat", + "sunout", + "surikata", + "surovina", + "svah", + "svalstvo", + "svetr", + "svatba", + "svazek", + "svisle", + "svitek", + "svoboda", + "svodidlo", + "svorka", + "svrab", + "sykavka", + "sykot", + "synek", + "synovec", + "sypat", + "sypkost", + "syrovost", + "sysel", + "sytost", + "tabletka", + "tabule", + "tahoun", + "tajemno", + "tajfun", + "tajga", + "tajit", + "tajnost", + "taktika", + "tamhle", + "tampon", + "tancovat", + "tanec", + "tanker", + "tapeta", + "tavenina", + "tazatel", + "technika", + "tehdy", + "tekutina", + "telefon", + "temnota", + "tendence", + "tenista", + "tenor", + "teplota", + "tepna", + "teprve", + "terapie", + "termoska", + "textil", + "ticho", + "tiskopis", + "titulek", + "tkadlec", + "tkanina", + "tlapka", + "tleskat", + "tlukot", + "tlupa", + "tmel", + "toaleta", + "topinka", + "topol", + "torzo", + "touha", + "toulec", + "tradice", + "traktor", + "tramp", + "trasa", + "traverza", + "trefit", + "trest", + "trezor", + "trhavina", + "trhlina", + "trochu", + "trojice", + "troska", + "trouba", + "trpce", + "trpitel", + "trpkost", + "trubec", + "truchlit", + "truhlice", + "trus", + "trvat", + "tudy", + "tuhnout", + "tuhost", + "tundra", + "turista", + "turnaj", + "tuzemsko", + "tvaroh", + "tvorba", + "tvrdost", + "tvrz", + "tygr", + "tykev", + "ubohost", + "uboze", + "ubrat", + "ubrousek", + "ubrus", + "ubytovna", + "ucho", + "uctivost", + "udivit", + "uhradit", + "ujednat", + "ujistit", + "ujmout", + "ukazatel", + "uklidnit", + "uklonit", + "ukotvit", + "ukrojit", + "ulice", + "ulita", + "ulovit", + "umyvadlo", + "unavit", + "uniforma", + "uniknout", + "upadnout", + "uplatnit", + "uplynout", + "upoutat", + "upravit", + "uran", + "urazit", + "usednout", + "usilovat", + "usmrtit", + "usnadnit", + "usnout", + "usoudit", + "ustlat", + "ustrnout", + "utahovat", + "utkat", + "utlumit", + "utonout", + "utopenec", + "utrousit", + "uvalit", + "uvolnit", + "uvozovka", + "uzdravit", + "uzel", + "uzenina", + "uzlina", + "uznat", + "vagon", + "valcha", + "valoun", + "vana", + "vandal", + "vanilka", + "varan", + "varhany", + "varovat", + "vcelku", + "vchod", + "vdova", + "vedro", + "vegetace", + "vejce", + "velbloud", + "veletrh", + "velitel", + "velmoc", + "velryba", + "venkov", + "veranda", + "verze", + "veselka", + "veskrze", + "vesnice", + "vespodu", + "vesta", + "veterina", + "veverka", + "vibrace", + "vichr", + "videohra", + "vidina", + "vidle", + "vila", + "vinice", + "viset", + "vitalita", + "vize", + "vizitka", + "vjezd", + "vklad", + "vkus", + "vlajka", + "vlak", + "vlasec", + "vlevo", + "vlhkost", + "vliv", + "vlnovka", + "vloupat", + "vnucovat", + "vnuk", + "voda", + "vodivost", + "vodoznak", + "vodstvo", + "vojensky", + "vojna", + "vojsko", + "volant", + "volba", + "volit", + "volno", + "voskovka", + "vozidlo", + "vozovna", + "vpravo", + "vrabec", + "vracet", + "vrah", + "vrata", + "vrba", + "vrcholek", + "vrhat", + "vrstva", + "vrtule", + "vsadit", + "vstoupit", + "vstup", + "vtip", + "vybavit", + "vybrat", + "vychovat", + "vydat", + "vydra", + "vyfotit", + "vyhledat", + "vyhnout", + "vyhodit", + "vyhradit", + "vyhubit", + "vyjasnit", + "vyjet", + "vyjmout", + "vyklopit", + "vykonat", + "vylekat", + "vymazat", + "vymezit", + "vymizet", + "vymyslet", + "vynechat", + "vynikat", + "vynutit", + "vypadat", + "vyplatit", + "vypravit", + "vypustit", + "vyrazit", + "vyrovnat", + "vyrvat", + "vyslovit", + "vysoko", + "vystavit", + "vysunout", + "vysypat", + "vytasit", + "vytesat", + "vytratit", + "vyvinout", + "vyvolat", + "vyvrhel", + "vyzdobit", + "vyznat", + "vzadu", + "vzbudit", + "vzchopit", + "vzdor", + "vzduch", + "vzdychat", + "vzestup", + "vzhledem", + "vzkaz", + "vzlykat", + "vznik", + "vzorek", + "vzpoura", + "vztah", + "vztek", + "xylofon", + "zabrat", + "zabydlet", + "zachovat", + "zadarmo", + "zadusit", + "zafoukat", + "zahltit", + "zahodit", + "zahrada", + "zahynout", + "zajatec", + "zajet", + "zajistit", + "zaklepat", + "zakoupit", + "zalepit", + "zamezit", + "zamotat", + "zamyslet", + "zanechat", + "zanikat", + "zaplatit", + "zapojit", + "zapsat", + "zarazit", + "zastavit", + "zasunout", + "zatajit", + "zatemnit", + "zatknout", + "zaujmout", + "zavalit", + "zavelet", + "zavinit", + "zavolat", + "zavrtat", + "zazvonit", + "zbavit", + "zbrusu", + "zbudovat", + "zbytek", + "zdaleka", + "zdarma", + "zdatnost", + "zdivo", + "zdobit", + "zdroj", + "zdvih", + "zdymadlo", + "zelenina", + "zeman", + "zemina", + "zeptat", + "zezadu", + "zezdola", + "zhatit", + "zhltnout", + "zhluboka", + "zhotovit", + "zhruba", + "zima", + "zimnice", + "zjemnit", + "zklamat", + "zkoumat", + "zkratka", + "zkumavka", + "zlato", + "zlehka", + "zloba", + "zlom", + "zlost", + "zlozvyk", + "zmapovat", + "zmar", + "zmatek", + "zmije", + "zmizet", + "zmocnit", + "zmodrat", + "zmrzlina", + "zmutovat", + "znak", + "znalost", + "znamenat", + "znovu", + "zobrazit", + "zotavit", + "zoubek", + "zoufale", + "zplodit", + "zpomalit", + "zprava", + "zprostit", + "zprudka", + "zprvu", + "zrada", + "zranit", + "zrcadlo", + "zrnitost", + "zrno", + "zrovna", + "zrychlit", + "zrzavost", + "zticha", + "ztratit", + "zubovina", + "zubr", + "zvednout", + "zvenku", + "zvesela", + "zvon", + "zvrat", + "zvukovod", + "zvyk" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt new file mode 100644 index 000000000..e90a5af69 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeEnglish { + val wordList: List = + listOf( + "abandon", + "ability", + "able", + "about", + "above", + "absent", + "absorb", + "abstract", + "absurd", + "abuse", + "access", + "accident", + "account", + "accuse", + "achieve", + "acid", + "acoustic", + "acquire", + "across", + "act", + "action", + "actor", + "actress", + "actual", + "adapt", + "add", + "addict", + "address", + "adjust", + "admit", + "adult", + "advance", + "advice", + "aerobic", + "affair", + "afford", + "afraid", + "again", + "age", + "agent", + "agree", + "ahead", + "aim", + "air", + "airport", + "aisle", + "alarm", + "album", + "alcohol", + "alert", + "alien", + "all", + "alley", + "allow", + "almost", + "alone", + "alpha", + "already", + "also", + "alter", + "always", + "amateur", + "amazing", + "among", + "amount", + "amused", + "analyst", + "anchor", + "ancient", + "anger", + "angle", + "angry", + "animal", + "ankle", + "announce", + "annual", + "another", + "answer", + "antenna", + "antique", + "anxiety", + "any", + "apart", + "apology", + "appear", + "apple", + "approve", + "april", + "arch", + "arctic", + "area", + "arena", + "argue", + "arm", + "armed", + "armor", + "army", + "around", + "arrange", + "arrest", + "arrive", + "arrow", + "art", + "artefact", + "artist", + "artwork", + "ask", + "aspect", + "assault", + "asset", + "assist", + "assume", + "asthma", + "athlete", + "atom", + "attack", + "attend", + "attitude", + "attract", + "auction", + "audit", + "august", + "aunt", + "author", + "auto", + "autumn", + "average", + "avocado", + "avoid", + "awake", + "aware", + "away", + "awesome", + "awful", + "awkward", + "axis", + "baby", + "bachelor", + "bacon", + "badge", + "bag", + "balance", + "balcony", + "ball", + "bamboo", + "banana", + "banner", + "bar", + "barely", + "bargain", + "barrel", + "base", + "basic", + "basket", + "battle", + "beach", + "bean", + "beauty", + "because", + "become", + "beef", + "before", + "begin", + "behave", + "behind", + "believe", + "below", + "belt", + "bench", + "benefit", + "best", + "betray", + "better", + "between", + "beyond", + "bicycle", + "bid", + "bike", + "bind", + "biology", + "bird", + "birth", + "bitter", + "black", + "blade", + "blame", + "blanket", + "blast", + "bleak", + "bless", + "blind", + "blood", + "blossom", + "blouse", + "blue", + "blur", + "blush", + "board", + "boat", + "body", + "boil", + "bomb", + "bone", + "bonus", + "book", + "boost", + "border", + "boring", + "borrow", + "boss", + "bottom", + "bounce", + "box", + "boy", + "bracket", + "brain", + "brand", + "brass", + "brave", + "bread", + "breeze", + "brick", + "bridge", + "brief", + "bright", + "bring", + "brisk", + "broccoli", + "broken", + "bronze", + "broom", + "brother", + "brown", + "brush", + "bubble", + "buddy", + "budget", + "buffalo", + "build", + "bulb", + "bulk", + "bullet", + "bundle", + "bunker", + "burden", + "burger", + "burst", + "bus", + "business", + "busy", + "butter", + "buyer", + "buzz", + "cabbage", + "cabin", + "cable", + "cactus", + "cage", + "cake", + "call", + "calm", + "camera", + "camp", + "can", + "canal", + "cancel", + "candy", + "cannon", + "canoe", + "canvas", + "canyon", + "capable", + "capital", + "captain", + "car", + "carbon", + "card", + "cargo", + "carpet", + "carry", + "cart", + "case", + "cash", + "casino", + "castle", + "casual", + "cat", + "catalog", + "catch", + "category", + "cattle", + "caught", + "cause", + "caution", + "cave", + "ceiling", + "celery", + "cement", + "census", + "century", + "cereal", + "certain", + "chair", + "chalk", + "champion", + "change", + "chaos", + "chapter", + "charge", + "chase", + "chat", + "cheap", + "check", + "cheese", + "chef", + "cherry", + "chest", + "chicken", + "chief", + "child", + "chimney", + "choice", + "choose", + "chronic", + "chuckle", + "chunk", + "churn", + "cigar", + "cinnamon", + "circle", + "citizen", + "city", + "civil", + "claim", + "clap", + "clarify", + "claw", + "clay", + "clean", + "clerk", + "clever", + "click", + "client", + "cliff", + "climb", + "clinic", + "clip", + "clock", + "clog", + "close", + "cloth", + "cloud", + "clown", + "club", + "clump", + "cluster", + "clutch", + "coach", + "coast", + "coconut", + "code", + "coffee", + "coil", + "coin", + "collect", + "color", + "column", + "combine", + "come", + "comfort", + "comic", + "common", + "company", + "concert", + "conduct", + "confirm", + "congress", + "connect", + "consider", + "control", + "convince", + "cook", + "cool", + "copper", + "copy", + "coral", + "core", + "corn", + "correct", + "cost", + "cotton", + "couch", + "country", + "couple", + "course", + "cousin", + "cover", + "coyote", + "crack", + "cradle", + "craft", + "cram", + "crane", + "crash", + "crater", + "crawl", + "crazy", + "cream", + "credit", + "creek", + "crew", + "cricket", + "crime", + "crisp", + "critic", + "crop", + "cross", + "crouch", + "crowd", + "crucial", + "cruel", + "cruise", + "crumble", + "crunch", + "crush", + "cry", + "crystal", + "cube", + "culture", + "cup", + "cupboard", + "curious", + "current", + "curtain", + "curve", + "cushion", + "custom", + "cute", + "cycle", + "dad", + "damage", + "damp", + "dance", + "danger", + "daring", + "dash", + "daughter", + "dawn", + "day", + "deal", + "debate", + "debris", + "decade", + "december", + "decide", + "decline", + "decorate", + "decrease", + "deer", + "defense", + "define", + "defy", + "degree", + "delay", + "deliver", + "demand", + "demise", + "denial", + "dentist", + "deny", + "depart", + "depend", + "deposit", + "depth", + "deputy", + "derive", + "describe", + "desert", + "design", + "desk", + "despair", + "destroy", + "detail", + "detect", + "develop", + "device", + "devote", + "diagram", + "dial", + "diamond", + "diary", + "dice", + "diesel", + "diet", + "differ", + "digital", + "dignity", + "dilemma", + "dinner", + "dinosaur", + "direct", + "dirt", + "disagree", + "discover", + "disease", + "dish", + "dismiss", + "disorder", + "display", + "distance", + "divert", + "divide", + "divorce", + "dizzy", + "doctor", + "document", + "dog", + "doll", + "dolphin", + "domain", + "donate", + "donkey", + "donor", + "door", + "dose", + "double", + "dove", + "draft", + "dragon", + "drama", + "drastic", + "draw", + "dream", + "dress", + "drift", + "drill", + "drink", + "drip", + "drive", + "drop", + "drum", + "dry", + "duck", + "dumb", + "dune", + "during", + "dust", + "dutch", + "duty", + "dwarf", + "dynamic", + "eager", + "eagle", + "early", + "earn", + "earth", + "easily", + "east", + "easy", + "echo", + "ecology", + "economy", + "edge", + "edit", + "educate", + "effort", + "egg", + "eight", + "either", + "elbow", + "elder", + "electric", + "elegant", + "element", + "elephant", + "elevator", + "elite", + "else", + "embark", + "embody", + "embrace", + "emerge", + "emotion", + "employ", + "empower", + "empty", + "enable", + "enact", + "end", + "endless", + "endorse", + "enemy", + "energy", + "enforce", + "engage", + "engine", + "enhance", + "enjoy", + "enlist", + "enough", + "enrich", + "enroll", + "ensure", + "enter", + "entire", + "entry", + "envelope", + "episode", + "equal", + "equip", + "era", + "erase", + "erode", + "erosion", + "error", + "erupt", + "escape", + "essay", + "essence", + "estate", + "eternal", + "ethics", + "evidence", + "evil", + "evoke", + "evolve", + "exact", + "example", + "excess", + "exchange", + "excite", + "exclude", + "excuse", + "execute", + "exercise", + "exhaust", + "exhibit", + "exile", + "exist", + "exit", + "exotic", + "expand", + "expect", + "expire", + "explain", + "expose", + "express", + "extend", + "extra", + "eye", + "eyebrow", + "fabric", + "face", + "faculty", + "fade", + "faint", + "faith", + "fall", + "false", + "fame", + "family", + "famous", + "fan", + "fancy", + "fantasy", + "farm", + "fashion", + "fat", + "fatal", + "father", + "fatigue", + "fault", + "favorite", + "feature", + "february", + "federal", + "fee", + "feed", + "feel", + "female", + "fence", + "festival", + "fetch", + "fever", + "few", + "fiber", + "fiction", + "field", + "figure", + "file", + "film", + "filter", + "final", + "find", + "fine", + "finger", + "finish", + "fire", + "firm", + "first", + "fiscal", + "fish", + "fit", + "fitness", + "fix", + "flag", + "flame", + "flash", + "flat", + "flavor", + "flee", + "flight", + "flip", + "float", + "flock", + "floor", + "flower", + "fluid", + "flush", + "fly", + "foam", + "focus", + "fog", + "foil", + "fold", + "follow", + "food", + "foot", + "force", + "forest", + "forget", + "fork", + "fortune", + "forum", + "forward", + "fossil", + "foster", + "found", + "fox", + "fragile", + "frame", + "frequent", + "fresh", + "friend", + "fringe", + "frog", + "front", + "frost", + "frown", + "frozen", + "fruit", + "fuel", + "fun", + "funny", + "furnace", + "fury", + "future", + "gadget", + "gain", + "galaxy", + "gallery", + "game", + "gap", + "garage", + "garbage", + "garden", + "garlic", + "garment", + "gas", + "gasp", + "gate", + "gather", + "gauge", + "gaze", + "general", + "genius", + "genre", + "gentle", + "genuine", + "gesture", + "ghost", + "giant", + "gift", + "giggle", + "ginger", + "giraffe", + "girl", + "give", + "glad", + "glance", + "glare", + "glass", + "glide", + "glimpse", + "globe", + "gloom", + "glory", + "glove", + "glow", + "glue", + "goat", + "goddess", + "gold", + "good", + "goose", + "gorilla", + "gospel", + "gossip", + "govern", + "gown", + "grab", + "grace", + "grain", + "grant", + "grape", + "grass", + "gravity", + "great", + "green", + "grid", + "grief", + "grit", + "grocery", + "group", + "grow", + "grunt", + "guard", + "guess", + "guide", + "guilt", + "guitar", + "gun", + "gym", + "habit", + "hair", + "half", + "hammer", + "hamster", + "hand", + "happy", + "harbor", + "hard", + "harsh", + "harvest", + "hat", + "have", + "hawk", + "hazard", + "head", + "health", + "heart", + "heavy", + "hedgehog", + "height", + "hello", + "helmet", + "help", + "hen", + "hero", + "hidden", + "high", + "hill", + "hint", + "hip", + "hire", + "history", + "hobby", + "hockey", + "hold", + "hole", + "holiday", + "hollow", + "home", + "honey", + "hood", + "hope", + "horn", + "horror", + "horse", + "hospital", + "host", + "hotel", + "hour", + "hover", + "hub", + "huge", + "human", + "humble", + "humor", + "hundred", + "hungry", + "hunt", + "hurdle", + "hurry", + "hurt", + "husband", + "hybrid", + "ice", + "icon", + "idea", + "identify", + "idle", + "ignore", + "ill", + "illegal", + "illness", + "image", + "imitate", + "immense", + "immune", + "impact", + "impose", + "improve", + "impulse", + "inch", + "include", + "income", + "increase", + "index", + "indicate", + "indoor", + "industry", + "infant", + "inflict", + "inform", + "inhale", + "inherit", + "initial", + "inject", + "injury", + "inmate", + "inner", + "innocent", + "input", + "inquiry", + "insane", + "insect", + "inside", + "inspire", + "install", + "intact", + "interest", + "into", + "invest", + "invite", + "involve", + "iron", + "island", + "isolate", + "issue", + "item", + "ivory", + "jacket", + "jaguar", + "jar", + "jazz", + "jealous", + "jeans", + "jelly", + "jewel", + "job", + "join", + "joke", + "journey", + "joy", + "judge", + "juice", + "jump", + "jungle", + "junior", + "junk", + "just", + "kangaroo", + "keen", + "keep", + "ketchup", + "key", + "kick", + "kid", + "kidney", + "kind", + "kingdom", + "kiss", + "kit", + "kitchen", + "kite", + "kitten", + "kiwi", + "knee", + "knife", + "knock", + "know", + "lab", + "label", + "labor", + "ladder", + "lady", + "lake", + "lamp", + "language", + "laptop", + "large", + "later", + "latin", + "laugh", + "laundry", + "lava", + "law", + "lawn", + "lawsuit", + "layer", + "lazy", + "leader", + "leaf", + "learn", + "leave", + "lecture", + "left", + "leg", + "legal", + "legend", + "leisure", + "lemon", + "lend", + "length", + "lens", + "leopard", + "lesson", + "letter", + "level", + "liar", + "liberty", + "library", + "license", + "life", + "lift", + "light", + "like", + "limb", + "limit", + "link", + "lion", + "liquid", + "list", + "little", + "live", + "lizard", + "load", + "loan", + "lobster", + "local", + "lock", + "logic", + "lonely", + "long", + "loop", + "lottery", + "loud", + "lounge", + "love", + "loyal", + "lucky", + "luggage", + "lumber", + "lunar", + "lunch", + "luxury", + "lyrics", + "machine", + "mad", + "magic", + "magnet", + "maid", + "mail", + "main", + "major", + "make", + "mammal", + "man", + "manage", + "mandate", + "mango", + "mansion", + "manual", + "maple", + "marble", + "march", + "margin", + "marine", + "market", + "marriage", + "mask", + "mass", + "master", + "match", + "material", + "math", + "matrix", + "matter", + "maximum", + "maze", + "meadow", + "mean", + "measure", + "meat", + "mechanic", + "medal", + "media", + "melody", + "melt", + "member", + "memory", + "mention", + "menu", + "mercy", + "merge", + "merit", + "merry", + "mesh", + "message", + "metal", + "method", + "middle", + "midnight", + "milk", + "million", + "mimic", + "mind", + "minimum", + "minor", + "minute", + "miracle", + "mirror", + "misery", + "miss", + "mistake", + "mix", + "mixed", + "mixture", + "mobile", + "model", + "modify", + "mom", + "moment", + "monitor", + "monkey", + "monster", + "month", + "moon", + "moral", + "more", + "morning", + "mosquito", + "mother", + "motion", + "motor", + "mountain", + "mouse", + "move", + "movie", + "much", + "muffin", + "mule", + "multiply", + "muscle", + "museum", + "mushroom", + "music", + "must", + "mutual", + "myself", + "mystery", + "myth", + "naive", + "name", + "napkin", + "narrow", + "nasty", + "nation", + "nature", + "near", + "neck", + "need", + "negative", + "neglect", + "neither", + "nephew", + "nerve", + "nest", + "net", + "network", + "neutral", + "never", + "news", + "next", + "nice", + "night", + "noble", + "noise", + "nominee", + "noodle", + "normal", + "north", + "nose", + "notable", + "note", + "nothing", + "notice", + "novel", + "now", + "nuclear", + "number", + "nurse", + "nut", + "oak", + "obey", + "object", + "oblige", + "obscure", + "observe", + "obtain", + "obvious", + "occur", + "ocean", + "october", + "odor", + "off", + "offer", + "office", + "often", + "oil", + "okay", + "old", + "olive", + "olympic", + "omit", + "once", + "one", + "onion", + "online", + "only", + "open", + "opera", + "opinion", + "oppose", + "option", + "orange", + "orbit", + "orchard", + "order", + "ordinary", + "organ", + "orient", + "original", + "orphan", + "ostrich", + "other", + "outdoor", + "outer", + "output", + "outside", + "oval", + "oven", + "over", + "own", + "owner", + "oxygen", + "oyster", + "ozone", + "pact", + "paddle", + "page", + "pair", + "palace", + "palm", + "panda", + "panel", + "panic", + "panther", + "paper", + "parade", + "parent", + "park", + "parrot", + "party", + "pass", + "patch", + "path", + "patient", + "patrol", + "pattern", + "pause", + "pave", + "payment", + "peace", + "peanut", + "pear", + "peasant", + "pelican", + "pen", + "penalty", + "pencil", + "people", + "pepper", + "perfect", + "permit", + "person", + "pet", + "phone", + "photo", + "phrase", + "physical", + "piano", + "picnic", + "picture", + "piece", + "pig", + "pigeon", + "pill", + "pilot", + "pink", + "pioneer", + "pipe", + "pistol", + "pitch", + "pizza", + "place", + "planet", + "plastic", + "plate", + "play", + "please", + "pledge", + "pluck", + "plug", + "plunge", + "poem", + "poet", + "point", + "polar", + "pole", + "police", + "pond", + "pony", + "pool", + "popular", + "portion", + "position", + "possible", + "post", + "potato", + "pottery", + "poverty", + "powder", + "power", + "practice", + "praise", + "predict", + "prefer", + "prepare", + "present", + "pretty", + "prevent", + "price", + "pride", + "primary", + "print", + "priority", + "prison", + "private", + "prize", + "problem", + "process", + "produce", + "profit", + "program", + "project", + "promote", + "proof", + "property", + "prosper", + "protect", + "proud", + "provide", + "public", + "pudding", + "pull", + "pulp", + "pulse", + "pumpkin", + "punch", + "pupil", + "puppy", + "purchase", + "purity", + "purpose", + "purse", + "push", + "put", + "puzzle", + "pyramid", + "quality", + "quantum", + "quarter", + "question", + "quick", + "quit", + "quiz", + "quote", + "rabbit", + "raccoon", + "race", + "rack", + "radar", + "radio", + "rail", + "rain", + "raise", + "rally", + "ramp", + "ranch", + "random", + "range", + "rapid", + "rare", + "rate", + "rather", + "raven", + "raw", + "razor", + "ready", + "real", + "reason", + "rebel", + "rebuild", + "recall", + "receive", + "recipe", + "record", + "recycle", + "reduce", + "reflect", + "reform", + "refuse", + "region", + "regret", + "regular", + "reject", + "relax", + "release", + "relief", + "rely", + "remain", + "remember", + "remind", + "remove", + "render", + "renew", + "rent", + "reopen", + "repair", + "repeat", + "replace", + "report", + "require", + "rescue", + "resemble", + "resist", + "resource", + "response", + "result", + "retire", + "retreat", + "return", + "reunion", + "reveal", + "review", + "reward", + "rhythm", + "rib", + "ribbon", + "rice", + "rich", + "ride", + "ridge", + "rifle", + "right", + "rigid", + "ring", + "riot", + "ripple", + "risk", + "ritual", + "rival", + "river", + "road", + "roast", + "robot", + "robust", + "rocket", + "romance", + "roof", + "rookie", + "room", + "rose", + "rotate", + "rough", + "round", + "route", + "royal", + "rubber", + "rude", + "rug", + "rule", + "run", + "runway", + "rural", + "sad", + "saddle", + "sadness", + "safe", + "sail", + "salad", + "salmon", + "salon", + "salt", + "salute", + "same", + "sample", + "sand", + "satisfy", + "satoshi", + "sauce", + "sausage", + "save", + "say", + "scale", + "scan", + "scare", + "scatter", + "scene", + "scheme", + "school", + "science", + "scissors", + "scorpion", + "scout", + "scrap", + "screen", + "script", + "scrub", + "sea", + "search", + "season", + "seat", + "second", + "secret", + "section", + "security", + "seed", + "seek", + "segment", + "select", + "sell", + "seminar", + "senior", + "sense", + "sentence", + "series", + "service", + "session", + "settle", + "setup", + "seven", + "shadow", + "shaft", + "shallow", + "share", + "shed", + "shell", + "sheriff", + "shield", + "shift", + "shine", + "ship", + "shiver", + "shock", + "shoe", + "shoot", + "shop", + "short", + "shoulder", + "shove", + "shrimp", + "shrug", + "shuffle", + "shy", + "sibling", + "sick", + "side", + "siege", + "sight", + "sign", + "silent", + "silk", + "silly", + "silver", + "similar", + "simple", + "since", + "sing", + "siren", + "sister", + "situate", + "six", + "size", + "skate", + "sketch", + "ski", + "skill", + "skin", + "skirt", + "skull", + "slab", + "slam", + "sleep", + "slender", + "slice", + "slide", + "slight", + "slim", + "slogan", + "slot", + "slow", + "slush", + "small", + "smart", + "smile", + "smoke", + "smooth", + "snack", + "snake", + "snap", + "sniff", + "snow", + "soap", + "soccer", + "social", + "sock", + "soda", + "soft", + "solar", + "soldier", + "solid", + "solution", + "solve", + "someone", + "song", + "soon", + "sorry", + "sort", + "soul", + "sound", + "soup", + "source", + "south", + "space", + "spare", + "spatial", + "spawn", + "speak", + "special", + "speed", + "spell", + "spend", + "sphere", + "spice", + "spider", + "spike", + "spin", + "spirit", + "split", + "spoil", + "sponsor", + "spoon", + "sport", + "spot", + "spray", + "spread", + "spring", + "spy", + "square", + "squeeze", + "squirrel", + "stable", + "stadium", + "staff", + "stage", + "stairs", + "stamp", + "stand", + "start", + "state", + "stay", + "steak", + "steel", + "stem", + "step", + "stereo", + "stick", + "still", + "sting", + "stock", + "stomach", + "stone", + "stool", + "story", + "stove", + "strategy", + "street", + "strike", + "strong", + "struggle", + "student", + "stuff", + "stumble", + "style", + "subject", + "submit", + "subway", + "success", + "such", + "sudden", + "suffer", + "sugar", + "suggest", + "suit", + "summer", + "sun", + "sunny", + "sunset", + "super", + "supply", + "supreme", + "sure", + "surface", + "surge", + "surprise", + "surround", + "survey", + "suspect", + "sustain", + "swallow", + "swamp", + "swap", + "swarm", + "swear", + "sweet", + "swift", + "swim", + "swing", + "switch", + "sword", + "symbol", + "symptom", + "syrup", + "system", + "table", + "tackle", + "tag", + "tail", + "talent", + "talk", + "tank", + "tape", + "target", + "task", + "taste", + "tattoo", + "taxi", + "teach", + "team", + "tell", + "ten", + "tenant", + "tennis", + "tent", + "term", + "test", + "text", + "thank", + "that", + "theme", + "then", + "theory", + "there", + "they", + "thing", + "this", + "thought", + "three", + "thrive", + "throw", + "thumb", + "thunder", + "ticket", + "tide", + "tiger", + "tilt", + "timber", + "time", + "tiny", + "tip", + "tired", + "tissue", + "title", + "toast", + "tobacco", + "today", + "toddler", + "toe", + "together", + "toilet", + "token", + "tomato", + "tomorrow", + "tone", + "tongue", + "tonight", + "tool", + "tooth", + "top", + "topic", + "topple", + "torch", + "tornado", + "tortoise", + "toss", + "total", + "tourist", + "toward", + "tower", + "town", + "toy", + "track", + "trade", + "traffic", + "tragic", + "train", + "transfer", + "trap", + "trash", + "travel", + "tray", + "treat", + "tree", + "trend", + "trial", + "tribe", + "trick", + "trigger", + "trim", + "trip", + "trophy", + "trouble", + "truck", + "true", + "truly", + "trumpet", + "trust", + "truth", + "try", + "tube", + "tuition", + "tumble", + "tuna", + "tunnel", + "turkey", + "turn", + "turtle", + "twelve", + "twenty", + "twice", + "twin", + "twist", + "two", + "type", + "typical", + "ugly", + "umbrella", + "unable", + "unaware", + "uncle", + "uncover", + "under", + "undo", + "unfair", + "unfold", + "unhappy", + "uniform", + "unique", + "unit", + "universe", + "unknown", + "unlock", + "until", + "unusual", + "unveil", + "update", + "upgrade", + "uphold", + "upon", + "upper", + "upset", + "urban", + "urge", + "usage", + "use", + "used", + "useful", + "useless", + "usual", + "utility", + "vacant", + "vacuum", + "vague", + "valid", + "valley", + "valve", + "van", + "vanish", + "vapor", + "various", + "vast", + "vault", + "vehicle", + "velvet", + "vendor", + "venture", + "venue", + "verb", + "verify", + "version", + "very", + "vessel", + "veteran", + "viable", + "vibrant", + "vicious", + "victory", + "video", + "view", + "village", + "vintage", + "violin", + "virtual", + "virus", + "visa", + "visit", + "visual", + "vital", + "vivid", + "vocal", + "voice", + "void", + "volcano", + "volume", + "vote", + "voyage", + "wage", + "wagon", + "wait", + "walk", + "wall", + "walnut", + "want", + "warfare", + "warm", + "warrior", + "wash", + "wasp", + "waste", + "water", + "wave", + "way", + "wealth", + "weapon", + "wear", + "weasel", + "weather", + "web", + "wedding", + "weekend", + "weird", + "welcome", + "west", + "wet", + "whale", + "what", + "wheat", + "wheel", + "when", + "where", + "whip", + "whisper", + "wide", + "width", + "wife", + "wild", + "will", + "win", + "window", + "wine", + "wing", + "wink", + "winner", + "winter", + "wire", + "wisdom", + "wise", + "wish", + "witness", + "wolf", + "woman", + "wonder", + "wood", + "wool", + "word", + "work", + "world", + "worry", + "worth", + "wrap", + "wreck", + "wrestle", + "wrist", + "write", + "wrong", + "yard", + "year", + "yellow", + "you", + "young", + "youth", + "zebra", + "zero", + "zone", + "zoo" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt new file mode 100644 index 000000000..22ef7cf85 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeFrench { + val wordList: List = + listOf( + "abaisser", + "abandon", + "abdiquer", + "abeille", + "abolir", + "aborder", + "aboutir", + "aboyer", + "abrasif", + "abreuver", + "abriter", + "abroger", + "abrupt", + "absence", + "absolu", + "absurde", + "abusif", + "abyssal", + "académie", + "acajou", + "acarien", + "accabler", + "accepter", + "acclamer", + "accolade", + "accroche", + "accuser", + "acerbe", + "achat", + "acheter", + "aciduler", + "acier", + "acompte", + "acquérir", + "acronyme", + "acteur", + "actif", + "actuel", + "adepte", + "adéquat", + "adhésif", + "adjectif", + "adjuger", + "admettre", + "admirer", + "adopter", + "adorer", + "adoucir", + "adresse", + "adroit", + "adulte", + "adverbe", + "aérer", + "aéronef", + "affaire", + "affecter", + "affiche", + "affreux", + "affubler", + "agacer", + "agencer", + "agile", + "agiter", + "agrafer", + "agréable", + "agrume", + "aider", + "aiguille", + "ailier", + "aimable", + "aisance", + "ajouter", + "ajuster", + "alarmer", + "alchimie", + "alerte", + "algèbre", + "algue", + "aliéner", + "aliment", + "alléger", + "alliage", + "allouer", + "allumer", + "alourdir", + "alpaga", + "altesse", + "alvéole", + "amateur", + "ambigu", + "ambre", + "aménager", + "amertume", + "amidon", + "amiral", + "amorcer", + "amour", + "amovible", + "amphibie", + "ampleur", + "amusant", + "analyse", + "anaphore", + "anarchie", + "anatomie", + "ancien", + "anéantir", + "angle", + "angoisse", + "anguleux", + "animal", + "annexer", + "annonce", + "annuel", + "anodin", + "anomalie", + "anonyme", + "anormal", + "antenne", + "antidote", + "anxieux", + "apaiser", + "apéritif", + "aplanir", + "apologie", + "appareil", + "appeler", + "apporter", + "appuyer", + "aquarium", + "aqueduc", + "arbitre", + "arbuste", + "ardeur", + "ardoise", + "argent", + "arlequin", + "armature", + "armement", + "armoire", + "armure", + "arpenter", + "arracher", + "arriver", + "arroser", + "arsenic", + "artériel", + "article", + "aspect", + "asphalte", + "aspirer", + "assaut", + "asservir", + "assiette", + "associer", + "assurer", + "asticot", + "astre", + "astuce", + "atelier", + "atome", + "atrium", + "atroce", + "attaque", + "attentif", + "attirer", + "attraper", + "aubaine", + "auberge", + "audace", + "audible", + "augurer", + "aurore", + "automne", + "autruche", + "avaler", + "avancer", + "avarice", + "avenir", + "averse", + "aveugle", + "aviateur", + "avide", + "avion", + "aviser", + "avoine", + "avouer", + "avril", + "axial", + "axiome", + "badge", + "bafouer", + "bagage", + "baguette", + "baignade", + "balancer", + "balcon", + "baleine", + "balisage", + "bambin", + "bancaire", + "bandage", + "banlieue", + "bannière", + "banquier", + "barbier", + "baril", + "baron", + "barque", + "barrage", + "bassin", + "bastion", + "bataille", + "bateau", + "batterie", + "baudrier", + "bavarder", + "belette", + "bélier", + "belote", + "bénéfice", + "berceau", + "berger", + "berline", + "bermuda", + "besace", + "besogne", + "bétail", + "beurre", + "biberon", + "bicycle", + "bidule", + "bijou", + "bilan", + "bilingue", + "billard", + "binaire", + "biologie", + "biopsie", + "biotype", + "biscuit", + "bison", + "bistouri", + "bitume", + "bizarre", + "blafard", + "blague", + "blanchir", + "blessant", + "blinder", + "blond", + "bloquer", + "blouson", + "bobard", + "bobine", + "boire", + "boiser", + "bolide", + "bonbon", + "bondir", + "bonheur", + "bonifier", + "bonus", + "bordure", + "borne", + "botte", + "boucle", + "boueux", + "bougie", + "boulon", + "bouquin", + "bourse", + "boussole", + "boutique", + "boxeur", + "branche", + "brasier", + "brave", + "brebis", + "brèche", + "breuvage", + "bricoler", + "brigade", + "brillant", + "brioche", + "brique", + "brochure", + "broder", + "bronzer", + "brousse", + "broyeur", + "brume", + "brusque", + "brutal", + "bruyant", + "buffle", + "buisson", + "bulletin", + "bureau", + "burin", + "bustier", + "butiner", + "butoir", + "buvable", + "buvette", + "cabanon", + "cabine", + "cachette", + "cadeau", + "cadre", + "caféine", + "caillou", + "caisson", + "calculer", + "calepin", + "calibre", + "calmer", + "calomnie", + "calvaire", + "camarade", + "caméra", + "camion", + "campagne", + "canal", + "caneton", + "canon", + "cantine", + "canular", + "capable", + "caporal", + "caprice", + "capsule", + "capter", + "capuche", + "carabine", + "carbone", + "caresser", + "caribou", + "carnage", + "carotte", + "carreau", + "carton", + "cascade", + "casier", + "casque", + "cassure", + "causer", + "caution", + "cavalier", + "caverne", + "caviar", + "cédille", + "ceinture", + "céleste", + "cellule", + "cendrier", + "censurer", + "central", + "cercle", + "cérébral", + "cerise", + "cerner", + "cerveau", + "cesser", + "chagrin", + "chaise", + "chaleur", + "chambre", + "chance", + "chapitre", + "charbon", + "chasseur", + "chaton", + "chausson", + "chavirer", + "chemise", + "chenille", + "chéquier", + "chercher", + "cheval", + "chien", + "chiffre", + "chignon", + "chimère", + "chiot", + "chlorure", + "chocolat", + "choisir", + "chose", + "chouette", + "chrome", + "chute", + "cigare", + "cigogne", + "cimenter", + "cinéma", + "cintrer", + "circuler", + "cirer", + "cirque", + "citerne", + "citoyen", + "citron", + "civil", + "clairon", + "clameur", + "claquer", + "classe", + "clavier", + "client", + "cligner", + "climat", + "clivage", + "cloche", + "clonage", + "cloporte", + "cobalt", + "cobra", + "cocasse", + "cocotier", + "coder", + "codifier", + "coffre", + "cogner", + "cohésion", + "coiffer", + "coincer", + "colère", + "colibri", + "colline", + "colmater", + "colonel", + "combat", + "comédie", + "commande", + "compact", + "concert", + "conduire", + "confier", + "congeler", + "connoter", + "consonne", + "contact", + "convexe", + "copain", + "copie", + "corail", + "corbeau", + "cordage", + "corniche", + "corpus", + "correct", + "cortège", + "cosmique", + "costume", + "coton", + "coude", + "coupure", + "courage", + "couteau", + "couvrir", + "coyote", + "crabe", + "crainte", + "cravate", + "crayon", + "créature", + "créditer", + "crémeux", + "creuser", + "crevette", + "cribler", + "crier", + "cristal", + "critère", + "croire", + "croquer", + "crotale", + "crucial", + "cruel", + "crypter", + "cubique", + "cueillir", + "cuillère", + "cuisine", + "cuivre", + "culminer", + "cultiver", + "cumuler", + "cupide", + "curatif", + "curseur", + "cyanure", + "cycle", + "cylindre", + "cynique", + "daigner", + "damier", + "danger", + "danseur", + "dauphin", + "débattre", + "débiter", + "déborder", + "débrider", + "débutant", + "décaler", + "décembre", + "déchirer", + "décider", + "déclarer", + "décorer", + "décrire", + "décupler", + "dédale", + "déductif", + "déesse", + "défensif", + "défiler", + "défrayer", + "dégager", + "dégivrer", + "déglutir", + "dégrafer", + "déjeuner", + "délice", + "déloger", + "demander", + "demeurer", + "démolir", + "dénicher", + "dénouer", + "dentelle", + "dénuder", + "départ", + "dépenser", + "déphaser", + "déplacer", + "déposer", + "déranger", + "dérober", + "désastre", + "descente", + "désert", + "désigner", + "désobéir", + "dessiner", + "destrier", + "détacher", + "détester", + "détourer", + "détresse", + "devancer", + "devenir", + "deviner", + "devoir", + "diable", + "dialogue", + "diamant", + "dicter", + "différer", + "digérer", + "digital", + "digne", + "diluer", + "dimanche", + "diminuer", + "dioxyde", + "directif", + "diriger", + "discuter", + "disposer", + "dissiper", + "distance", + "divertir", + "diviser", + "docile", + "docteur", + "dogme", + "doigt", + "domaine", + "domicile", + "dompter", + "donateur", + "donjon", + "donner", + "dopamine", + "dortoir", + "dorure", + "dosage", + "doseur", + "dossier", + "dotation", + "douanier", + "double", + "douceur", + "douter", + "doyen", + "dragon", + "draper", + "dresser", + "dribbler", + "droiture", + "duperie", + "duplexe", + "durable", + "durcir", + "dynastie", + "éblouir", + "écarter", + "écharpe", + "échelle", + "éclairer", + "éclipse", + "éclore", + "écluse", + "école", + "économie", + "écorce", + "écouter", + "écraser", + "écrémer", + "écrivain", + "écrou", + "écume", + "écureuil", + "édifier", + "éduquer", + "effacer", + "effectif", + "effigie", + "effort", + "effrayer", + "effusion", + "égaliser", + "égarer", + "éjecter", + "élaborer", + "élargir", + "électron", + "élégant", + "éléphant", + "élève", + "éligible", + "élitisme", + "éloge", + "élucider", + "éluder", + "emballer", + "embellir", + "embryon", + "émeraude", + "émission", + "emmener", + "émotion", + "émouvoir", + "empereur", + "employer", + "emporter", + "emprise", + "émulsion", + "encadrer", + "enchère", + "enclave", + "encoche", + "endiguer", + "endosser", + "endroit", + "enduire", + "énergie", + "enfance", + "enfermer", + "enfouir", + "engager", + "engin", + "englober", + "énigme", + "enjamber", + "enjeu", + "enlever", + "ennemi", + "ennuyeux", + "enrichir", + "enrobage", + "enseigne", + "entasser", + "entendre", + "entier", + "entourer", + "entraver", + "énumérer", + "envahir", + "enviable", + "envoyer", + "enzyme", + "éolien", + "épaissir", + "épargne", + "épatant", + "épaule", + "épicerie", + "épidémie", + "épier", + "épilogue", + "épine", + "épisode", + "épitaphe", + "époque", + "épreuve", + "éprouver", + "épuisant", + "équerre", + "équipe", + "ériger", + "érosion", + "erreur", + "éruption", + "escalier", + "espadon", + "espèce", + "espiègle", + "espoir", + "esprit", + "esquiver", + "essayer", + "essence", + "essieu", + "essorer", + "estime", + "estomac", + "estrade", + "étagère", + "étaler", + "étanche", + "étatique", + "éteindre", + "étendoir", + "éternel", + "éthanol", + "éthique", + "ethnie", + "étirer", + "étoffer", + "étoile", + "étonnant", + "étourdir", + "étrange", + "étroit", + "étude", + "euphorie", + "évaluer", + "évasion", + "éventail", + "évidence", + "éviter", + "évolutif", + "évoquer", + "exact", + "exagérer", + "exaucer", + "exceller", + "excitant", + "exclusif", + "excuse", + "exécuter", + "exemple", + "exercer", + "exhaler", + "exhorter", + "exigence", + "exiler", + "exister", + "exotique", + "expédier", + "explorer", + "exposer", + "exprimer", + "exquis", + "extensif", + "extraire", + "exulter", + "fable", + "fabuleux", + "facette", + "facile", + "facture", + "faiblir", + "falaise", + "fameux", + "famille", + "farceur", + "farfelu", + "farine", + "farouche", + "fasciner", + "fatal", + "fatigue", + "faucon", + "fautif", + "faveur", + "favori", + "fébrile", + "féconder", + "fédérer", + "félin", + "femme", + "fémur", + "fendoir", + "féodal", + "fermer", + "féroce", + "ferveur", + "festival", + "feuille", + "feutre", + "février", + "fiasco", + "ficeler", + "fictif", + "fidèle", + "figure", + "filature", + "filetage", + "filière", + "filleul", + "filmer", + "filou", + "filtrer", + "financer", + "finir", + "fiole", + "firme", + "fissure", + "fixer", + "flairer", + "flamme", + "flasque", + "flatteur", + "fléau", + "flèche", + "fleur", + "flexion", + "flocon", + "flore", + "fluctuer", + "fluide", + "fluvial", + "folie", + "fonderie", + "fongible", + "fontaine", + "forcer", + "forgeron", + "formuler", + "fortune", + "fossile", + "foudre", + "fougère", + "fouiller", + "foulure", + "fourmi", + "fragile", + "fraise", + "franchir", + "frapper", + "frayeur", + "frégate", + "freiner", + "frelon", + "frémir", + "frénésie", + "frère", + "friable", + "friction", + "frisson", + "frivole", + "froid", + "fromage", + "frontal", + "frotter", + "fruit", + "fugitif", + "fuite", + "fureur", + "furieux", + "furtif", + "fusion", + "futur", + "gagner", + "galaxie", + "galerie", + "gambader", + "garantir", + "gardien", + "garnir", + "garrigue", + "gazelle", + "gazon", + "géant", + "gélatine", + "gélule", + "gendarme", + "général", + "génie", + "genou", + "gentil", + "géologie", + "géomètre", + "géranium", + "germe", + "gestuel", + "geyser", + "gibier", + "gicler", + "girafe", + "givre", + "glace", + "glaive", + "glisser", + "globe", + "gloire", + "glorieux", + "golfeur", + "gomme", + "gonfler", + "gorge", + "gorille", + "goudron", + "gouffre", + "goulot", + "goupille", + "gourmand", + "goutte", + "graduel", + "graffiti", + "graine", + "grand", + "grappin", + "gratuit", + "gravir", + "grenat", + "griffure", + "griller", + "grimper", + "grogner", + "gronder", + "grotte", + "groupe", + "gruger", + "grutier", + "gruyère", + "guépard", + "guerrier", + "guide", + "guimauve", + "guitare", + "gustatif", + "gymnaste", + "gyrostat", + "habitude", + "hachoir", + "halte", + "hameau", + "hangar", + "hanneton", + "haricot", + "harmonie", + "harpon", + "hasard", + "hélium", + "hématome", + "herbe", + "hérisson", + "hermine", + "héron", + "hésiter", + "heureux", + "hiberner", + "hibou", + "hilarant", + "histoire", + "hiver", + "homard", + "hommage", + "homogène", + "honneur", + "honorer", + "honteux", + "horde", + "horizon", + "horloge", + "hormone", + "horrible", + "houleux", + "housse", + "hublot", + "huileux", + "humain", + "humble", + "humide", + "humour", + "hurler", + "hydromel", + "hygiène", + "hymne", + "hypnose", + "idylle", + "ignorer", + "iguane", + "illicite", + "illusion", + "image", + "imbiber", + "imiter", + "immense", + "immobile", + "immuable", + "impact", + "impérial", + "implorer", + "imposer", + "imprimer", + "imputer", + "incarner", + "incendie", + "incident", + "incliner", + "incolore", + "indexer", + "indice", + "inductif", + "inédit", + "ineptie", + "inexact", + "infini", + "infliger", + "informer", + "infusion", + "ingérer", + "inhaler", + "inhiber", + "injecter", + "injure", + "innocent", + "inoculer", + "inonder", + "inscrire", + "insecte", + "insigne", + "insolite", + "inspirer", + "instinct", + "insulter", + "intact", + "intense", + "intime", + "intrigue", + "intuitif", + "inutile", + "invasion", + "inventer", + "inviter", + "invoquer", + "ironique", + "irradier", + "irréel", + "irriter", + "isoler", + "ivoire", + "ivresse", + "jaguar", + "jaillir", + "jambe", + "janvier", + "jardin", + "jauger", + "jaune", + "javelot", + "jetable", + "jeton", + "jeudi", + "jeunesse", + "joindre", + "joncher", + "jongler", + "joueur", + "jouissif", + "journal", + "jovial", + "joyau", + "joyeux", + "jubiler", + "jugement", + "junior", + "jupon", + "juriste", + "justice", + "juteux", + "juvénile", + "kayak", + "kimono", + "kiosque", + "label", + "labial", + "labourer", + "lacérer", + "lactose", + "lagune", + "laine", + "laisser", + "laitier", + "lambeau", + "lamelle", + "lampe", + "lanceur", + "langage", + "lanterne", + "lapin", + "largeur", + "larme", + "laurier", + "lavabo", + "lavoir", + "lecture", + "légal", + "léger", + "légume", + "lessive", + "lettre", + "levier", + "lexique", + "lézard", + "liasse", + "libérer", + "libre", + "licence", + "licorne", + "liège", + "lièvre", + "ligature", + "ligoter", + "ligue", + "limer", + "limite", + "limonade", + "limpide", + "linéaire", + "lingot", + "lionceau", + "liquide", + "lisière", + "lister", + "lithium", + "litige", + "littoral", + "livreur", + "logique", + "lointain", + "loisir", + "lombric", + "loterie", + "louer", + "lourd", + "loutre", + "louve", + "loyal", + "lubie", + "lucide", + "lucratif", + "lueur", + "lugubre", + "luisant", + "lumière", + "lunaire", + "lundi", + "luron", + "lutter", + "luxueux", + "machine", + "magasin", + "magenta", + "magique", + "maigre", + "maillon", + "maintien", + "mairie", + "maison", + "majorer", + "malaxer", + "maléfice", + "malheur", + "malice", + "mallette", + "mammouth", + "mandater", + "maniable", + "manquant", + "manteau", + "manuel", + "marathon", + "marbre", + "marchand", + "mardi", + "maritime", + "marqueur", + "marron", + "marteler", + "mascotte", + "massif", + "matériel", + "matière", + "matraque", + "maudire", + "maussade", + "mauve", + "maximal", + "méchant", + "méconnu", + "médaille", + "médecin", + "méditer", + "méduse", + "meilleur", + "mélange", + "mélodie", + "membre", + "mémoire", + "menacer", + "mener", + "menhir", + "mensonge", + "mentor", + "mercredi", + "mérite", + "merle", + "messager", + "mesure", + "métal", + "météore", + "méthode", + "métier", + "meuble", + "miauler", + "microbe", + "miette", + "mignon", + "migrer", + "milieu", + "million", + "mimique", + "mince", + "minéral", + "minimal", + "minorer", + "minute", + "miracle", + "miroiter", + "missile", + "mixte", + "mobile", + "moderne", + "moelleux", + "mondial", + "moniteur", + "monnaie", + "monotone", + "monstre", + "montagne", + "monument", + "moqueur", + "morceau", + "morsure", + "mortier", + "moteur", + "motif", + "mouche", + "moufle", + "moulin", + "mousson", + "mouton", + "mouvant", + "multiple", + "munition", + "muraille", + "murène", + "murmure", + "muscle", + "muséum", + "musicien", + "mutation", + "muter", + "mutuel", + "myriade", + "myrtille", + "mystère", + "mythique", + "nageur", + "nappe", + "narquois", + "narrer", + "natation", + "nation", + "nature", + "naufrage", + "nautique", + "navire", + "nébuleux", + "nectar", + "néfaste", + "négation", + "négliger", + "négocier", + "neige", + "nerveux", + "nettoyer", + "neurone", + "neutron", + "neveu", + "niche", + "nickel", + "nitrate", + "niveau", + "noble", + "nocif", + "nocturne", + "noirceur", + "noisette", + "nomade", + "nombreux", + "nommer", + "normatif", + "notable", + "notifier", + "notoire", + "nourrir", + "nouveau", + "novateur", + "novembre", + "novice", + "nuage", + "nuancer", + "nuire", + "nuisible", + "numéro", + "nuptial", + "nuque", + "nutritif", + "obéir", + "objectif", + "obliger", + "obscur", + "observer", + "obstacle", + "obtenir", + "obturer", + "occasion", + "occuper", + "océan", + "octobre", + "octroyer", + "octupler", + "oculaire", + "odeur", + "odorant", + "offenser", + "officier", + "offrir", + "ogive", + "oiseau", + "oisillon", + "olfactif", + "olivier", + "ombrage", + "omettre", + "onctueux", + "onduler", + "onéreux", + "onirique", + "opale", + "opaque", + "opérer", + "opinion", + "opportun", + "opprimer", + "opter", + "optique", + "orageux", + "orange", + "orbite", + "ordonner", + "oreille", + "organe", + "orgueil", + "orifice", + "ornement", + "orque", + "ortie", + "osciller", + "osmose", + "ossature", + "otarie", + "ouragan", + "ourson", + "outil", + "outrager", + "ouvrage", + "ovation", + "oxyde", + "oxygène", + "ozone", + "paisible", + "palace", + "palmarès", + "palourde", + "palper", + "panache", + "panda", + "pangolin", + "paniquer", + "panneau", + "panorama", + "pantalon", + "papaye", + "papier", + "papoter", + "papyrus", + "paradoxe", + "parcelle", + "paresse", + "parfumer", + "parler", + "parole", + "parrain", + "parsemer", + "partager", + "parure", + "parvenir", + "passion", + "pastèque", + "paternel", + "patience", + "patron", + "pavillon", + "pavoiser", + "payer", + "paysage", + "peigne", + "peintre", + "pelage", + "pélican", + "pelle", + "pelouse", + "peluche", + "pendule", + "pénétrer", + "pénible", + "pensif", + "pénurie", + "pépite", + "péplum", + "perdrix", + "perforer", + "période", + "permuter", + "perplexe", + "persil", + "perte", + "peser", + "pétale", + "petit", + "pétrir", + "peuple", + "pharaon", + "phobie", + "phoque", + "photon", + "phrase", + "physique", + "piano", + "pictural", + "pièce", + "pierre", + "pieuvre", + "pilote", + "pinceau", + "pipette", + "piquer", + "pirogue", + "piscine", + "piston", + "pivoter", + "pixel", + "pizza", + "placard", + "plafond", + "plaisir", + "planer", + "plaque", + "plastron", + "plateau", + "pleurer", + "plexus", + "pliage", + "plomb", + "plonger", + "pluie", + "plumage", + "pochette", + "poésie", + "poète", + "pointe", + "poirier", + "poisson", + "poivre", + "polaire", + "policier", + "pollen", + "polygone", + "pommade", + "pompier", + "ponctuel", + "pondérer", + "poney", + "portique", + "position", + "posséder", + "posture", + "potager", + "poteau", + "potion", + "pouce", + "poulain", + "poumon", + "pourpre", + "poussin", + "pouvoir", + "prairie", + "pratique", + "précieux", + "prédire", + "préfixe", + "prélude", + "prénom", + "présence", + "prétexte", + "prévoir", + "primitif", + "prince", + "prison", + "priver", + "problème", + "procéder", + "prodige", + "profond", + "progrès", + "proie", + "projeter", + "prologue", + "promener", + "propre", + "prospère", + "protéger", + "prouesse", + "proverbe", + "prudence", + "pruneau", + "psychose", + "public", + "puceron", + "puiser", + "pulpe", + "pulsar", + "punaise", + "punitif", + "pupitre", + "purifier", + "puzzle", + "pyramide", + "quasar", + "querelle", + "question", + "quiétude", + "quitter", + "quotient", + "racine", + "raconter", + "radieux", + "ragondin", + "raideur", + "raisin", + "ralentir", + "rallonge", + "ramasser", + "rapide", + "rasage", + "ratisser", + "ravager", + "ravin", + "rayonner", + "réactif", + "réagir", + "réaliser", + "réanimer", + "recevoir", + "réciter", + "réclamer", + "récolter", + "recruter", + "reculer", + "recycler", + "rédiger", + "redouter", + "refaire", + "réflexe", + "réformer", + "refrain", + "refuge", + "régalien", + "région", + "réglage", + "régulier", + "réitérer", + "rejeter", + "rejouer", + "relatif", + "relever", + "relief", + "remarque", + "remède", + "remise", + "remonter", + "remplir", + "remuer", + "renard", + "renfort", + "renifler", + "renoncer", + "rentrer", + "renvoi", + "replier", + "reporter", + "reprise", + "reptile", + "requin", + "réserve", + "résineux", + "résoudre", + "respect", + "rester", + "résultat", + "rétablir", + "retenir", + "réticule", + "retomber", + "retracer", + "réunion", + "réussir", + "revanche", + "revivre", + "révolte", + "révulsif", + "richesse", + "rideau", + "rieur", + "rigide", + "rigoler", + "rincer", + "riposter", + "risible", + "risque", + "rituel", + "rival", + "rivière", + "rocheux", + "romance", + "rompre", + "ronce", + "rondin", + "roseau", + "rosier", + "rotatif", + "rotor", + "rotule", + "rouge", + "rouille", + "rouleau", + "routine", + "royaume", + "ruban", + "rubis", + "ruche", + "ruelle", + "rugueux", + "ruiner", + "ruisseau", + "ruser", + "rustique", + "rythme", + "sabler", + "saboter", + "sabre", + "sacoche", + "safari", + "sagesse", + "saisir", + "salade", + "salive", + "salon", + "saluer", + "samedi", + "sanction", + "sanglier", + "sarcasme", + "sardine", + "saturer", + "saugrenu", + "saumon", + "sauter", + "sauvage", + "savant", + "savonner", + "scalpel", + "scandale", + "scélérat", + "scénario", + "sceptre", + "schéma", + "science", + "scinder", + "score", + "scrutin", + "sculpter", + "séance", + "sécable", + "sécher", + "secouer", + "sécréter", + "sédatif", + "séduire", + "seigneur", + "séjour", + "sélectif", + "semaine", + "sembler", + "semence", + "séminal", + "sénateur", + "sensible", + "sentence", + "séparer", + "séquence", + "serein", + "sergent", + "sérieux", + "serrure", + "sérum", + "service", + "sésame", + "sévir", + "sevrage", + "sextuple", + "sidéral", + "siècle", + "siéger", + "siffler", + "sigle", + "signal", + "silence", + "silicium", + "simple", + "sincère", + "sinistre", + "siphon", + "sirop", + "sismique", + "situer", + "skier", + "social", + "socle", + "sodium", + "soigneux", + "soldat", + "soleil", + "solitude", + "soluble", + "sombre", + "sommeil", + "somnoler", + "sonde", + "songeur", + "sonnette", + "sonore", + "sorcier", + "sortir", + "sosie", + "sottise", + "soucieux", + "soudure", + "souffle", + "soulever", + "soupape", + "source", + "soutirer", + "souvenir", + "spacieux", + "spatial", + "spécial", + "sphère", + "spiral", + "stable", + "station", + "sternum", + "stimulus", + "stipuler", + "strict", + "studieux", + "stupeur", + "styliste", + "sublime", + "substrat", + "subtil", + "subvenir", + "succès", + "sucre", + "suffixe", + "suggérer", + "suiveur", + "sulfate", + "superbe", + "supplier", + "surface", + "suricate", + "surmener", + "surprise", + "sursaut", + "survie", + "suspect", + "syllabe", + "symbole", + "symétrie", + "synapse", + "syntaxe", + "système", + "tabac", + "tablier", + "tactile", + "tailler", + "talent", + "talisman", + "talonner", + "tambour", + "tamiser", + "tangible", + "tapis", + "taquiner", + "tarder", + "tarif", + "tartine", + "tasse", + "tatami", + "tatouage", + "taupe", + "taureau", + "taxer", + "témoin", + "temporel", + "tenaille", + "tendre", + "teneur", + "tenir", + "tension", + "terminer", + "terne", + "terrible", + "tétine", + "texte", + "thème", + "théorie", + "thérapie", + "thorax", + "tibia", + "tiède", + "timide", + "tirelire", + "tiroir", + "tissu", + "titane", + "titre", + "tituber", + "toboggan", + "tolérant", + "tomate", + "tonique", + "tonneau", + "toponyme", + "torche", + "tordre", + "tornade", + "torpille", + "torrent", + "torse", + "tortue", + "totem", + "toucher", + "tournage", + "tousser", + "toxine", + "traction", + "trafic", + "tragique", + "trahir", + "train", + "trancher", + "travail", + "trèfle", + "tremper", + "trésor", + "treuil", + "triage", + "tribunal", + "tricoter", + "trilogie", + "triomphe", + "tripler", + "triturer", + "trivial", + "trombone", + "tronc", + "tropical", + "troupeau", + "tuile", + "tulipe", + "tumulte", + "tunnel", + "turbine", + "tuteur", + "tutoyer", + "tuyau", + "tympan", + "typhon", + "typique", + "tyran", + "ubuesque", + "ultime", + "ultrason", + "unanime", + "unifier", + "union", + "unique", + "unitaire", + "univers", + "uranium", + "urbain", + "urticant", + "usage", + "usine", + "usuel", + "usure", + "utile", + "utopie", + "vacarme", + "vaccin", + "vagabond", + "vague", + "vaillant", + "vaincre", + "vaisseau", + "valable", + "valise", + "vallon", + "valve", + "vampire", + "vanille", + "vapeur", + "varier", + "vaseux", + "vassal", + "vaste", + "vecteur", + "vedette", + "végétal", + "véhicule", + "veinard", + "véloce", + "vendredi", + "vénérer", + "venger", + "venimeux", + "ventouse", + "verdure", + "vérin", + "vernir", + "verrou", + "verser", + "vertu", + "veston", + "vétéran", + "vétuste", + "vexant", + "vexer", + "viaduc", + "viande", + "victoire", + "vidange", + "vidéo", + "vignette", + "vigueur", + "vilain", + "village", + "vinaigre", + "violon", + "vipère", + "virement", + "virtuose", + "virus", + "visage", + "viseur", + "vision", + "visqueux", + "visuel", + "vital", + "vitesse", + "viticole", + "vitrine", + "vivace", + "vivipare", + "vocation", + "voguer", + "voile", + "voisin", + "voiture", + "volaille", + "volcan", + "voltiger", + "volume", + "vorace", + "vortex", + "voter", + "vouloir", + "voyage", + "voyelle", + "wagon", + "xénon", + "yacht", + "zèbre", + "zénith", + "zeste", + "zoologie" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt new file mode 100644 index 000000000..da9b56275 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeItalian { + val wordList: List = + listOf( + "abaco", + "abbaglio", + "abbinato", + "abete", + "abisso", + "abolire", + "abrasivo", + "abrogato", + "accadere", + "accenno", + "accusato", + "acetone", + "achille", + "acido", + "acqua", + "acre", + "acrilico", + "acrobata", + "acuto", + "adagio", + "addebito", + "addome", + "adeguato", + "aderire", + "adipe", + "adottare", + "adulare", + "affabile", + "affetto", + "affisso", + "affranto", + "aforisma", + "afoso", + "africano", + "agave", + "agente", + "agevole", + "aggancio", + "agire", + "agitare", + "agonismo", + "agricolo", + "agrumeto", + "aguzzo", + "alabarda", + "alato", + "albatro", + "alberato", + "albo", + "albume", + "alce", + "alcolico", + "alettone", + "alfa", + "algebra", + "aliante", + "alibi", + "alimento", + "allagato", + "allegro", + "allievo", + "allodola", + "allusivo", + "almeno", + "alogeno", + "alpaca", + "alpestre", + "altalena", + "alterno", + "alticcio", + "altrove", + "alunno", + "alveolo", + "alzare", + "amalgama", + "amanita", + "amarena", + "ambito", + "ambrato", + "ameba", + "america", + "ametista", + "amico", + "ammasso", + "ammenda", + "ammirare", + "ammonito", + "amore", + "ampio", + "ampliare", + "amuleto", + "anacardo", + "anagrafe", + "analista", + "anarchia", + "anatra", + "anca", + "ancella", + "ancora", + "andare", + "andrea", + "anello", + "angelo", + "angolare", + "angusto", + "anima", + "annegare", + "annidato", + "anno", + "annuncio", + "anonimo", + "anticipo", + "anzi", + "apatico", + "apertura", + "apode", + "apparire", + "appetito", + "appoggio", + "approdo", + "appunto", + "aprile", + "arabica", + "arachide", + "aragosta", + "araldica", + "arancio", + "aratura", + "arazzo", + "arbitro", + "archivio", + "ardito", + "arenile", + "argento", + "argine", + "arguto", + "aria", + "armonia", + "arnese", + "arredato", + "arringa", + "arrosto", + "arsenico", + "arso", + "artefice", + "arzillo", + "asciutto", + "ascolto", + "asepsi", + "asettico", + "asfalto", + "asino", + "asola", + "aspirato", + "aspro", + "assaggio", + "asse", + "assoluto", + "assurdo", + "asta", + "astenuto", + "astice", + "astratto", + "atavico", + "ateismo", + "atomico", + "atono", + "attesa", + "attivare", + "attorno", + "attrito", + "attuale", + "ausilio", + "austria", + "autista", + "autonomo", + "autunno", + "avanzato", + "avere", + "avvenire", + "avviso", + "avvolgere", + "azione", + "azoto", + "azzimo", + "azzurro", + "babele", + "baccano", + "bacino", + "baco", + "badessa", + "badilata", + "bagnato", + "baita", + "balcone", + "baldo", + "balena", + "ballata", + "balzano", + "bambino", + "bandire", + "baraonda", + "barbaro", + "barca", + "baritono", + "barlume", + "barocco", + "basilico", + "basso", + "batosta", + "battuto", + "baule", + "bava", + "bavosa", + "becco", + "beffa", + "belgio", + "belva", + "benda", + "benevole", + "benigno", + "benzina", + "bere", + "berlina", + "beta", + "bibita", + "bici", + "bidone", + "bifido", + "biga", + "bilancia", + "bimbo", + "binocolo", + "biologo", + "bipede", + "bipolare", + "birbante", + "birra", + "biscotto", + "bisesto", + "bisnonno", + "bisonte", + "bisturi", + "bizzarro", + "blando", + "blatta", + "bollito", + "bonifico", + "bordo", + "bosco", + "botanico", + "bottino", + "bozzolo", + "braccio", + "bradipo", + "brama", + "branca", + "bravura", + "bretella", + "brevetto", + "brezza", + "briglia", + "brillante", + "brindare", + "broccolo", + "brodo", + "bronzina", + "brullo", + "bruno", + "bubbone", + "buca", + "budino", + "buffone", + "buio", + "bulbo", + "buono", + "burlone", + "burrasca", + "bussola", + "busta", + "cadetto", + "caduco", + "calamaro", + "calcolo", + "calesse", + "calibro", + "calmo", + "caloria", + "cambusa", + "camerata", + "camicia", + "cammino", + "camola", + "campale", + "canapa", + "candela", + "cane", + "canino", + "canotto", + "cantina", + "capace", + "capello", + "capitolo", + "capogiro", + "cappero", + "capra", + "capsula", + "carapace", + "carcassa", + "cardo", + "carisma", + "carovana", + "carretto", + "cartolina", + "casaccio", + "cascata", + "caserma", + "caso", + "cassone", + "castello", + "casuale", + "catasta", + "catena", + "catrame", + "cauto", + "cavillo", + "cedibile", + "cedrata", + "cefalo", + "celebre", + "cellulare", + "cena", + "cenone", + "centesimo", + "ceramica", + "cercare", + "certo", + "cerume", + "cervello", + "cesoia", + "cespo", + "ceto", + "chela", + "chiaro", + "chicca", + "chiedere", + "chimera", + "china", + "chirurgo", + "chitarra", + "ciao", + "ciclismo", + "cifrare", + "cigno", + "cilindro", + "ciottolo", + "circa", + "cirrosi", + "citrico", + "cittadino", + "ciuffo", + "civetta", + "civile", + "classico", + "clinica", + "cloro", + "cocco", + "codardo", + "codice", + "coerente", + "cognome", + "collare", + "colmato", + "colore", + "colposo", + "coltivato", + "colza", + "coma", + "cometa", + "commando", + "comodo", + "computer", + "comune", + "conciso", + "condurre", + "conferma", + "congelare", + "coniuge", + "connesso", + "conoscere", + "consumo", + "continuo", + "convegno", + "coperto", + "copione", + "coppia", + "copricapo", + "corazza", + "cordata", + "coricato", + "cornice", + "corolla", + "corpo", + "corredo", + "corsia", + "cortese", + "cosmico", + "costante", + "cottura", + "covato", + "cratere", + "cravatta", + "creato", + "credere", + "cremoso", + "crescita", + "creta", + "criceto", + "crinale", + "crisi", + "critico", + "croce", + "cronaca", + "crostata", + "cruciale", + "crusca", + "cucire", + "cuculo", + "cugino", + "cullato", + "cupola", + "curatore", + "cursore", + "curvo", + "cuscino", + "custode", + "dado", + "daino", + "dalmata", + "damerino", + "daniela", + "dannoso", + "danzare", + "datato", + "davanti", + "davvero", + "debutto", + "decennio", + "deciso", + "declino", + "decollo", + "decreto", + "dedicato", + "definito", + "deforme", + "degno", + "delegare", + "delfino", + "delirio", + "delta", + "demenza", + "denotato", + "dentro", + "deposito", + "derapata", + "derivare", + "deroga", + "descritto", + "deserto", + "desiderio", + "desumere", + "detersivo", + "devoto", + "diametro", + "dicembre", + "diedro", + "difeso", + "diffuso", + "digerire", + "digitale", + "diluvio", + "dinamico", + "dinnanzi", + "dipinto", + "diploma", + "dipolo", + "diradare", + "dire", + "dirotto", + "dirupo", + "disagio", + "discreto", + "disfare", + "disgelo", + "disposto", + "distanza", + "disumano", + "dito", + "divano", + "divelto", + "dividere", + "divorato", + "doblone", + "docente", + "doganale", + "dogma", + "dolce", + "domato", + "domenica", + "dominare", + "dondolo", + "dono", + "dormire", + "dote", + "dottore", + "dovuto", + "dozzina", + "drago", + "druido", + "dubbio", + "dubitare", + "ducale", + "duna", + "duomo", + "duplice", + "duraturo", + "ebano", + "eccesso", + "ecco", + "eclissi", + "economia", + "edera", + "edicola", + "edile", + "editoria", + "educare", + "egemonia", + "egli", + "egoismo", + "egregio", + "elaborato", + "elargire", + "elegante", + "elencato", + "eletto", + "elevare", + "elfico", + "elica", + "elmo", + "elsa", + "eluso", + "emanato", + "emblema", + "emesso", + "emiro", + "emotivo", + "emozione", + "empirico", + "emulo", + "endemico", + "enduro", + "energia", + "enfasi", + "enoteca", + "entrare", + "enzima", + "epatite", + "epilogo", + "episodio", + "epocale", + "eppure", + "equatore", + "erario", + "erba", + "erboso", + "erede", + "eremita", + "erigere", + "ermetico", + "eroe", + "erosivo", + "errante", + "esagono", + "esame", + "esanime", + "esaudire", + "esca", + "esempio", + "esercito", + "esibito", + "esigente", + "esistere", + "esito", + "esofago", + "esortato", + "esoso", + "espanso", + "espresso", + "essenza", + "esso", + "esteso", + "estimare", + "estonia", + "estroso", + "esultare", + "etilico", + "etnico", + "etrusco", + "etto", + "euclideo", + "europa", + "evaso", + "evidenza", + "evitato", + "evoluto", + "evviva", + "fabbrica", + "faccenda", + "fachiro", + "falco", + "famiglia", + "fanale", + "fanfara", + "fango", + "fantasma", + "fare", + "farfalla", + "farinoso", + "farmaco", + "fascia", + "fastoso", + "fasullo", + "faticare", + "fato", + "favoloso", + "febbre", + "fecola", + "fede", + "fegato", + "felpa", + "feltro", + "femmina", + "fendere", + "fenomeno", + "fermento", + "ferro", + "fertile", + "fessura", + "festivo", + "fetta", + "feudo", + "fiaba", + "fiducia", + "fifa", + "figurato", + "filo", + "finanza", + "finestra", + "finire", + "fiore", + "fiscale", + "fisico", + "fiume", + "flacone", + "flamenco", + "flebo", + "flemma", + "florido", + "fluente", + "fluoro", + "fobico", + "focaccia", + "focoso", + "foderato", + "foglio", + "folata", + "folclore", + "folgore", + "fondente", + "fonetico", + "fonia", + "fontana", + "forbito", + "forchetta", + "foresta", + "formica", + "fornaio", + "foro", + "fortezza", + "forzare", + "fosfato", + "fosso", + "fracasso", + "frana", + "frassino", + "fratello", + "freccetta", + "frenata", + "fresco", + "frigo", + "frollino", + "fronde", + "frugale", + "frutta", + "fucilata", + "fucsia", + "fuggente", + "fulmine", + "fulvo", + "fumante", + "fumetto", + "fumoso", + "fune", + "funzione", + "fuoco", + "furbo", + "furgone", + "furore", + "fuso", + "futile", + "gabbiano", + "gaffe", + "galateo", + "gallina", + "galoppo", + "gambero", + "gamma", + "garanzia", + "garbo", + "garofano", + "garzone", + "gasdotto", + "gasolio", + "gastrico", + "gatto", + "gaudio", + "gazebo", + "gazzella", + "geco", + "gelatina", + "gelso", + "gemello", + "gemmato", + "gene", + "genitore", + "gennaio", + "genotipo", + "gergo", + "ghepardo", + "ghiaccio", + "ghisa", + "giallo", + "gilda", + "ginepro", + "giocare", + "gioiello", + "giorno", + "giove", + "girato", + "girone", + "gittata", + "giudizio", + "giurato", + "giusto", + "globulo", + "glutine", + "gnomo", + "gobba", + "golf", + "gomito", + "gommone", + "gonfio", + "gonna", + "governo", + "gracile", + "grado", + "grafico", + "grammo", + "grande", + "grattare", + "gravoso", + "grazia", + "greca", + "gregge", + "grifone", + "grigio", + "grinza", + "grotta", + "gruppo", + "guadagno", + "guaio", + "guanto", + "guardare", + "gufo", + "guidare", + "ibernato", + "icona", + "identico", + "idillio", + "idolo", + "idra", + "idrico", + "idrogeno", + "igiene", + "ignaro", + "ignorato", + "ilare", + "illeso", + "illogico", + "illudere", + "imballo", + "imbevuto", + "imbocco", + "imbuto", + "immane", + "immerso", + "immolato", + "impacco", + "impeto", + "impiego", + "importo", + "impronta", + "inalare", + "inarcare", + "inattivo", + "incanto", + "incendio", + "inchino", + "incisivo", + "incluso", + "incontro", + "incrocio", + "incubo", + "indagine", + "india", + "indole", + "inedito", + "infatti", + "infilare", + "inflitto", + "ingaggio", + "ingegno", + "inglese", + "ingordo", + "ingrosso", + "innesco", + "inodore", + "inoltrare", + "inondato", + "insano", + "insetto", + "insieme", + "insonnia", + "insulina", + "intasato", + "intero", + "intonaco", + "intuito", + "inumidire", + "invalido", + "invece", + "invito", + "iperbole", + "ipnotico", + "ipotesi", + "ippica", + "iride", + "irlanda", + "ironico", + "irrigato", + "irrorare", + "isolato", + "isotopo", + "isterico", + "istituto", + "istrice", + "italia", + "iterare", + "labbro", + "labirinto", + "lacca", + "lacerato", + "lacrima", + "lacuna", + "laddove", + "lago", + "lampo", + "lancetta", + "lanterna", + "lardoso", + "larga", + "laringe", + "lastra", + "latenza", + "latino", + "lattuga", + "lavagna", + "lavoro", + "legale", + "leggero", + "lembo", + "lentezza", + "lenza", + "leone", + "lepre", + "lesivo", + "lessato", + "lesto", + "letterale", + "leva", + "levigato", + "libero", + "lido", + "lievito", + "lilla", + "limatura", + "limitare", + "limpido", + "lineare", + "lingua", + "liquido", + "lira", + "lirica", + "lisca", + "lite", + "litigio", + "livrea", + "locanda", + "lode", + "logica", + "lombare", + "londra", + "longevo", + "loquace", + "lorenzo", + "loto", + "lotteria", + "luce", + "lucidato", + "lumaca", + "luminoso", + "lungo", + "lupo", + "luppolo", + "lusinga", + "lusso", + "lutto", + "macabro", + "macchina", + "macero", + "macinato", + "madama", + "magico", + "maglia", + "magnete", + "magro", + "maiolica", + "malafede", + "malgrado", + "malinteso", + "malsano", + "malto", + "malumore", + "mana", + "mancia", + "mandorla", + "mangiare", + "manifesto", + "mannaro", + "manovra", + "mansarda", + "mantide", + "manubrio", + "mappa", + "maratona", + "marcire", + "maretta", + "marmo", + "marsupio", + "maschera", + "massaia", + "mastino", + "materasso", + "matricola", + "mattone", + "maturo", + "mazurca", + "meandro", + "meccanico", + "mecenate", + "medesimo", + "meditare", + "mega", + "melassa", + "melis", + "melodia", + "meninge", + "meno", + "mensola", + "mercurio", + "merenda", + "merlo", + "meschino", + "mese", + "messere", + "mestolo", + "metallo", + "metodo", + "mettere", + "miagolare", + "mica", + "micelio", + "michele", + "microbo", + "midollo", + "miele", + "migliore", + "milano", + "milite", + "mimosa", + "minerale", + "mini", + "minore", + "mirino", + "mirtillo", + "miscela", + "missiva", + "misto", + "misurare", + "mitezza", + "mitigare", + "mitra", + "mittente", + "mnemonico", + "modello", + "modifica", + "modulo", + "mogano", + "mogio", + "mole", + "molosso", + "monastero", + "monco", + "mondina", + "monetario", + "monile", + "monotono", + "monsone", + "montato", + "monviso", + "mora", + "mordere", + "morsicato", + "mostro", + "motivato", + "motosega", + "motto", + "movenza", + "movimento", + "mozzo", + "mucca", + "mucosa", + "muffa", + "mughetto", + "mugnaio", + "mulatto", + "mulinello", + "multiplo", + "mummia", + "munto", + "muovere", + "murale", + "musa", + "muscolo", + "musica", + "mutevole", + "muto", + "nababbo", + "nafta", + "nanometro", + "narciso", + "narice", + "narrato", + "nascere", + "nastrare", + "naturale", + "nautica", + "naviglio", + "nebulosa", + "necrosi", + "negativo", + "negozio", + "nemmeno", + "neofita", + "neretto", + "nervo", + "nessuno", + "nettuno", + "neutrale", + "neve", + "nevrotico", + "nicchia", + "ninfa", + "nitido", + "nobile", + "nocivo", + "nodo", + "nome", + "nomina", + "nordico", + "normale", + "norvegese", + "nostrano", + "notare", + "notizia", + "notturno", + "novella", + "nucleo", + "nulla", + "numero", + "nuovo", + "nutrire", + "nuvola", + "nuziale", + "oasi", + "obbedire", + "obbligo", + "obelisco", + "oblio", + "obolo", + "obsoleto", + "occasione", + "occhio", + "occidente", + "occorrere", + "occultare", + "ocra", + "oculato", + "odierno", + "odorare", + "offerta", + "offrire", + "offuscato", + "oggetto", + "oggi", + "ognuno", + "olandese", + "olfatto", + "oliato", + "oliva", + "ologramma", + "oltre", + "omaggio", + "ombelico", + "ombra", + "omega", + "omissione", + "ondoso", + "onere", + "onice", + "onnivoro", + "onorevole", + "onta", + "operato", + "opinione", + "opposto", + "oracolo", + "orafo", + "ordine", + "orecchino", + "orefice", + "orfano", + "organico", + "origine", + "orizzonte", + "orma", + "ormeggio", + "ornativo", + "orologio", + "orrendo", + "orribile", + "ortensia", + "ortica", + "orzata", + "orzo", + "osare", + "oscurare", + "osmosi", + "ospedale", + "ospite", + "ossa", + "ossidare", + "ostacolo", + "oste", + "otite", + "otre", + "ottagono", + "ottimo", + "ottobre", + "ovale", + "ovest", + "ovino", + "oviparo", + "ovocito", + "ovunque", + "ovviare", + "ozio", + "pacchetto", + "pace", + "pacifico", + "padella", + "padrone", + "paese", + "paga", + "pagina", + "palazzina", + "palesare", + "pallido", + "palo", + "palude", + "pandoro", + "pannello", + "paolo", + "paonazzo", + "paprica", + "parabola", + "parcella", + "parere", + "pargolo", + "pari", + "parlato", + "parola", + "partire", + "parvenza", + "parziale", + "passivo", + "pasticca", + "patacca", + "patologia", + "pattume", + "pavone", + "peccato", + "pedalare", + "pedonale", + "peggio", + "peloso", + "penare", + "pendice", + "penisola", + "pennuto", + "penombra", + "pensare", + "pentola", + "pepe", + "pepita", + "perbene", + "percorso", + "perdonato", + "perforare", + "pergamena", + "periodo", + "permesso", + "perno", + "perplesso", + "persuaso", + "pertugio", + "pervaso", + "pesatore", + "pesista", + "peso", + "pestifero", + "petalo", + "pettine", + "petulante", + "pezzo", + "piacere", + "pianta", + "piattino", + "piccino", + "picozza", + "piega", + "pietra", + "piffero", + "pigiama", + "pigolio", + "pigro", + "pila", + "pilifero", + "pillola", + "pilota", + "pimpante", + "pineta", + "pinna", + "pinolo", + "pioggia", + "piombo", + "piramide", + "piretico", + "pirite", + "pirolisi", + "pitone", + "pizzico", + "placebo", + "planare", + "plasma", + "platano", + "plenario", + "pochezza", + "poderoso", + "podismo", + "poesia", + "poggiare", + "polenta", + "poligono", + "pollice", + "polmonite", + "polpetta", + "polso", + "poltrona", + "polvere", + "pomice", + "pomodoro", + "ponte", + "popoloso", + "porfido", + "poroso", + "porpora", + "porre", + "portata", + "posa", + "positivo", + "possesso", + "postulato", + "potassio", + "potere", + "pranzo", + "prassi", + "pratica", + "precluso", + "predica", + "prefisso", + "pregiato", + "prelievo", + "premere", + "prenotare", + "preparato", + "presenza", + "pretesto", + "prevalso", + "prima", + "principe", + "privato", + "problema", + "procura", + "produrre", + "profumo", + "progetto", + "prolunga", + "promessa", + "pronome", + "proposta", + "proroga", + "proteso", + "prova", + "prudente", + "prugna", + "prurito", + "psiche", + "pubblico", + "pudica", + "pugilato", + "pugno", + "pulce", + "pulito", + "pulsante", + "puntare", + "pupazzo", + "pupilla", + "puro", + "quadro", + "qualcosa", + "quasi", + "querela", + "quota", + "raccolto", + "raddoppio", + "radicale", + "radunato", + "raffica", + "ragazzo", + "ragione", + "ragno", + "ramarro", + "ramingo", + "ramo", + "randagio", + "rantolare", + "rapato", + "rapina", + "rappreso", + "rasatura", + "raschiato", + "rasente", + "rassegna", + "rastrello", + "rata", + "ravveduto", + "reale", + "recepire", + "recinto", + "recluta", + "recondito", + "recupero", + "reddito", + "redimere", + "regalato", + "registro", + "regola", + "regresso", + "relazione", + "remare", + "remoto", + "renna", + "replica", + "reprimere", + "reputare", + "resa", + "residente", + "responso", + "restauro", + "rete", + "retina", + "retorica", + "rettifica", + "revocato", + "riassunto", + "ribadire", + "ribelle", + "ribrezzo", + "ricarica", + "ricco", + "ricevere", + "riciclato", + "ricordo", + "ricreduto", + "ridicolo", + "ridurre", + "rifasare", + "riflesso", + "riforma", + "rifugio", + "rigare", + "rigettato", + "righello", + "rilassato", + "rilevato", + "rimanere", + "rimbalzo", + "rimedio", + "rimorchio", + "rinascita", + "rincaro", + "rinforzo", + "rinnovo", + "rinomato", + "rinsavito", + "rintocco", + "rinuncia", + "rinvenire", + "riparato", + "ripetuto", + "ripieno", + "riportare", + "ripresa", + "ripulire", + "risata", + "rischio", + "riserva", + "risibile", + "riso", + "rispetto", + "ristoro", + "risultato", + "risvolto", + "ritardo", + "ritegno", + "ritmico", + "ritrovo", + "riunione", + "riva", + "riverso", + "rivincita", + "rivolto", + "rizoma", + "roba", + "robotico", + "robusto", + "roccia", + "roco", + "rodaggio", + "rodere", + "roditore", + "rogito", + "rollio", + "romantico", + "rompere", + "ronzio", + "rosolare", + "rospo", + "rotante", + "rotondo", + "rotula", + "rovescio", + "rubizzo", + "rubrica", + "ruga", + "rullino", + "rumine", + "rumoroso", + "ruolo", + "rupe", + "russare", + "rustico", + "sabato", + "sabbiare", + "sabotato", + "sagoma", + "salasso", + "saldatura", + "salgemma", + "salivare", + "salmone", + "salone", + "saltare", + "saluto", + "salvo", + "sapere", + "sapido", + "saporito", + "saraceno", + "sarcasmo", + "sarto", + "sassoso", + "satellite", + "satira", + "satollo", + "saturno", + "savana", + "savio", + "saziato", + "sbadiglio", + "sbalzo", + "sbancato", + "sbarra", + "sbattere", + "sbavare", + "sbendare", + "sbirciare", + "sbloccato", + "sbocciato", + "sbrinare", + "sbruffone", + "sbuffare", + "scabroso", + "scadenza", + "scala", + "scambiare", + "scandalo", + "scapola", + "scarso", + "scatenare", + "scavato", + "scelto", + "scenico", + "scettro", + "scheda", + "schiena", + "sciarpa", + "scienza", + "scindere", + "scippo", + "sciroppo", + "scivolo", + "sclerare", + "scodella", + "scolpito", + "scomparto", + "sconforto", + "scoprire", + "scorta", + "scossone", + "scozzese", + "scriba", + "scrollare", + "scrutinio", + "scuderia", + "scultore", + "scuola", + "scuro", + "scusare", + "sdebitare", + "sdoganare", + "seccatura", + "secondo", + "sedano", + "seggiola", + "segnalato", + "segregato", + "seguito", + "selciato", + "selettivo", + "sella", + "selvaggio", + "semaforo", + "sembrare", + "seme", + "seminato", + "sempre", + "senso", + "sentire", + "sepolto", + "sequenza", + "serata", + "serbato", + "sereno", + "serio", + "serpente", + "serraglio", + "servire", + "sestina", + "setola", + "settimana", + "sfacelo", + "sfaldare", + "sfamato", + "sfarzoso", + "sfaticato", + "sfera", + "sfida", + "sfilato", + "sfinge", + "sfocato", + "sfoderare", + "sfogo", + "sfoltire", + "sforzato", + "sfratto", + "sfruttato", + "sfuggito", + "sfumare", + "sfuso", + "sgabello", + "sgarbato", + "sgonfiare", + "sgorbio", + "sgrassato", + "sguardo", + "sibilo", + "siccome", + "sierra", + "sigla", + "signore", + "silenzio", + "sillaba", + "simbolo", + "simpatico", + "simulato", + "sinfonia", + "singolo", + "sinistro", + "sino", + "sintesi", + "sinusoide", + "sipario", + "sisma", + "sistole", + "situato", + "slitta", + "slogatura", + "sloveno", + "smarrito", + "smemorato", + "smentito", + "smeraldo", + "smilzo", + "smontare", + "smottato", + "smussato", + "snellire", + "snervato", + "snodo", + "sobbalzo", + "sobrio", + "soccorso", + "sociale", + "sodale", + "soffitto", + "sogno", + "soldato", + "solenne", + "solido", + "sollazzo", + "solo", + "solubile", + "solvente", + "somatico", + "somma", + "sonda", + "sonetto", + "sonnifero", + "sopire", + "soppeso", + "sopra", + "sorgere", + "sorpasso", + "sorriso", + "sorso", + "sorteggio", + "sorvolato", + "sospiro", + "sosta", + "sottile", + "spada", + "spalla", + "spargere", + "spatola", + "spavento", + "spazzola", + "specie", + "spedire", + "spegnere", + "spelatura", + "speranza", + "spessore", + "spettrale", + "spezzato", + "spia", + "spigoloso", + "spillato", + "spinoso", + "spirale", + "splendido", + "sportivo", + "sposo", + "spranga", + "sprecare", + "spronato", + "spruzzo", + "spuntino", + "squillo", + "sradicare", + "srotolato", + "stabile", + "stacco", + "staffa", + "stagnare", + "stampato", + "stantio", + "starnuto", + "stasera", + "statuto", + "stelo", + "steppa", + "sterzo", + "stiletto", + "stima", + "stirpe", + "stivale", + "stizzoso", + "stonato", + "storico", + "strappo", + "stregato", + "stridulo", + "strozzare", + "strutto", + "stuccare", + "stufo", + "stupendo", + "subentro", + "succoso", + "sudore", + "suggerito", + "sugo", + "sultano", + "suonare", + "superbo", + "supporto", + "surgelato", + "surrogato", + "sussurro", + "sutura", + "svagare", + "svedese", + "sveglio", + "svelare", + "svenuto", + "svezia", + "sviluppo", + "svista", + "svizzera", + "svolta", + "svuotare", + "tabacco", + "tabulato", + "tacciare", + "taciturno", + "tale", + "talismano", + "tampone", + "tannino", + "tara", + "tardivo", + "targato", + "tariffa", + "tarpare", + "tartaruga", + "tasto", + "tattico", + "taverna", + "tavolata", + "tazza", + "teca", + "tecnico", + "telefono", + "temerario", + "tempo", + "temuto", + "tendone", + "tenero", + "tensione", + "tentacolo", + "teorema", + "terme", + "terrazzo", + "terzetto", + "tesi", + "tesserato", + "testato", + "tetro", + "tettoia", + "tifare", + "tigella", + "timbro", + "tinto", + "tipico", + "tipografo", + "tiraggio", + "tiro", + "titanio", + "titolo", + "titubante", + "tizio", + "tizzone", + "toccare", + "tollerare", + "tolto", + "tombola", + "tomo", + "tonfo", + "tonsilla", + "topazio", + "topologia", + "toppa", + "torba", + "tornare", + "torrone", + "tortora", + "toscano", + "tossire", + "tostatura", + "totano", + "trabocco", + "trachea", + "trafila", + "tragedia", + "tralcio", + "tramonto", + "transito", + "trapano", + "trarre", + "trasloco", + "trattato", + "trave", + "treccia", + "tremolio", + "trespolo", + "tributo", + "tricheco", + "trifoglio", + "trillo", + "trincea", + "trio", + "tristezza", + "triturato", + "trivella", + "tromba", + "trono", + "troppo", + "trottola", + "trovare", + "truccato", + "tubatura", + "tuffato", + "tulipano", + "tumulto", + "tunisia", + "turbare", + "turchino", + "tuta", + "tutela", + "ubicato", + "uccello", + "uccisore", + "udire", + "uditivo", + "uffa", + "ufficio", + "uguale", + "ulisse", + "ultimato", + "umano", + "umile", + "umorismo", + "uncinetto", + "ungere", + "ungherese", + "unicorno", + "unificato", + "unisono", + "unitario", + "unte", + "uovo", + "upupa", + "uragano", + "urgenza", + "urlo", + "usanza", + "usato", + "uscito", + "usignolo", + "usuraio", + "utensile", + "utilizzo", + "utopia", + "vacante", + "vaccinato", + "vagabondo", + "vagliato", + "valanga", + "valgo", + "valico", + "valletta", + "valoroso", + "valutare", + "valvola", + "vampata", + "vangare", + "vanitoso", + "vano", + "vantaggio", + "vanvera", + "vapore", + "varano", + "varcato", + "variante", + "vasca", + "vedetta", + "vedova", + "veduto", + "vegetale", + "veicolo", + "velcro", + "velina", + "velluto", + "veloce", + "venato", + "vendemmia", + "vento", + "verace", + "verbale", + "vergogna", + "verifica", + "vero", + "verruca", + "verticale", + "vescica", + "vessillo", + "vestale", + "veterano", + "vetrina", + "vetusto", + "viandante", + "vibrante", + "vicenda", + "vichingo", + "vicinanza", + "vidimare", + "vigilia", + "vigneto", + "vigore", + "vile", + "villano", + "vimini", + "vincitore", + "viola", + "vipera", + "virgola", + "virologo", + "virulento", + "viscoso", + "visione", + "vispo", + "vissuto", + "visura", + "vita", + "vitello", + "vittima", + "vivanda", + "vivido", + "viziare", + "voce", + "voga", + "volatile", + "volere", + "volpe", + "voragine", + "vulcano", + "zampogna", + "zanna", + "zappato", + "zattera", + "zavorra", + "zefiro", + "zelante", + "zelo", + "zenzero", + "zerbino", + "zibetto", + "zinco", + "zircone", + "zitto", + "zolla", + "zotico", + "zucchero", + "zufolo", + "zulu", + "zuppa" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt new file mode 100644 index 000000000..fe5b01535 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeJapanese { + val wordList: List = + listOf( + "あいこくしん", + "あいさつ", + "あいだ", + "あおぞら", + "あかちゃん", + "あきる", + "あけがた", + "あける", + "あこがれる", + "あさい", + "あさひ", + "あしあと", + "あじわう", + "あずかる", + "あずき", + "あそぶ", + "あたえる", + "あたためる", + "あたりまえ", + "あたる", + "あつい", + "あつかう", + "あっしゅく", + "あつまり", + "あつめる", + "あてな", + "あてはまる", + "あひる", + "あぶら", + "あぶる", + "あふれる", + "あまい", + "あまど", + "あまやかす", + "あまり", + "あみもの", + "あめりか", + "あやまる", + "あゆむ", + "あらいぐま", + "あらし", + "あらすじ", + "あらためる", + "あらゆる", + "あらわす", + "ありがとう", + "あわせる", + "あわてる", + "あんい", + "あんがい", + "あんこ", + "あんぜん", + "あんてい", + "あんない", + "あんまり", + "いいだす", + "いおん", + "いがい", + "いがく", + "いきおい", + "いきなり", + "いきもの", + "いきる", + "いくじ", + "いくぶん", + "いけばな", + "いけん", + "いこう", + "いこく", + "いこつ", + "いさましい", + "いさん", + "いしき", + "いじゅう", + "いじょう", + "いじわる", + "いずみ", + "いずれ", + "いせい", + "いせえび", + "いせかい", + "いせき", + "いぜん", + "いそうろう", + "いそがしい", + "いだい", + "いだく", + "いたずら", + "いたみ", + "いたりあ", + "いちおう", + "いちじ", + "いちど", + "いちば", + "いちぶ", + "いちりゅう", + "いつか", + "いっしゅん", + "いっせい", + "いっそう", + "いったん", + "いっち", + "いってい", + "いっぽう", + "いてざ", + "いてん", + "いどう", + "いとこ", + "いない", + "いなか", + "いねむり", + "いのち", + "いのる", + "いはつ", + "いばる", + "いはん", + "いびき", + "いひん", + "いふく", + "いへん", + "いほう", + "いみん", + "いもうと", + "いもたれ", + "いもり", + "いやがる", + "いやす", + "いよかん", + "いよく", + "いらい", + "いらすと", + "いりぐち", + "いりょう", + "いれい", + "いれもの", + "いれる", + "いろえんぴつ", + "いわい", + "いわう", + "いわかん", + "いわば", + "いわゆる", + "いんげんまめ", + "いんさつ", + "いんしょう", + "いんよう", + "うえき", + "うえる", + "うおざ", + "うがい", + "うかぶ", + "うかべる", + "うきわ", + "うくらいな", + "うくれれ", + "うけたまわる", + "うけつけ", + "うけとる", + "うけもつ", + "うける", + "うごかす", + "うごく", + "うこん", + "うさぎ", + "うしなう", + "うしろがみ", + "うすい", + "うすぎ", + "うすぐらい", + "うすめる", + "うせつ", + "うちあわせ", + "うちがわ", + "うちき", + "うちゅう", + "うっかり", + "うつくしい", + "うったえる", + "うつる", + "うどん", + "うなぎ", + "うなじ", + "うなずく", + "うなる", + "うねる", + "うのう", + "うぶげ", + "うぶごえ", + "うまれる", + "うめる", + "うもう", + "うやまう", + "うよく", + "うらがえす", + "うらぐち", + "うらない", + "うりあげ", + "うりきれ", + "うるさい", + "うれしい", + "うれゆき", + "うれる", + "うろこ", + "うわき", + "うわさ", + "うんこう", + "うんちん", + "うんてん", + "うんどう", + "えいえん", + "えいが", + "えいきょう", + "えいご", + "えいせい", + "えいぶん", + "えいよう", + "えいわ", + "えおり", + "えがお", + "えがく", + "えきたい", + "えくせる", + "えしゃく", + "えすて", + "えつらん", + "えのぐ", + "えほうまき", + "えほん", + "えまき", + "えもじ", + "えもの", + "えらい", + "えらぶ", + "えりあ", + "えんえん", + "えんかい", + "えんぎ", + "えんげき", + "えんしゅう", + "えんぜつ", + "えんそく", + "えんちょう", + "えんとつ", + "おいかける", + "おいこす", + "おいしい", + "おいつく", + "おうえん", + "おうさま", + "おうじ", + "おうせつ", + "おうたい", + "おうふく", + "おうべい", + "おうよう", + "おえる", + "おおい", + "おおう", + "おおどおり", + "おおや", + "おおよそ", + "おかえり", + "おかず", + "おがむ", + "おかわり", + "おぎなう", + "おきる", + "おくさま", + "おくじょう", + "おくりがな", + "おくる", + "おくれる", + "おこす", + "おこなう", + "おこる", + "おさえる", + "おさない", + "おさめる", + "おしいれ", + "おしえる", + "おじぎ", + "おじさん", + "おしゃれ", + "おそらく", + "おそわる", + "おたがい", + "おたく", + "おだやか", + "おちつく", + "おっと", + "おつり", + "おでかけ", + "おとしもの", + "おとなしい", + "おどり", + "おどろかす", + "おばさん", + "おまいり", + "おめでとう", + "おもいで", + "おもう", + "おもたい", + "おもちゃ", + "おやつ", + "おやゆび", + "およぼす", + "おらんだ", + "おろす", + "おんがく", + "おんけい", + "おんしゃ", + "おんせん", + "おんだん", + "おんちゅう", + "おんどけい", + "かあつ", + "かいが", + "がいき", + "がいけん", + "がいこう", + "かいさつ", + "かいしゃ", + "かいすいよく", + "かいぜん", + "かいぞうど", + "かいつう", + "かいてん", + "かいとう", + "かいふく", + "がいへき", + "かいほう", + "かいよう", + "がいらい", + "かいわ", + "かえる", + "かおり", + "かかえる", + "かがく", + "かがし", + "かがみ", + "かくご", + "かくとく", + "かざる", + "がぞう", + "かたい", + "かたち", + "がちょう", + "がっきゅう", + "がっこう", + "がっさん", + "がっしょう", + "かなざわし", + "かのう", + "がはく", + "かぶか", + "かほう", + "かほご", + "かまう", + "かまぼこ", + "かめれおん", + "かゆい", + "かようび", + "からい", + "かるい", + "かろう", + "かわく", + "かわら", + "がんか", + "かんけい", + "かんこう", + "かんしゃ", + "かんそう", + "かんたん", + "かんち", + "がんばる", + "きあい", + "きあつ", + "きいろ", + "ぎいん", + "きうい", + "きうん", + "きえる", + "きおう", + "きおく", + "きおち", + "きおん", + "きかい", + "きかく", + "きかんしゃ", + "ききて", + "きくばり", + "きくらげ", + "きけんせい", + "きこう", + "きこえる", + "きこく", + "きさい", + "きさく", + "きさま", + "きさらぎ", + "ぎじかがく", + "ぎしき", + "ぎじたいけん", + "ぎじにってい", + "ぎじゅつしゃ", + "きすう", + "きせい", + "きせき", + "きせつ", + "きそう", + "きぞく", + "きぞん", + "きたえる", + "きちょう", + "きつえん", + "ぎっちり", + "きつつき", + "きつね", + "きてい", + "きどう", + "きどく", + "きない", + "きなが", + "きなこ", + "きぬごし", + "きねん", + "きのう", + "きのした", + "きはく", + "きびしい", + "きひん", + "きふく", + "きぶん", + "きぼう", + "きほん", + "きまる", + "きみつ", + "きむずかしい", + "きめる", + "きもだめし", + "きもち", + "きもの", + "きゃく", + "きやく", + "ぎゅうにく", + "きよう", + "きょうりゅう", + "きらい", + "きらく", + "きりん", + "きれい", + "きれつ", + "きろく", + "ぎろん", + "きわめる", + "ぎんいろ", + "きんかくじ", + "きんじょ", + "きんようび", + "ぐあい", + "くいず", + "くうかん", + "くうき", + "くうぐん", + "くうこう", + "ぐうせい", + "くうそう", + "ぐうたら", + "くうふく", + "くうぼ", + "くかん", + "くきょう", + "くげん", + "ぐこう", + "くさい", + "くさき", + "くさばな", + "くさる", + "くしゃみ", + "くしょう", + "くすのき", + "くすりゆび", + "くせげ", + "くせん", + "ぐたいてき", + "くださる", + "くたびれる", + "くちこみ", + "くちさき", + "くつした", + "ぐっすり", + "くつろぐ", + "くとうてん", + "くどく", + "くなん", + "くねくね", + "くのう", + "くふう", + "くみあわせ", + "くみたてる", + "くめる", + "くやくしょ", + "くらす", + "くらべる", + "くるま", + "くれる", + "くろう", + "くわしい", + "ぐんかん", + "ぐんしょく", + "ぐんたい", + "ぐんて", + "けあな", + "けいかく", + "けいけん", + "けいこ", + "けいさつ", + "げいじゅつ", + "けいたい", + "げいのうじん", + "けいれき", + "けいろ", + "けおとす", + "けおりもの", + "げきか", + "げきげん", + "げきだん", + "げきちん", + "げきとつ", + "げきは", + "げきやく", + "げこう", + "げこくじょう", + "げざい", + "けさき", + "げざん", + "けしき", + "けしごむ", + "けしょう", + "げすと", + "けたば", + "けちゃっぷ", + "けちらす", + "けつあつ", + "けつい", + "けつえき", + "けっこん", + "けつじょ", + "けっせき", + "けってい", + "けつまつ", + "げつようび", + "げつれい", + "けつろん", + "げどく", + "けとばす", + "けとる", + "けなげ", + "けなす", + "けなみ", + "けぬき", + "げねつ", + "けねん", + "けはい", + "げひん", + "けぶかい", + "げぼく", + "けまり", + "けみかる", + "けむし", + "けむり", + "けもの", + "けらい", + "けろけろ", + "けわしい", + "けんい", + "けんえつ", + "けんお", + "けんか", + "げんき", + "けんげん", + "けんこう", + "けんさく", + "けんしゅう", + "けんすう", + "げんそう", + "けんちく", + "けんてい", + "けんとう", + "けんない", + "けんにん", + "げんぶつ", + "けんま", + "けんみん", + "けんめい", + "けんらん", + "けんり", + "こあくま", + "こいぬ", + "こいびと", + "ごうい", + "こうえん", + "こうおん", + "こうかん", + "ごうきゅう", + "ごうけい", + "こうこう", + "こうさい", + "こうじ", + "こうすい", + "ごうせい", + "こうそく", + "こうたい", + "こうちゃ", + "こうつう", + "こうてい", + "こうどう", + "こうない", + "こうはい", + "ごうほう", + "ごうまん", + "こうもく", + "こうりつ", + "こえる", + "こおり", + "ごかい", + "ごがつ", + "ごかん", + "こくご", + "こくさい", + "こくとう", + "こくない", + "こくはく", + "こぐま", + "こけい", + "こける", + "ここのか", + "こころ", + "こさめ", + "こしつ", + "こすう", + "こせい", + "こせき", + "こぜん", + "こそだて", + "こたい", + "こたえる", + "こたつ", + "こちょう", + "こっか", + "こつこつ", + "こつばん", + "こつぶ", + "こてい", + "こてん", + "ことがら", + "ことし", + "ことば", + "ことり", + "こなごな", + "こねこね", + "このまま", + "このみ", + "このよ", + "ごはん", + "こひつじ", + "こふう", + "こふん", + "こぼれる", + "ごまあぶら", + "こまかい", + "ごますり", + "こまつな", + "こまる", + "こむぎこ", + "こもじ", + "こもち", + "こもの", + "こもん", + "こやく", + "こやま", + "こゆう", + "こゆび", + "こよい", + "こよう", + "こりる", + "これくしょん", + "ころっけ", + "こわもて", + "こわれる", + "こんいん", + "こんかい", + "こんき", + "こんしゅう", + "こんすい", + "こんだて", + "こんとん", + "こんなん", + "こんびに", + "こんぽん", + "こんまけ", + "こんや", + "こんれい", + "こんわく", + "ざいえき", + "さいかい", + "さいきん", + "ざいげん", + "ざいこ", + "さいしょ", + "さいせい", + "ざいたく", + "ざいちゅう", + "さいてき", + "ざいりょう", + "さうな", + "さかいし", + "さがす", + "さかな", + "さかみち", + "さがる", + "さぎょう", + "さくし", + "さくひん", + "さくら", + "さこく", + "さこつ", + "さずかる", + "ざせき", + "さたん", + "さつえい", + "ざつおん", + "ざっか", + "ざつがく", + "さっきょく", + "ざっし", + "さつじん", + "ざっそう", + "さつたば", + "さつまいも", + "さてい", + "さといも", + "さとう", + "さとおや", + "さとし", + "さとる", + "さのう", + "さばく", + "さびしい", + "さべつ", + "さほう", + "さほど", + "さます", + "さみしい", + "さみだれ", + "さむけ", + "さめる", + "さやえんどう", + "さゆう", + "さよう", + "さよく", + "さらだ", + "ざるそば", + "さわやか", + "さわる", + "さんいん", + "さんか", + "さんきゃく", + "さんこう", + "さんさい", + "ざんしょ", + "さんすう", + "さんせい", + "さんそ", + "さんち", + "さんま", + "さんみ", + "さんらん", + "しあい", + "しあげ", + "しあさって", + "しあわせ", + "しいく", + "しいん", + "しうち", + "しえい", + "しおけ", + "しかい", + "しかく", + "じかん", + "しごと", + "しすう", + "じだい", + "したうけ", + "したぎ", + "したて", + "したみ", + "しちょう", + "しちりん", + "しっかり", + "しつじ", + "しつもん", + "してい", + "してき", + "してつ", + "じてん", + "じどう", + "しなぎれ", + "しなもの", + "しなん", + "しねま", + "しねん", + "しのぐ", + "しのぶ", + "しはい", + "しばかり", + "しはつ", + "しはらい", + "しはん", + "しひょう", + "しふく", + "じぶん", + "しへい", + "しほう", + "しほん", + "しまう", + "しまる", + "しみん", + "しむける", + "じむしょ", + "しめい", + "しめる", + "しもん", + "しゃいん", + "しゃうん", + "しゃおん", + "じゃがいも", + "しやくしょ", + "しゃくほう", + "しゃけん", + "しゃこ", + "しゃざい", + "しゃしん", + "しゃせん", + "しゃそう", + "しゃたい", + "しゃちょう", + "しゃっきん", + "じゃま", + "しゃりん", + "しゃれい", + "じゆう", + "じゅうしょ", + "しゅくはく", + "じゅしん", + "しゅっせき", + "しゅみ", + "しゅらば", + "じゅんばん", + "しょうかい", + "しょくたく", + "しょっけん", + "しょどう", + "しょもつ", + "しらせる", + "しらべる", + "しんか", + "しんこう", + "じんじゃ", + "しんせいじ", + "しんちく", + "しんりん", + "すあげ", + "すあし", + "すあな", + "ずあん", + "すいえい", + "すいか", + "すいとう", + "ずいぶん", + "すいようび", + "すうがく", + "すうじつ", + "すうせん", + "すおどり", + "すきま", + "すくう", + "すくない", + "すける", + "すごい", + "すこし", + "ずさん", + "すずしい", + "すすむ", + "すすめる", + "すっかり", + "ずっしり", + "ずっと", + "すてき", + "すてる", + "すねる", + "すのこ", + "すはだ", + "すばらしい", + "ずひょう", + "ずぶぬれ", + "すぶり", + "すふれ", + "すべて", + "すべる", + "ずほう", + "すぼん", + "すまい", + "すめし", + "すもう", + "すやき", + "すらすら", + "するめ", + "すれちがう", + "すろっと", + "すわる", + "すんぜん", + "すんぽう", + "せあぶら", + "せいかつ", + "せいげん", + "せいじ", + "せいよう", + "せおう", + "せかいかん", + "せきにん", + "せきむ", + "せきゆ", + "せきらんうん", + "せけん", + "せこう", + "せすじ", + "せたい", + "せたけ", + "せっかく", + "せっきゃく", + "ぜっく", + "せっけん", + "せっこつ", + "せっさたくま", + "せつぞく", + "せつだん", + "せつでん", + "せっぱん", + "せつび", + "せつぶん", + "せつめい", + "せつりつ", + "せなか", + "せのび", + "せはば", + "せびろ", + "せぼね", + "せまい", + "せまる", + "せめる", + "せもたれ", + "せりふ", + "ぜんあく", + "せんい", + "せんえい", + "せんか", + "せんきょ", + "せんく", + "せんげん", + "ぜんご", + "せんさい", + "せんしゅ", + "せんすい", + "せんせい", + "せんぞ", + "せんたく", + "せんちょう", + "せんてい", + "せんとう", + "せんぬき", + "せんねん", + "せんぱい", + "ぜんぶ", + "ぜんぽう", + "せんむ", + "せんめんじょ", + "せんもん", + "せんやく", + "せんゆう", + "せんよう", + "ぜんら", + "ぜんりゃく", + "せんれい", + "せんろ", + "そあく", + "そいとげる", + "そいね", + "そうがんきょう", + "そうき", + "そうご", + "そうしん", + "そうだん", + "そうなん", + "そうび", + "そうめん", + "そうり", + "そえもの", + "そえん", + "そがい", + "そげき", + "そこう", + "そこそこ", + "そざい", + "そしな", + "そせい", + "そせん", + "そそぐ", + "そだてる", + "そつう", + "そつえん", + "そっかん", + "そつぎょう", + "そっけつ", + "そっこう", + "そっせん", + "そっと", + "そとがわ", + "そとづら", + "そなえる", + "そなた", + "そふぼ", + "そぼく", + "そぼろ", + "そまつ", + "そまる", + "そむく", + "そむりえ", + "そめる", + "そもそも", + "そよかぜ", + "そらまめ", + "そろう", + "そんかい", + "そんけい", + "そんざい", + "そんしつ", + "そんぞく", + "そんちょう", + "ぞんび", + "ぞんぶん", + "そんみん", + "たあい", + "たいいん", + "たいうん", + "たいえき", + "たいおう", + "だいがく", + "たいき", + "たいぐう", + "たいけん", + "たいこ", + "たいざい", + "だいじょうぶ", + "だいすき", + "たいせつ", + "たいそう", + "だいたい", + "たいちょう", + "たいてい", + "だいどころ", + "たいない", + "たいねつ", + "たいのう", + "たいはん", + "だいひょう", + "たいふう", + "たいへん", + "たいほ", + "たいまつばな", + "たいみんぐ", + "たいむ", + "たいめん", + "たいやき", + "たいよう", + "たいら", + "たいりょく", + "たいる", + "たいわん", + "たうえ", + "たえる", + "たおす", + "たおる", + "たおれる", + "たかい", + "たかね", + "たきび", + "たくさん", + "たこく", + "たこやき", + "たさい", + "たしざん", + "だじゃれ", + "たすける", + "たずさわる", + "たそがれ", + "たたかう", + "たたく", + "ただしい", + "たたみ", + "たちばな", + "だっかい", + "だっきゃく", + "だっこ", + "だっしゅつ", + "だったい", + "たてる", + "たとえる", + "たなばた", + "たにん", + "たぬき", + "たのしみ", + "たはつ", + "たぶん", + "たべる", + "たぼう", + "たまご", + "たまる", + "だむる", + "ためいき", + "ためす", + "ためる", + "たもつ", + "たやすい", + "たよる", + "たらす", + "たりきほんがん", + "たりょう", + "たりる", + "たると", + "たれる", + "たれんと", + "たろっと", + "たわむれる", + "だんあつ", + "たんい", + "たんおん", + "たんか", + "たんき", + "たんけん", + "たんご", + "たんさん", + "たんじょうび", + "だんせい", + "たんそく", + "たんたい", + "だんち", + "たんてい", + "たんとう", + "だんな", + "たんにん", + "だんねつ", + "たんのう", + "たんぴん", + "だんぼう", + "たんまつ", + "たんめい", + "だんれつ", + "だんろ", + "だんわ", + "ちあい", + "ちあん", + "ちいき", + "ちいさい", + "ちえん", + "ちかい", + "ちから", + "ちきゅう", + "ちきん", + "ちけいず", + "ちけん", + "ちこく", + "ちさい", + "ちしき", + "ちしりょう", + "ちせい", + "ちそう", + "ちたい", + "ちたん", + "ちちおや", + "ちつじょ", + "ちてき", + "ちてん", + "ちぬき", + "ちぬり", + "ちのう", + "ちひょう", + "ちへいせん", + "ちほう", + "ちまた", + "ちみつ", + "ちみどろ", + "ちめいど", + "ちゃんこなべ", + "ちゅうい", + "ちゆりょく", + "ちょうし", + "ちょさくけん", + "ちらし", + "ちらみ", + "ちりがみ", + "ちりょう", + "ちるど", + "ちわわ", + "ちんたい", + "ちんもく", + "ついか", + "ついたち", + "つうか", + "つうじょう", + "つうはん", + "つうわ", + "つかう", + "つかれる", + "つくね", + "つくる", + "つけね", + "つける", + "つごう", + "つたえる", + "つづく", + "つつじ", + "つつむ", + "つとめる", + "つながる", + "つなみ", + "つねづね", + "つのる", + "つぶす", + "つまらない", + "つまる", + "つみき", + "つめたい", + "つもり", + "つもる", + "つよい", + "つるぼ", + "つるみく", + "つわもの", + "つわり", + "てあし", + "てあて", + "てあみ", + "ていおん", + "ていか", + "ていき", + "ていけい", + "ていこく", + "ていさつ", + "ていし", + "ていせい", + "ていたい", + "ていど", + "ていねい", + "ていひょう", + "ていへん", + "ていぼう", + "てうち", + "ておくれ", + "てきとう", + "てくび", + "でこぼこ", + "てさぎょう", + "てさげ", + "てすり", + "てそう", + "てちがい", + "てちょう", + "てつがく", + "てつづき", + "でっぱ", + "てつぼう", + "てつや", + "でぬかえ", + "てぬき", + "てぬぐい", + "てのひら", + "てはい", + "てぶくろ", + "てふだ", + "てほどき", + "てほん", + "てまえ", + "てまきずし", + "てみじか", + "てみやげ", + "てらす", + "てれび", + "てわけ", + "てわたし", + "でんあつ", + "てんいん", + "てんかい", + "てんき", + "てんぐ", + "てんけん", + "てんごく", + "てんさい", + "てんし", + "てんすう", + "でんち", + "てんてき", + "てんとう", + "てんない", + "てんぷら", + "てんぼうだい", + "てんめつ", + "てんらんかい", + "でんりょく", + "でんわ", + "どあい", + "といれ", + "どうかん", + "とうきゅう", + "どうぐ", + "とうし", + "とうむぎ", + "とおい", + "とおか", + "とおく", + "とおす", + "とおる", + "とかい", + "とかす", + "ときおり", + "ときどき", + "とくい", + "とくしゅう", + "とくてん", + "とくに", + "とくべつ", + "とけい", + "とける", + "とこや", + "とさか", + "としょかん", + "とそう", + "とたん", + "とちゅう", + "とっきゅう", + "とっくん", + "とつぜん", + "とつにゅう", + "とどける", + "ととのえる", + "とない", + "となえる", + "となり", + "とのさま", + "とばす", + "どぶがわ", + "とほう", + "とまる", + "とめる", + "ともだち", + "ともる", + "どようび", + "とらえる", + "とんかつ", + "どんぶり", + "ないかく", + "ないこう", + "ないしょ", + "ないす", + "ないせん", + "ないそう", + "なおす", + "ながい", + "なくす", + "なげる", + "なこうど", + "なさけ", + "なたでここ", + "なっとう", + "なつやすみ", + "ななおし", + "なにごと", + "なにもの", + "なにわ", + "なのか", + "なふだ", + "なまいき", + "なまえ", + "なまみ", + "なみだ", + "なめらか", + "なめる", + "なやむ", + "ならう", + "ならび", + "ならぶ", + "なれる", + "なわとび", + "なわばり", + "にあう", + "にいがた", + "にうけ", + "におい", + "にかい", + "にがて", + "にきび", + "にくしみ", + "にくまん", + "にげる", + "にさんかたんそ", + "にしき", + "にせもの", + "にちじょう", + "にちようび", + "にっか", + "にっき", + "にっけい", + "にっこう", + "にっさん", + "にっしょく", + "にっすう", + "にっせき", + "にってい", + "になう", + "にほん", + "にまめ", + "にもつ", + "にやり", + "にゅういん", + "にりんしゃ", + "にわとり", + "にんい", + "にんか", + "にんき", + "にんげん", + "にんしき", + "にんずう", + "にんそう", + "にんたい", + "にんち", + "にんてい", + "にんにく", + "にんぷ", + "にんまり", + "にんむ", + "にんめい", + "にんよう", + "ぬいくぎ", + "ぬかす", + "ぬぐいとる", + "ぬぐう", + "ぬくもり", + "ぬすむ", + "ぬまえび", + "ぬめり", + "ぬらす", + "ぬんちゃく", + "ねあげ", + "ねいき", + "ねいる", + "ねいろ", + "ねぐせ", + "ねくたい", + "ねくら", + "ねこぜ", + "ねこむ", + "ねさげ", + "ねすごす", + "ねそべる", + "ねだん", + "ねつい", + "ねっしん", + "ねつぞう", + "ねったいぎょ", + "ねぶそく", + "ねふだ", + "ねぼう", + "ねほりはほり", + "ねまき", + "ねまわし", + "ねみみ", + "ねむい", + "ねむたい", + "ねもと", + "ねらう", + "ねわざ", + "ねんいり", + "ねんおし", + "ねんかん", + "ねんきん", + "ねんぐ", + "ねんざ", + "ねんし", + "ねんちゃく", + "ねんど", + "ねんぴ", + "ねんぶつ", + "ねんまつ", + "ねんりょう", + "ねんれい", + "のいず", + "のおづま", + "のがす", + "のきなみ", + "のこぎり", + "のこす", + "のこる", + "のせる", + "のぞく", + "のぞむ", + "のたまう", + "のちほど", + "のっく", + "のばす", + "のはら", + "のべる", + "のぼる", + "のみもの", + "のやま", + "のらいぬ", + "のらねこ", + "のりもの", + "のりゆき", + "のれん", + "のんき", + "ばあい", + "はあく", + "ばあさん", + "ばいか", + "ばいく", + "はいけん", + "はいご", + "はいしん", + "はいすい", + "はいせん", + "はいそう", + "はいち", + "ばいばい", + "はいれつ", + "はえる", + "はおる", + "はかい", + "ばかり", + "はかる", + "はくしゅ", + "はけん", + "はこぶ", + "はさみ", + "はさん", + "はしご", + "ばしょ", + "はしる", + "はせる", + "ぱそこん", + "はそん", + "はたん", + "はちみつ", + "はつおん", + "はっかく", + "はづき", + "はっきり", + "はっくつ", + "はっけん", + "はっこう", + "はっさん", + "はっしん", + "はったつ", + "はっちゅう", + "はってん", + "はっぴょう", + "はっぽう", + "はなす", + "はなび", + "はにかむ", + "はぶらし", + "はみがき", + "はむかう", + "はめつ", + "はやい", + "はやし", + "はらう", + "はろうぃん", + "はわい", + "はんい", + "はんえい", + "はんおん", + "はんかく", + "はんきょう", + "ばんぐみ", + "はんこ", + "はんしゃ", + "はんすう", + "はんだん", + "ぱんち", + "ぱんつ", + "はんてい", + "はんとし", + "はんのう", + "はんぱ", + "はんぶん", + "はんぺん", + "はんぼうき", + "はんめい", + "はんらん", + "はんろん", + "ひいき", + "ひうん", + "ひえる", + "ひかく", + "ひかり", + "ひかる", + "ひかん", + "ひくい", + "ひけつ", + "ひこうき", + "ひこく", + "ひさい", + "ひさしぶり", + "ひさん", + "びじゅつかん", + "ひしょ", + "ひそか", + "ひそむ", + "ひたむき", + "ひだり", + "ひたる", + "ひつぎ", + "ひっこし", + "ひっし", + "ひつじゅひん", + "ひっす", + "ひつぜん", + "ぴったり", + "ぴっちり", + "ひつよう", + "ひてい", + "ひとごみ", + "ひなまつり", + "ひなん", + "ひねる", + "ひはん", + "ひびく", + "ひひょう", + "ひほう", + "ひまわり", + "ひまん", + "ひみつ", + "ひめい", + "ひめじし", + "ひやけ", + "ひやす", + "ひよう", + "びょうき", + "ひらがな", + "ひらく", + "ひりつ", + "ひりょう", + "ひるま", + "ひるやすみ", + "ひれい", + "ひろい", + "ひろう", + "ひろき", + "ひろゆき", + "ひんかく", + "ひんけつ", + "ひんこん", + "ひんしゅ", + "ひんそう", + "ぴんち", + "ひんぱん", + "びんぼう", + "ふあん", + "ふいうち", + "ふうけい", + "ふうせん", + "ぷうたろう", + "ふうとう", + "ふうふ", + "ふえる", + "ふおん", + "ふかい", + "ふきん", + "ふくざつ", + "ふくぶくろ", + "ふこう", + "ふさい", + "ふしぎ", + "ふじみ", + "ふすま", + "ふせい", + "ふせぐ", + "ふそく", + "ぶたにく", + "ふたん", + "ふちょう", + "ふつう", + "ふつか", + "ふっかつ", + "ふっき", + "ふっこく", + "ぶどう", + "ふとる", + "ふとん", + "ふのう", + "ふはい", + "ふひょう", + "ふへん", + "ふまん", + "ふみん", + "ふめつ", + "ふめん", + "ふよう", + "ふりこ", + "ふりる", + "ふるい", + "ふんいき", + "ぶんがく", + "ぶんぐ", + "ふんしつ", + "ぶんせき", + "ふんそう", + "ぶんぽう", + "へいあん", + "へいおん", + "へいがい", + "へいき", + "へいげん", + "へいこう", + "へいさ", + "へいしゃ", + "へいせつ", + "へいそ", + "へいたく", + "へいてん", + "へいねつ", + "へいわ", + "へきが", + "へこむ", + "べにいろ", + "べにしょうが", + "へらす", + "へんかん", + "べんきょう", + "べんごし", + "へんさい", + "へんたい", + "べんり", + "ほあん", + "ほいく", + "ぼうぎょ", + "ほうこく", + "ほうそう", + "ほうほう", + "ほうもん", + "ほうりつ", + "ほえる", + "ほおん", + "ほかん", + "ほきょう", + "ぼきん", + "ほくろ", + "ほけつ", + "ほけん", + "ほこう", + "ほこる", + "ほしい", + "ほしつ", + "ほしゅ", + "ほしょう", + "ほせい", + "ほそい", + "ほそく", + "ほたて", + "ほたる", + "ぽちぶくろ", + "ほっきょく", + "ほっさ", + "ほったん", + "ほとんど", + "ほめる", + "ほんい", + "ほんき", + "ほんけ", + "ほんしつ", + "ほんやく", + "まいにち", + "まかい", + "まかせる", + "まがる", + "まける", + "まこと", + "まさつ", + "まじめ", + "ますく", + "まぜる", + "まつり", + "まとめ", + "まなぶ", + "まぬけ", + "まねく", + "まほう", + "まもる", + "まゆげ", + "まよう", + "まろやか", + "まわす", + "まわり", + "まわる", + "まんが", + "まんきつ", + "まんぞく", + "まんなか", + "みいら", + "みうち", + "みえる", + "みがく", + "みかた", + "みかん", + "みけん", + "みこん", + "みじかい", + "みすい", + "みすえる", + "みせる", + "みっか", + "みつかる", + "みつける", + "みてい", + "みとめる", + "みなと", + "みなみかさい", + "みねらる", + "みのう", + "みのがす", + "みほん", + "みもと", + "みやげ", + "みらい", + "みりょく", + "みわく", + "みんか", + "みんぞく", + "むいか", + "むえき", + "むえん", + "むかい", + "むかう", + "むかえ", + "むかし", + "むぎちゃ", + "むける", + "むげん", + "むさぼる", + "むしあつい", + "むしば", + "むじゅん", + "むしろ", + "むすう", + "むすこ", + "むすぶ", + "むすめ", + "むせる", + "むせん", + "むちゅう", + "むなしい", + "むのう", + "むやみ", + "むよう", + "むらさき", + "むりょう", + "むろん", + "めいあん", + "めいうん", + "めいえん", + "めいかく", + "めいきょく", + "めいさい", + "めいし", + "めいそう", + "めいぶつ", + "めいれい", + "めいわく", + "めぐまれる", + "めざす", + "めした", + "めずらしい", + "めだつ", + "めまい", + "めやす", + "めんきょ", + "めんせき", + "めんどう", + "もうしあげる", + "もうどうけん", + "もえる", + "もくし", + "もくてき", + "もくようび", + "もちろん", + "もどる", + "もらう", + "もんく", + "もんだい", + "やおや", + "やける", + "やさい", + "やさしい", + "やすい", + "やすたろう", + "やすみ", + "やせる", + "やそう", + "やたい", + "やちん", + "やっと", + "やっぱり", + "やぶる", + "やめる", + "ややこしい", + "やよい", + "やわらかい", + "ゆうき", + "ゆうびんきょく", + "ゆうべ", + "ゆうめい", + "ゆけつ", + "ゆしゅつ", + "ゆせん", + "ゆそう", + "ゆたか", + "ゆちゃく", + "ゆでる", + "ゆにゅう", + "ゆびわ", + "ゆらい", + "ゆれる", + "ようい", + "ようか", + "ようきゅう", + "ようじ", + "ようす", + "ようちえん", + "よかぜ", + "よかん", + "よきん", + "よくせい", + "よくぼう", + "よけい", + "よごれる", + "よさん", + "よしゅう", + "よそう", + "よそく", + "よっか", + "よてい", + "よどがわく", + "よねつ", + "よやく", + "よゆう", + "よろこぶ", + "よろしい", + "らいう", + "らくがき", + "らくご", + "らくさつ", + "らくだ", + "らしんばん", + "らせん", + "らぞく", + "らたい", + "らっか", + "られつ", + "りえき", + "りかい", + "りきさく", + "りきせつ", + "りくぐん", + "りくつ", + "りけん", + "りこう", + "りせい", + "りそう", + "りそく", + "りてん", + "りねん", + "りゆう", + "りゅうがく", + "りよう", + "りょうり", + "りょかん", + "りょくちゃ", + "りょこう", + "りりく", + "りれき", + "りろん", + "りんご", + "るいけい", + "るいさい", + "るいじ", + "るいせき", + "るすばん", + "るりがわら", + "れいかん", + "れいぎ", + "れいせい", + "れいぞうこ", + "れいとう", + "れいぼう", + "れきし", + "れきだい", + "れんあい", + "れんけい", + "れんこん", + "れんさい", + "れんしゅう", + "れんぞく", + "れんらく", + "ろうか", + "ろうご", + "ろうじん", + "ろうそく", + "ろくが", + "ろこつ", + "ろじうら", + "ろしゅつ", + "ろせん", + "ろてん", + "ろめん", + "ろれつ", + "ろんぎ", + "ろんぱ", + "ろんぶん", + "ろんり", + "わかす", + "わかめ", + "わかやま", + "わかれる", + "わしつ", + "わじまし", + "わすれもの", + "わらう", + "われる" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt new file mode 100644 index 000000000..044cc3314 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeKorean { + val wordList: List = + listOf( + "가격", + "가끔", + "가난", + "가능", + "가득", + "가르침", + "가뭄", + "가방", + "가상", + "가슴", + "가운데", + "가을", + "가이드", + "가입", + "가장", + "가정", + "가족", + "가죽", + "각오", + "각자", + "간격", + "간부", + "간섭", + "간장", + "간접", + "간판", + "갈등", + "갈비", + "갈색", + "갈증", + "감각", + "감기", + "감소", + "감수성", + "감자", + "감정", + "갑자기", + "강남", + "강당", + "강도", + "강력히", + "강변", + "강북", + "강사", + "강수량", + "강아지", + "강원도", + "강의", + "강제", + "강조", + "같이", + "개구리", + "개나리", + "개방", + "개별", + "개선", + "개성", + "개인", + "객관적", + "거실", + "거액", + "거울", + "거짓", + "거품", + "걱정", + "건강", + "건물", + "건설", + "건조", + "건축", + "걸음", + "검사", + "검토", + "게시판", + "게임", + "겨울", + "견해", + "결과", + "결국", + "결론", + "결석", + "결승", + "결심", + "결정", + "결혼", + "경계", + "경고", + "경기", + "경력", + "경복궁", + "경비", + "경상도", + "경영", + "경우", + "경쟁", + "경제", + "경주", + "경찰", + "경치", + "경향", + "경험", + "계곡", + "계단", + "계란", + "계산", + "계속", + "계약", + "계절", + "계층", + "계획", + "고객", + "고구려", + "고궁", + "고급", + "고등학생", + "고무신", + "고민", + "고양이", + "고장", + "고전", + "고집", + "고춧가루", + "고통", + "고향", + "곡식", + "골목", + "골짜기", + "골프", + "공간", + "공개", + "공격", + "공군", + "공급", + "공기", + "공동", + "공무원", + "공부", + "공사", + "공식", + "공업", + "공연", + "공원", + "공장", + "공짜", + "공책", + "공통", + "공포", + "공항", + "공휴일", + "과목", + "과일", + "과장", + "과정", + "과학", + "관객", + "관계", + "관광", + "관념", + "관람", + "관련", + "관리", + "관습", + "관심", + "관점", + "관찰", + "광경", + "광고", + "광장", + "광주", + "괴로움", + "굉장히", + "교과서", + "교문", + "교복", + "교실", + "교양", + "교육", + "교장", + "교직", + "교통", + "교환", + "교훈", + "구경", + "구름", + "구멍", + "구별", + "구분", + "구석", + "구성", + "구속", + "구역", + "구입", + "구청", + "구체적", + "국가", + "국기", + "국내", + "국립", + "국물", + "국민", + "국수", + "국어", + "국왕", + "국적", + "국제", + "국회", + "군대", + "군사", + "군인", + "궁극적", + "권리", + "권위", + "권투", + "귀국", + "귀신", + "규정", + "규칙", + "균형", + "그날", + "그냥", + "그늘", + "그러나", + "그룹", + "그릇", + "그림", + "그제서야", + "그토록", + "극복", + "극히", + "근거", + "근교", + "근래", + "근로", + "근무", + "근본", + "근원", + "근육", + "근처", + "글씨", + "글자", + "금강산", + "금고", + "금년", + "금메달", + "금액", + "금연", + "금요일", + "금지", + "긍정적", + "기간", + "기관", + "기념", + "기능", + "기독교", + "기둥", + "기록", + "기름", + "기법", + "기본", + "기분", + "기쁨", + "기숙사", + "기술", + "기억", + "기업", + "기온", + "기운", + "기원", + "기적", + "기준", + "기침", + "기혼", + "기획", + "긴급", + "긴장", + "길이", + "김밥", + "김치", + "김포공항", + "깍두기", + "깜빡", + "깨달음", + "깨소금", + "껍질", + "꼭대기", + "꽃잎", + "나들이", + "나란히", + "나머지", + "나물", + "나침반", + "나흘", + "낙엽", + "난방", + "날개", + "날씨", + "날짜", + "남녀", + "남대문", + "남매", + "남산", + "남자", + "남편", + "남학생", + "낭비", + "낱말", + "내년", + "내용", + "내일", + "냄비", + "냄새", + "냇물", + "냉동", + "냉면", + "냉방", + "냉장고", + "넥타이", + "넷째", + "노동", + "노란색", + "노력", + "노인", + "녹음", + "녹차", + "녹화", + "논리", + "논문", + "논쟁", + "놀이", + "농구", + "농담", + "농민", + "농부", + "농업", + "농장", + "농촌", + "높이", + "눈동자", + "눈물", + "눈썹", + "뉴욕", + "느낌", + "늑대", + "능동적", + "능력", + "다방", + "다양성", + "다음", + "다이어트", + "다행", + "단계", + "단골", + "단독", + "단맛", + "단순", + "단어", + "단위", + "단점", + "단체", + "단추", + "단편", + "단풍", + "달걀", + "달러", + "달력", + "달리", + "닭고기", + "담당", + "담배", + "담요", + "담임", + "답변", + "답장", + "당근", + "당분간", + "당연히", + "당장", + "대규모", + "대낮", + "대단히", + "대답", + "대도시", + "대략", + "대량", + "대륙", + "대문", + "대부분", + "대신", + "대응", + "대장", + "대전", + "대접", + "대중", + "대책", + "대출", + "대충", + "대통령", + "대학", + "대한민국", + "대합실", + "대형", + "덩어리", + "데이트", + "도대체", + "도덕", + "도둑", + "도망", + "도서관", + "도심", + "도움", + "도입", + "도자기", + "도저히", + "도전", + "도중", + "도착", + "독감", + "독립", + "독서", + "독일", + "독창적", + "동화책", + "뒷모습", + "뒷산", + "딸아이", + "마누라", + "마늘", + "마당", + "마라톤", + "마련", + "마무리", + "마사지", + "마약", + "마요네즈", + "마을", + "마음", + "마이크", + "마중", + "마지막", + "마찬가지", + "마찰", + "마흔", + "막걸리", + "막내", + "막상", + "만남", + "만두", + "만세", + "만약", + "만일", + "만점", + "만족", + "만화", + "많이", + "말기", + "말씀", + "말투", + "맘대로", + "망원경", + "매년", + "매달", + "매력", + "매번", + "매스컴", + "매일", + "매장", + "맥주", + "먹이", + "먼저", + "먼지", + "멀리", + "메일", + "며느리", + "며칠", + "면담", + "멸치", + "명단", + "명령", + "명예", + "명의", + "명절", + "명칭", + "명함", + "모금", + "모니터", + "모델", + "모든", + "모범", + "모습", + "모양", + "모임", + "모조리", + "모집", + "모퉁이", + "목걸이", + "목록", + "목사", + "목소리", + "목숨", + "목적", + "목표", + "몰래", + "몸매", + "몸무게", + "몸살", + "몸속", + "몸짓", + "몸통", + "몹시", + "무관심", + "무궁화", + "무더위", + "무덤", + "무릎", + "무슨", + "무엇", + "무역", + "무용", + "무조건", + "무지개", + "무척", + "문구", + "문득", + "문법", + "문서", + "문제", + "문학", + "문화", + "물가", + "물건", + "물결", + "물고기", + "물론", + "물리학", + "물음", + "물질", + "물체", + "미국", + "미디어", + "미사일", + "미술", + "미역", + "미용실", + "미움", + "미인", + "미팅", + "미혼", + "민간", + "민족", + "민주", + "믿음", + "밀가루", + "밀리미터", + "밑바닥", + "바가지", + "바구니", + "바나나", + "바늘", + "바닥", + "바닷가", + "바람", + "바이러스", + "바탕", + "박물관", + "박사", + "박수", + "반대", + "반드시", + "반말", + "반발", + "반성", + "반응", + "반장", + "반죽", + "반지", + "반찬", + "받침", + "발가락", + "발걸음", + "발견", + "발달", + "발레", + "발목", + "발바닥", + "발생", + "발음", + "발자국", + "발전", + "발톱", + "발표", + "밤하늘", + "밥그릇", + "밥맛", + "밥상", + "밥솥", + "방금", + "방면", + "방문", + "방바닥", + "방법", + "방송", + "방식", + "방안", + "방울", + "방지", + "방학", + "방해", + "방향", + "배경", + "배꼽", + "배달", + "배드민턴", + "백두산", + "백색", + "백성", + "백인", + "백제", + "백화점", + "버릇", + "버섯", + "버튼", + "번개", + "번역", + "번지", + "번호", + "벌금", + "벌레", + "벌써", + "범위", + "범인", + "범죄", + "법률", + "법원", + "법적", + "법칙", + "베이징", + "벨트", + "변경", + "변동", + "변명", + "변신", + "변호사", + "변화", + "별도", + "별명", + "별일", + "병실", + "병아리", + "병원", + "보관", + "보너스", + "보라색", + "보람", + "보름", + "보상", + "보안", + "보자기", + "보장", + "보전", + "보존", + "보통", + "보편적", + "보험", + "복도", + "복사", + "복숭아", + "복습", + "볶음", + "본격적", + "본래", + "본부", + "본사", + "본성", + "본인", + "본질", + "볼펜", + "봉사", + "봉지", + "봉투", + "부근", + "부끄러움", + "부담", + "부동산", + "부문", + "부분", + "부산", + "부상", + "부엌", + "부인", + "부작용", + "부장", + "부정", + "부족", + "부지런히", + "부친", + "부탁", + "부품", + "부회장", + "북부", + "북한", + "분노", + "분량", + "분리", + "분명", + "분석", + "분야", + "분위기", + "분필", + "분홍색", + "불고기", + "불과", + "불교", + "불꽃", + "불만", + "불법", + "불빛", + "불안", + "불이익", + "불행", + "브랜드", + "비극", + "비난", + "비닐", + "비둘기", + "비디오", + "비로소", + "비만", + "비명", + "비밀", + "비바람", + "비빔밥", + "비상", + "비용", + "비율", + "비중", + "비타민", + "비판", + "빌딩", + "빗물", + "빗방울", + "빗줄기", + "빛깔", + "빨간색", + "빨래", + "빨리", + "사건", + "사계절", + "사나이", + "사냥", + "사람", + "사랑", + "사립", + "사모님", + "사물", + "사방", + "사상", + "사생활", + "사설", + "사슴", + "사실", + "사업", + "사용", + "사월", + "사장", + "사전", + "사진", + "사촌", + "사춘기", + "사탕", + "사투리", + "사흘", + "산길", + "산부인과", + "산업", + "산책", + "살림", + "살인", + "살짝", + "삼계탕", + "삼국", + "삼십", + "삼월", + "삼촌", + "상관", + "상금", + "상대", + "상류", + "상반기", + "상상", + "상식", + "상업", + "상인", + "상자", + "상점", + "상처", + "상추", + "상태", + "상표", + "상품", + "상황", + "새벽", + "색깔", + "색연필", + "생각", + "생명", + "생물", + "생방송", + "생산", + "생선", + "생신", + "생일", + "생활", + "서랍", + "서른", + "서명", + "서민", + "서비스", + "서양", + "서울", + "서적", + "서점", + "서쪽", + "서클", + "석사", + "석유", + "선거", + "선물", + "선배", + "선생", + "선수", + "선원", + "선장", + "선전", + "선택", + "선풍기", + "설거지", + "설날", + "설렁탕", + "설명", + "설문", + "설사", + "설악산", + "설치", + "설탕", + "섭씨", + "성공", + "성당", + "성명", + "성별", + "성인", + "성장", + "성적", + "성질", + "성함", + "세금", + "세미나", + "세상", + "세월", + "세종대왕", + "세탁", + "센터", + "센티미터", + "셋째", + "소규모", + "소극적", + "소금", + "소나기", + "소년", + "소득", + "소망", + "소문", + "소설", + "소속", + "소아과", + "소용", + "소원", + "소음", + "소중히", + "소지품", + "소질", + "소풍", + "소형", + "속담", + "속도", + "속옷", + "손가락", + "손길", + "손녀", + "손님", + "손등", + "손목", + "손뼉", + "손실", + "손질", + "손톱", + "손해", + "솔직히", + "솜씨", + "송아지", + "송이", + "송편", + "쇠고기", + "쇼핑", + "수건", + "수년", + "수단", + "수돗물", + "수동적", + "수면", + "수명", + "수박", + "수상", + "수석", + "수술", + "수시로", + "수업", + "수염", + "수영", + "수입", + "수준", + "수집", + "수출", + "수컷", + "수필", + "수학", + "수험생", + "수화기", + "숙녀", + "숙소", + "숙제", + "순간", + "순서", + "순수", + "순식간", + "순위", + "숟가락", + "술병", + "술집", + "숫자", + "스님", + "스물", + "스스로", + "스승", + "스웨터", + "스위치", + "스케이트", + "스튜디오", + "스트레스", + "스포츠", + "슬쩍", + "슬픔", + "습관", + "습기", + "승객", + "승리", + "승부", + "승용차", + "승진", + "시각", + "시간", + "시골", + "시금치", + "시나리오", + "시댁", + "시리즈", + "시멘트", + "시민", + "시부모", + "시선", + "시설", + "시스템", + "시아버지", + "시어머니", + "시월", + "시인", + "시일", + "시작", + "시장", + "시절", + "시점", + "시중", + "시즌", + "시집", + "시청", + "시합", + "시험", + "식구", + "식기", + "식당", + "식량", + "식료품", + "식물", + "식빵", + "식사", + "식생활", + "식초", + "식탁", + "식품", + "신고", + "신규", + "신념", + "신문", + "신발", + "신비", + "신사", + "신세", + "신용", + "신제품", + "신청", + "신체", + "신화", + "실감", + "실내", + "실력", + "실례", + "실망", + "실수", + "실습", + "실시", + "실장", + "실정", + "실질적", + "실천", + "실체", + "실컷", + "실태", + "실패", + "실험", + "실현", + "심리", + "심부름", + "심사", + "심장", + "심정", + "심판", + "쌍둥이", + "씨름", + "씨앗", + "아가씨", + "아나운서", + "아드님", + "아들", + "아쉬움", + "아스팔트", + "아시아", + "아울러", + "아저씨", + "아줌마", + "아직", + "아침", + "아파트", + "아프리카", + "아픔", + "아홉", + "아흔", + "악기", + "악몽", + "악수", + "안개", + "안경", + "안과", + "안내", + "안녕", + "안동", + "안방", + "안부", + "안주", + "알루미늄", + "알코올", + "암시", + "암컷", + "압력", + "앞날", + "앞문", + "애인", + "애정", + "액수", + "앨범", + "야간", + "야단", + "야옹", + "약간", + "약국", + "약속", + "약수", + "약점", + "약품", + "약혼녀", + "양념", + "양력", + "양말", + "양배추", + "양주", + "양파", + "어둠", + "어려움", + "어른", + "어젯밤", + "어쨌든", + "어쩌다가", + "어쩐지", + "언니", + "언덕", + "언론", + "언어", + "얼굴", + "얼른", + "얼음", + "얼핏", + "엄마", + "업무", + "업종", + "업체", + "엉덩이", + "엉망", + "엉터리", + "엊그제", + "에너지", + "에어컨", + "엔진", + "여건", + "여고생", + "여관", + "여군", + "여권", + "여대생", + "여덟", + "여동생", + "여든", + "여론", + "여름", + "여섯", + "여성", + "여왕", + "여인", + "여전히", + "여직원", + "여학생", + "여행", + "역사", + "역시", + "역할", + "연결", + "연구", + "연극", + "연기", + "연락", + "연설", + "연세", + "연속", + "연습", + "연애", + "연예인", + "연인", + "연장", + "연주", + "연출", + "연필", + "연합", + "연휴", + "열기", + "열매", + "열쇠", + "열심히", + "열정", + "열차", + "열흘", + "염려", + "엽서", + "영국", + "영남", + "영상", + "영양", + "영역", + "영웅", + "영원히", + "영하", + "영향", + "영혼", + "영화", + "옆구리", + "옆방", + "옆집", + "예감", + "예금", + "예방", + "예산", + "예상", + "예선", + "예술", + "예습", + "예식장", + "예약", + "예전", + "예절", + "예정", + "예컨대", + "옛날", + "오늘", + "오락", + "오랫동안", + "오렌지", + "오로지", + "오른발", + "오븐", + "오십", + "오염", + "오월", + "오전", + "오직", + "오징어", + "오페라", + "오피스텔", + "오히려", + "옥상", + "옥수수", + "온갖", + "온라인", + "온몸", + "온종일", + "온통", + "올가을", + "올림픽", + "올해", + "옷차림", + "와이셔츠", + "와인", + "완성", + "완전", + "왕비", + "왕자", + "왜냐하면", + "왠지", + "외갓집", + "외국", + "외로움", + "외삼촌", + "외출", + "외침", + "외할머니", + "왼발", + "왼손", + "왼쪽", + "요금", + "요일", + "요즘", + "요청", + "용기", + "용서", + "용어", + "우산", + "우선", + "우승", + "우연히", + "우정", + "우체국", + "우편", + "운동", + "운명", + "운반", + "운전", + "운행", + "울산", + "울음", + "움직임", + "웃어른", + "웃음", + "워낙", + "원고", + "원래", + "원서", + "원숭이", + "원인", + "원장", + "원피스", + "월급", + "월드컵", + "월세", + "월요일", + "웨이터", + "위반", + "위법", + "위성", + "위원", + "위험", + "위협", + "윗사람", + "유난히", + "유럽", + "유명", + "유물", + "유산", + "유적", + "유치원", + "유학", + "유행", + "유형", + "육군", + "육상", + "육십", + "육체", + "은행", + "음력", + "음료", + "음반", + "음성", + "음식", + "음악", + "음주", + "의견", + "의논", + "의문", + "의복", + "의식", + "의심", + "의외로", + "의욕", + "의원", + "의학", + "이것", + "이곳", + "이념", + "이놈", + "이달", + "이대로", + "이동", + "이렇게", + "이력서", + "이론적", + "이름", + "이민", + "이발소", + "이별", + "이불", + "이빨", + "이상", + "이성", + "이슬", + "이야기", + "이용", + "이웃", + "이월", + "이윽고", + "이익", + "이전", + "이중", + "이튿날", + "이틀", + "이혼", + "인간", + "인격", + "인공", + "인구", + "인근", + "인기", + "인도", + "인류", + "인물", + "인생", + "인쇄", + "인연", + "인원", + "인재", + "인종", + "인천", + "인체", + "인터넷", + "인하", + "인형", + "일곱", + "일기", + "일단", + "일대", + "일등", + "일반", + "일본", + "일부", + "일상", + "일생", + "일손", + "일요일", + "일월", + "일정", + "일종", + "일주일", + "일찍", + "일체", + "일치", + "일행", + "일회용", + "임금", + "임무", + "입대", + "입력", + "입맛", + "입사", + "입술", + "입시", + "입원", + "입장", + "입학", + "자가용", + "자격", + "자극", + "자동", + "자랑", + "자부심", + "자식", + "자신", + "자연", + "자원", + "자율", + "자전거", + "자정", + "자존심", + "자판", + "작가", + "작년", + "작성", + "작업", + "작용", + "작은딸", + "작품", + "잔디", + "잔뜩", + "잔치", + "잘못", + "잠깐", + "잠수함", + "잠시", + "잠옷", + "잠자리", + "잡지", + "장관", + "장군", + "장기간", + "장래", + "장례", + "장르", + "장마", + "장면", + "장모", + "장미", + "장비", + "장사", + "장소", + "장식", + "장애인", + "장인", + "장점", + "장차", + "장학금", + "재능", + "재빨리", + "재산", + "재생", + "재작년", + "재정", + "재채기", + "재판", + "재학", + "재활용", + "저것", + "저고리", + "저곳", + "저녁", + "저런", + "저렇게", + "저번", + "저울", + "저절로", + "저축", + "적극", + "적당히", + "적성", + "적용", + "적응", + "전개", + "전공", + "전기", + "전달", + "전라도", + "전망", + "전문", + "전반", + "전부", + "전세", + "전시", + "전용", + "전자", + "전쟁", + "전주", + "전철", + "전체", + "전통", + "전혀", + "전후", + "절대", + "절망", + "절반", + "절약", + "절차", + "점검", + "점수", + "점심", + "점원", + "점점", + "점차", + "접근", + "접시", + "접촉", + "젓가락", + "정거장", + "정도", + "정류장", + "정리", + "정말", + "정면", + "정문", + "정반대", + "정보", + "정부", + "정비", + "정상", + "정성", + "정오", + "정원", + "정장", + "정지", + "정치", + "정확히", + "제공", + "제과점", + "제대로", + "제목", + "제발", + "제법", + "제삿날", + "제안", + "제일", + "제작", + "제주도", + "제출", + "제품", + "제한", + "조각", + "조건", + "조금", + "조깅", + "조명", + "조미료", + "조상", + "조선", + "조용히", + "조절", + "조정", + "조직", + "존댓말", + "존재", + "졸업", + "졸음", + "종교", + "종로", + "종류", + "종소리", + "종업원", + "종종", + "종합", + "좌석", + "죄인", + "주관적", + "주름", + "주말", + "주머니", + "주먹", + "주문", + "주민", + "주방", + "주변", + "주식", + "주인", + "주일", + "주장", + "주전자", + "주택", + "준비", + "줄거리", + "줄기", + "줄무늬", + "중간", + "중계방송", + "중국", + "중년", + "중단", + "중독", + "중반", + "중부", + "중세", + "중소기업", + "중순", + "중앙", + "중요", + "중학교", + "즉석", + "즉시", + "즐거움", + "증가", + "증거", + "증권", + "증상", + "증세", + "지각", + "지갑", + "지경", + "지극히", + "지금", + "지급", + "지능", + "지름길", + "지리산", + "지방", + "지붕", + "지식", + "지역", + "지우개", + "지원", + "지적", + "지점", + "지진", + "지출", + "직선", + "직업", + "직원", + "직장", + "진급", + "진동", + "진로", + "진료", + "진리", + "진짜", + "진찰", + "진출", + "진통", + "진행", + "질문", + "질병", + "질서", + "짐작", + "집단", + "집안", + "집중", + "짜증", + "찌꺼기", + "차남", + "차라리", + "차량", + "차림", + "차별", + "차선", + "차츰", + "착각", + "찬물", + "찬성", + "참가", + "참기름", + "참새", + "참석", + "참여", + "참외", + "참조", + "찻잔", + "창가", + "창고", + "창구", + "창문", + "창밖", + "창작", + "창조", + "채널", + "채점", + "책가방", + "책방", + "책상", + "책임", + "챔피언", + "처벌", + "처음", + "천국", + "천둥", + "천장", + "천재", + "천천히", + "철도", + "철저히", + "철학", + "첫날", + "첫째", + "청년", + "청바지", + "청소", + "청춘", + "체계", + "체력", + "체온", + "체육", + "체중", + "체험", + "초등학생", + "초반", + "초밥", + "초상화", + "초순", + "초여름", + "초원", + "초저녁", + "초점", + "초청", + "초콜릿", + "촛불", + "총각", + "총리", + "총장", + "촬영", + "최근", + "최상", + "최선", + "최신", + "최악", + "최종", + "추석", + "추억", + "추진", + "추천", + "추측", + "축구", + "축소", + "축제", + "축하", + "출근", + "출발", + "출산", + "출신", + "출연", + "출입", + "출장", + "출판", + "충격", + "충고", + "충돌", + "충분히", + "충청도", + "취업", + "취직", + "취향", + "치약", + "친구", + "친척", + "칠십", + "칠월", + "칠판", + "침대", + "침묵", + "침실", + "칫솔", + "칭찬", + "카메라", + "카운터", + "칼국수", + "캐릭터", + "캠퍼스", + "캠페인", + "커튼", + "컨디션", + "컬러", + "컴퓨터", + "코끼리", + "코미디", + "콘서트", + "콜라", + "콤플렉스", + "콩나물", + "쾌감", + "쿠데타", + "크림", + "큰길", + "큰딸", + "큰소리", + "큰아들", + "큰어머니", + "큰일", + "큰절", + "클래식", + "클럽", + "킬로", + "타입", + "타자기", + "탁구", + "탁자", + "탄생", + "태권도", + "태양", + "태풍", + "택시", + "탤런트", + "터널", + "터미널", + "테니스", + "테스트", + "테이블", + "텔레비전", + "토론", + "토마토", + "토요일", + "통계", + "통과", + "통로", + "통신", + "통역", + "통일", + "통장", + "통제", + "통증", + "통합", + "통화", + "퇴근", + "퇴원", + "퇴직금", + "튀김", + "트럭", + "특급", + "특별", + "특성", + "특수", + "특징", + "특히", + "튼튼히", + "티셔츠", + "파란색", + "파일", + "파출소", + "판결", + "판단", + "판매", + "판사", + "팔십", + "팔월", + "팝송", + "패션", + "팩스", + "팩시밀리", + "팬티", + "퍼센트", + "페인트", + "편견", + "편의", + "편지", + "편히", + "평가", + "평균", + "평생", + "평소", + "평양", + "평일", + "평화", + "포스터", + "포인트", + "포장", + "포함", + "표면", + "표정", + "표준", + "표현", + "품목", + "품질", + "풍경", + "풍속", + "풍습", + "프랑스", + "프린터", + "플라스틱", + "피곤", + "피망", + "피아노", + "필름", + "필수", + "필요", + "필자", + "필통", + "핑계", + "하느님", + "하늘", + "하드웨어", + "하룻밤", + "하반기", + "하숙집", + "하순", + "하여튼", + "하지만", + "하천", + "하품", + "하필", + "학과", + "학교", + "학급", + "학기", + "학년", + "학력", + "학번", + "학부모", + "학비", + "학생", + "학술", + "학습", + "학용품", + "학원", + "학위", + "학자", + "학점", + "한계", + "한글", + "한꺼번에", + "한낮", + "한눈", + "한동안", + "한때", + "한라산", + "한마디", + "한문", + "한번", + "한복", + "한식", + "한여름", + "한쪽", + "할머니", + "할아버지", + "할인", + "함께", + "함부로", + "합격", + "합리적", + "항공", + "항구", + "항상", + "항의", + "해결", + "해군", + "해답", + "해당", + "해물", + "해석", + "해설", + "해수욕장", + "해안", + "핵심", + "핸드백", + "햄버거", + "햇볕", + "햇살", + "행동", + "행복", + "행사", + "행운", + "행위", + "향기", + "향상", + "향수", + "허락", + "허용", + "헬기", + "현관", + "현금", + "현대", + "현상", + "현실", + "현장", + "현재", + "현지", + "혈액", + "협력", + "형부", + "형사", + "형수", + "형식", + "형제", + "형태", + "형편", + "혜택", + "호기심", + "호남", + "호랑이", + "호박", + "호텔", + "호흡", + "혹시", + "홀로", + "홈페이지", + "홍보", + "홍수", + "홍차", + "화면", + "화분", + "화살", + "화요일", + "화장", + "화학", + "확보", + "확인", + "확장", + "확정", + "환갑", + "환경", + "환영", + "환율", + "환자", + "활기", + "활동", + "활발히", + "활용", + "활짝", + "회견", + "회관", + "회복", + "회색", + "회원", + "회장", + "회전", + "횟수", + "횡단보도", + "효율적", + "후반", + "후춧가루", + "훈련", + "훨씬", + "휴식", + "휴일", + "흉내", + "흐름", + "흑백", + "흑인", + "흔적", + "흔히", + "흥미", + "흥분", + "희곡", + "희망", + "희생", + "흰색", + "힘껏" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt new file mode 100644 index 000000000..eb3eebd7e --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeSimplifiedChinese { + val wordList: List = + listOf( + "的", + "一", + "是", + "在", + "不", + "了", + "有", + "和", + "人", + "这", + "中", + "大", + "为", + "上", + "个", + "国", + "我", + "以", + "要", + "他", + "时", + "来", + "用", + "们", + "生", + "到", + "作", + "地", + "于", + "出", + "就", + "分", + "对", + "成", + "会", + "可", + "主", + "发", + "年", + "动", + "同", + "工", + "也", + "能", + "下", + "过", + "子", + "说", + "产", + "种", + "面", + "而", + "方", + "后", + "多", + "定", + "行", + "学", + "法", + "所", + "民", + "得", + "经", + "十", + "三", + "之", + "进", + "着", + "等", + "部", + "度", + "家", + "电", + "力", + "里", + "如", + "水", + "化", + "高", + "自", + "二", + "理", + "起", + "小", + "物", + "现", + "实", + "加", + "量", + "都", + "两", + "体", + "制", + "机", + "当", + "使", + "点", + "从", + "业", + "本", + "去", + "把", + "性", + "好", + "应", + "开", + "它", + "合", + "还", + "因", + "由", + "其", + "些", + "然", + "前", + "外", + "天", + "政", + "四", + "日", + "那", + "社", + "义", + "事", + "平", + "形", + "相", + "全", + "表", + "间", + "样", + "与", + "关", + "各", + "重", + "新", + "线", + "内", + "数", + "正", + "心", + "反", + "你", + "明", + "看", + "原", + "又", + "么", + "利", + "比", + "或", + "但", + "质", + "气", + "第", + "向", + "道", + "命", + "此", + "变", + "条", + "只", + "没", + "结", + "解", + "问", + "意", + "建", + "月", + "公", + "无", + "系", + "军", + "很", + "情", + "者", + "最", + "立", + "代", + "想", + "已", + "通", + "并", + "提", + "直", + "题", + "党", + "程", + "展", + "五", + "果", + "料", + "象", + "员", + "革", + "位", + "入", + "常", + "文", + "总", + "次", + "品", + "式", + "活", + "设", + "及", + "管", + "特", + "件", + "长", + "求", + "老", + "头", + "基", + "资", + "边", + "流", + "路", + "级", + "少", + "图", + "山", + "统", + "接", + "知", + "较", + "将", + "组", + "见", + "计", + "别", + "她", + "手", + "角", + "期", + "根", + "论", + "运", + "农", + "指", + "几", + "九", + "区", + "强", + "放", + "决", + "西", + "被", + "干", + "做", + "必", + "战", + "先", + "回", + "则", + "任", + "取", + "据", + "处", + "队", + "南", + "给", + "色", + "光", + "门", + "即", + "保", + "治", + "北", + "造", + "百", + "规", + "热", + "领", + "七", + "海", + "口", + "东", + "导", + "器", + "压", + "志", + "世", + "金", + "增", + "争", + "济", + "阶", + "油", + "思", + "术", + "极", + "交", + "受", + "联", + "什", + "认", + "六", + "共", + "权", + "收", + "证", + "改", + "清", + "美", + "再", + "采", + "转", + "更", + "单", + "风", + "切", + "打", + "白", + "教", + "速", + "花", + "带", + "安", + "场", + "身", + "车", + "例", + "真", + "务", + "具", + "万", + "每", + "目", + "至", + "达", + "走", + "积", + "示", + "议", + "声", + "报", + "斗", + "完", + "类", + "八", + "离", + "华", + "名", + "确", + "才", + "科", + "张", + "信", + "马", + "节", + "话", + "米", + "整", + "空", + "元", + "况", + "今", + "集", + "温", + "传", + "土", + "许", + "步", + "群", + "广", + "石", + "记", + "需", + "段", + "研", + "界", + "拉", + "林", + "律", + "叫", + "且", + "究", + "观", + "越", + "织", + "装", + "影", + "算", + "低", + "持", + "音", + "众", + "书", + "布", + "复", + "容", + "儿", + "须", + "际", + "商", + "非", + "验", + "连", + "断", + "深", + "难", + "近", + "矿", + "千", + "周", + "委", + "素", + "技", + "备", + "半", + "办", + "青", + "省", + "列", + "习", + "响", + "约", + "支", + "般", + "史", + "感", + "劳", + "便", + "团", + "往", + "酸", + "历", + "市", + "克", + "何", + "除", + "消", + "构", + "府", + "称", + "太", + "准", + "精", + "值", + "号", + "率", + "族", + "维", + "划", + "选", + "标", + "写", + "存", + "候", + "毛", + "亲", + "快", + "效", + "斯", + "院", + "查", + "江", + "型", + "眼", + "王", + "按", + "格", + "养", + "易", + "置", + "派", + "层", + "片", + "始", + "却", + "专", + "状", + "育", + "厂", + "京", + "识", + "适", + "属", + "圆", + "包", + "火", + "住", + "调", + "满", + "县", + "局", + "照", + "参", + "红", + "细", + "引", + "听", + "该", + "铁", + "价", + "严", + "首", + "底", + "液", + "官", + "德", + "随", + "病", + "苏", + "失", + "尔", + "死", + "讲", + "配", + "女", + "黄", + "推", + "显", + "谈", + "罪", + "神", + "艺", + "呢", + "席", + "含", + "企", + "望", + "密", + "批", + "营", + "项", + "防", + "举", + "球", + "英", + "氧", + "势", + "告", + "李", + "台", + "落", + "木", + "帮", + "轮", + "破", + "亚", + "师", + "围", + "注", + "远", + "字", + "材", + "排", + "供", + "河", + "态", + "封", + "另", + "施", + "减", + "树", + "溶", + "怎", + "止", + "案", + "言", + "士", + "均", + "武", + "固", + "叶", + "鱼", + "波", + "视", + "仅", + "费", + "紧", + "爱", + "左", + "章", + "早", + "朝", + "害", + "续", + "轻", + "服", + "试", + "食", + "充", + "兵", + "源", + "判", + "护", + "司", + "足", + "某", + "练", + "差", + "致", + "板", + "田", + "降", + "黑", + "犯", + "负", + "击", + "范", + "继", + "兴", + "似", + "余", + "坚", + "曲", + "输", + "修", + "故", + "城", + "夫", + "够", + "送", + "笔", + "船", + "占", + "右", + "财", + "吃", + "富", + "春", + "职", + "觉", + "汉", + "画", + "功", + "巴", + "跟", + "虽", + "杂", + "飞", + "检", + "吸", + "助", + "升", + "阳", + "互", + "初", + "创", + "抗", + "考", + "投", + "坏", + "策", + "古", + "径", + "换", + "未", + "跑", + "留", + "钢", + "曾", + "端", + "责", + "站", + "简", + "述", + "钱", + "副", + "尽", + "帝", + "射", + "草", + "冲", + "承", + "独", + "令", + "限", + "阿", + "宣", + "环", + "双", + "请", + "超", + "微", + "让", + "控", + "州", + "良", + "轴", + "找", + "否", + "纪", + "益", + "依", + "优", + "顶", + "础", + "载", + "倒", + "房", + "突", + "坐", + "粉", + "敌", + "略", + "客", + "袁", + "冷", + "胜", + "绝", + "析", + "块", + "剂", + "测", + "丝", + "协", + "诉", + "念", + "陈", + "仍", + "罗", + "盐", + "友", + "洋", + "错", + "苦", + "夜", + "刑", + "移", + "频", + "逐", + "靠", + "混", + "母", + "短", + "皮", + "终", + "聚", + "汽", + "村", + "云", + "哪", + "既", + "距", + "卫", + "停", + "烈", + "央", + "察", + "烧", + "迅", + "境", + "若", + "印", + "洲", + "刻", + "括", + "激", + "孔", + "搞", + "甚", + "室", + "待", + "核", + "校", + "散", + "侵", + "吧", + "甲", + "游", + "久", + "菜", + "味", + "旧", + "模", + "湖", + "货", + "损", + "预", + "阻", + "毫", + "普", + "稳", + "乙", + "妈", + "植", + "息", + "扩", + "银", + "语", + "挥", + "酒", + "守", + "拿", + "序", + "纸", + "医", + "缺", + "雨", + "吗", + "针", + "刘", + "啊", + "急", + "唱", + "误", + "训", + "愿", + "审", + "附", + "获", + "茶", + "鲜", + "粮", + "斤", + "孩", + "脱", + "硫", + "肥", + "善", + "龙", + "演", + "父", + "渐", + "血", + "欢", + "械", + "掌", + "歌", + "沙", + "刚", + "攻", + "谓", + "盾", + "讨", + "晚", + "粒", + "乱", + "燃", + "矛", + "乎", + "杀", + "药", + "宁", + "鲁", + "贵", + "钟", + "煤", + "读", + "班", + "伯", + "香", + "介", + "迫", + "句", + "丰", + "培", + "握", + "兰", + "担", + "弦", + "蛋", + "沉", + "假", + "穿", + "执", + "答", + "乐", + "谁", + "顺", + "烟", + "缩", + "征", + "脸", + "喜", + "松", + "脚", + "困", + "异", + "免", + "背", + "星", + "福", + "买", + "染", + "井", + "概", + "慢", + "怕", + "磁", + "倍", + "祖", + "皇", + "促", + "静", + "补", + "评", + "翻", + "肉", + "践", + "尼", + "衣", + "宽", + "扬", + "棉", + "希", + "伤", + "操", + "垂", + "秋", + "宜", + "氢", + "套", + "督", + "振", + "架", + "亮", + "末", + "宪", + "庆", + "编", + "牛", + "触", + "映", + "雷", + "销", + "诗", + "座", + "居", + "抓", + "裂", + "胞", + "呼", + "娘", + "景", + "威", + "绿", + "晶", + "厚", + "盟", + "衡", + "鸡", + "孙", + "延", + "危", + "胶", + "屋", + "乡", + "临", + "陆", + "顾", + "掉", + "呀", + "灯", + "岁", + "措", + "束", + "耐", + "剧", + "玉", + "赵", + "跳", + "哥", + "季", + "课", + "凯", + "胡", + "额", + "款", + "绍", + "卷", + "齐", + "伟", + "蒸", + "殖", + "永", + "宗", + "苗", + "川", + "炉", + "岩", + "弱", + "零", + "杨", + "奏", + "沿", + "露", + "杆", + "探", + "滑", + "镇", + "饭", + "浓", + "航", + "怀", + "赶", + "库", + "夺", + "伊", + "灵", + "税", + "途", + "灭", + "赛", + "归", + "召", + "鼓", + "播", + "盘", + "裁", + "险", + "康", + "唯", + "录", + "菌", + "纯", + "借", + "糖", + "盖", + "横", + "符", + "私", + "努", + "堂", + "域", + "枪", + "润", + "幅", + "哈", + "竟", + "熟", + "虫", + "泽", + "脑", + "壤", + "碳", + "欧", + "遍", + "侧", + "寨", + "敢", + "彻", + "虑", + "斜", + "薄", + "庭", + "纳", + "弹", + "饲", + "伸", + "折", + "麦", + "湿", + "暗", + "荷", + "瓦", + "塞", + "床", + "筑", + "恶", + "户", + "访", + "塔", + "奇", + "透", + "梁", + "刀", + "旋", + "迹", + "卡", + "氯", + "遇", + "份", + "毒", + "泥", + "退", + "洗", + "摆", + "灰", + "彩", + "卖", + "耗", + "夏", + "择", + "忙", + "铜", + "献", + "硬", + "予", + "繁", + "圈", + "雪", + "函", + "亦", + "抽", + "篇", + "阵", + "阴", + "丁", + "尺", + "追", + "堆", + "雄", + "迎", + "泛", + "爸", + "楼", + "避", + "谋", + "吨", + "野", + "猪", + "旗", + "累", + "偏", + "典", + "馆", + "索", + "秦", + "脂", + "潮", + "爷", + "豆", + "忽", + "托", + "惊", + "塑", + "遗", + "愈", + "朱", + "替", + "纤", + "粗", + "倾", + "尚", + "痛", + "楚", + "谢", + "奋", + "购", + "磨", + "君", + "池", + "旁", + "碎", + "骨", + "监", + "捕", + "弟", + "暴", + "割", + "贯", + "殊", + "释", + "词", + "亡", + "壁", + "顿", + "宝", + "午", + "尘", + "闻", + "揭", + "炮", + "残", + "冬", + "桥", + "妇", + "警", + "综", + "招", + "吴", + "付", + "浮", + "遭", + "徐", + "您", + "摇", + "谷", + "赞", + "箱", + "隔", + "订", + "男", + "吹", + "园", + "纷", + "唐", + "败", + "宋", + "玻", + "巨", + "耕", + "坦", + "荣", + "闭", + "湾", + "键", + "凡", + "驻", + "锅", + "救", + "恩", + "剥", + "凝", + "碱", + "齿", + "截", + "炼", + "麻", + "纺", + "禁", + "废", + "盛", + "版", + "缓", + "净", + "睛", + "昌", + "婚", + "涉", + "筒", + "嘴", + "插", + "岸", + "朗", + "庄", + "街", + "藏", + "姑", + "贸", + "腐", + "奴", + "啦", + "惯", + "乘", + "伙", + "恢", + "匀", + "纱", + "扎", + "辩", + "耳", + "彪", + "臣", + "亿", + "璃", + "抵", + "脉", + "秀", + "萨", + "俄", + "网", + "舞", + "店", + "喷", + "纵", + "寸", + "汗", + "挂", + "洪", + "贺", + "闪", + "柬", + "爆", + "烯", + "津", + "稻", + "墙", + "软", + "勇", + "像", + "滚", + "厘", + "蒙", + "芳", + "肯", + "坡", + "柱", + "荡", + "腿", + "仪", + "旅", + "尾", + "轧", + "冰", + "贡", + "登", + "黎", + "削", + "钻", + "勒", + "逃", + "障", + "氨", + "郭", + "峰", + "币", + "港", + "伏", + "轨", + "亩", + "毕", + "擦", + "莫", + "刺", + "浪", + "秘", + "援", + "株", + "健", + "售", + "股", + "岛", + "甘", + "泡", + "睡", + "童", + "铸", + "汤", + "阀", + "休", + "汇", + "舍", + "牧", + "绕", + "炸", + "哲", + "磷", + "绩", + "朋", + "淡", + "尖", + "启", + "陷", + "柴", + "呈", + "徒", + "颜", + "泪", + "稍", + "忘", + "泵", + "蓝", + "拖", + "洞", + "授", + "镜", + "辛", + "壮", + "锋", + "贫", + "虚", + "弯", + "摩", + "泰", + "幼", + "廷", + "尊", + "窗", + "纲", + "弄", + "隶", + "疑", + "氏", + "宫", + "姐", + "震", + "瑞", + "怪", + "尤", + "琴", + "循", + "描", + "膜", + "违", + "夹", + "腰", + "缘", + "珠", + "穷", + "森", + "枝", + "竹", + "沟", + "催", + "绳", + "忆", + "邦", + "剩", + "幸", + "浆", + "栏", + "拥", + "牙", + "贮", + "礼", + "滤", + "钠", + "纹", + "罢", + "拍", + "咱", + "喊", + "袖", + "埃", + "勤", + "罚", + "焦", + "潜", + "伍", + "墨", + "欲", + "缝", + "姓", + "刊", + "饱", + "仿", + "奖", + "铝", + "鬼", + "丽", + "跨", + "默", + "挖", + "链", + "扫", + "喝", + "袋", + "炭", + "污", + "幕", + "诸", + "弧", + "励", + "梅", + "奶", + "洁", + "灾", + "舟", + "鉴", + "苯", + "讼", + "抱", + "毁", + "懂", + "寒", + "智", + "埔", + "寄", + "届", + "跃", + "渡", + "挑", + "丹", + "艰", + "贝", + "碰", + "拔", + "爹", + "戴", + "码", + "梦", + "芽", + "熔", + "赤", + "渔", + "哭", + "敬", + "颗", + "奔", + "铅", + "仲", + "虎", + "稀", + "妹", + "乏", + "珍", + "申", + "桌", + "遵", + "允", + "隆", + "螺", + "仓", + "魏", + "锐", + "晓", + "氮", + "兼", + "隐", + "碍", + "赫", + "拨", + "忠", + "肃", + "缸", + "牵", + "抢", + "博", + "巧", + "壳", + "兄", + "杜", + "讯", + "诚", + "碧", + "祥", + "柯", + "页", + "巡", + "矩", + "悲", + "灌", + "龄", + "伦", + "票", + "寻", + "桂", + "铺", + "圣", + "恐", + "恰", + "郑", + "趣", + "抬", + "荒", + "腾", + "贴", + "柔", + "滴", + "猛", + "阔", + "辆", + "妻", + "填", + "撤", + "储", + "签", + "闹", + "扰", + "紫", + "砂", + "递", + "戏", + "吊", + "陶", + "伐", + "喂", + "疗", + "瓶", + "婆", + "抚", + "臂", + "摸", + "忍", + "虾", + "蜡", + "邻", + "胸", + "巩", + "挤", + "偶", + "弃", + "槽", + "劲", + "乳", + "邓", + "吉", + "仁", + "烂", + "砖", + "租", + "乌", + "舰", + "伴", + "瓜", + "浅", + "丙", + "暂", + "燥", + "橡", + "柳", + "迷", + "暖", + "牌", + "秧", + "胆", + "详", + "簧", + "踏", + "瓷", + "谱", + "呆", + "宾", + "糊", + "洛", + "辉", + "愤", + "竞", + "隙", + "怒", + "粘", + "乃", + "绪", + "肩", + "籍", + "敏", + "涂", + "熙", + "皆", + "侦", + "悬", + "掘", + "享", + "纠", + "醒", + "狂", + "锁", + "淀", + "恨", + "牲", + "霸", + "爬", + "赏", + "逆", + "玩", + "陵", + "祝", + "秒", + "浙", + "貌", + "役", + "彼", + "悉", + "鸭", + "趋", + "凤", + "晨", + "畜", + "辈", + "秩", + "卵", + "署", + "梯", + "炎", + "滩", + "棋", + "驱", + "筛", + "峡", + "冒", + "啥", + "寿", + "译", + "浸", + "泉", + "帽", + "迟", + "硅", + "疆", + "贷", + "漏", + "稿", + "冠", + "嫩", + "胁", + "芯", + "牢", + "叛", + "蚀", + "奥", + "鸣", + "岭", + "羊", + "凭", + "串", + "塘", + "绘", + "酵", + "融", + "盆", + "锡", + "庙", + "筹", + "冻", + "辅", + "摄", + "袭", + "筋", + "拒", + "僚", + "旱", + "钾", + "鸟", + "漆", + "沈", + "眉", + "疏", + "添", + "棒", + "穗", + "硝", + "韩", + "逼", + "扭", + "侨", + "凉", + "挺", + "碗", + "栽", + "炒", + "杯", + "患", + "馏", + "劝", + "豪", + "辽", + "勃", + "鸿", + "旦", + "吏", + "拜", + "狗", + "埋", + "辊", + "掩", + "饮", + "搬", + "骂", + "辞", + "勾", + "扣", + "估", + "蒋", + "绒", + "雾", + "丈", + "朵", + "姆", + "拟", + "宇", + "辑", + "陕", + "雕", + "偿", + "蓄", + "崇", + "剪", + "倡", + "厅", + "咬", + "驶", + "薯", + "刷", + "斥", + "番", + "赋", + "奉", + "佛", + "浇", + "漫", + "曼", + "扇", + "钙", + "桃", + "扶", + "仔", + "返", + "俗", + "亏", + "腔", + "鞋", + "棱", + "覆", + "框", + "悄", + "叔", + "撞", + "骗", + "勘", + "旺", + "沸", + "孤", + "吐", + "孟", + "渠", + "屈", + "疾", + "妙", + "惜", + "仰", + "狠", + "胀", + "谐", + "抛", + "霉", + "桑", + "岗", + "嘛", + "衰", + "盗", + "渗", + "脏", + "赖", + "涌", + "甜", + "曹", + "阅", + "肌", + "哩", + "厉", + "烃", + "纬", + "毅", + "昨", + "伪", + "症", + "煮", + "叹", + "钉", + "搭", + "茎", + "笼", + "酷", + "偷", + "弓", + "锥", + "恒", + "杰", + "坑", + "鼻", + "翼", + "纶", + "叙", + "狱", + "逮", + "罐", + "络", + "棚", + "抑", + "膨", + "蔬", + "寺", + "骤", + "穆", + "冶", + "枯", + "册", + "尸", + "凸", + "绅", + "坯", + "牺", + "焰", + "轰", + "欣", + "晋", + "瘦", + "御", + "锭", + "锦", + "丧", + "旬", + "锻", + "垄", + "搜", + "扑", + "邀", + "亭", + "酯", + "迈", + "舒", + "脆", + "酶", + "闲", + "忧", + "酚", + "顽", + "羽", + "涨", + "卸", + "仗", + "陪", + "辟", + "惩", + "杭", + "姚", + "肚", + "捉", + "飘", + "漂", + "昆", + "欺", + "吾", + "郎", + "烷", + "汁", + "呵", + "饰", + "萧", + "雅", + "邮", + "迁", + "燕", + "撒", + "姻", + "赴", + "宴", + "烦", + "债", + "帐", + "斑", + "铃", + "旨", + "醇", + "董", + "饼", + "雏", + "姿", + "拌", + "傅", + "腹", + "妥", + "揉", + "贤", + "拆", + "歪", + "葡", + "胺", + "丢", + "浩", + "徽", + "昂", + "垫", + "挡", + "览", + "贪", + "慰", + "缴", + "汪", + "慌", + "冯", + "诺", + "姜", + "谊", + "凶", + "劣", + "诬", + "耀", + "昏", + "躺", + "盈", + "骑", + "乔", + "溪", + "丛", + "卢", + "抹", + "闷", + "咨", + "刮", + "驾", + "缆", + "悟", + "摘", + "铒", + "掷", + "颇", + "幻", + "柄", + "惠", + "惨", + "佳", + "仇", + "腊", + "窝", + "涤", + "剑", + "瞧", + "堡", + "泼", + "葱", + "罩", + "霍", + "捞", + "胎", + "苍", + "滨", + "俩", + "捅", + "湘", + "砍", + "霞", + "邵", + "萄", + "疯", + "淮", + "遂", + "熊", + "粪", + "烘", + "宿", + "档", + "戈", + "驳", + "嫂", + "裕", + "徙", + "箭", + "捐", + "肠", + "撑", + "晒", + "辨", + "殿", + "莲", + "摊", + "搅", + "酱", + "屏", + "疫", + "哀", + "蔡", + "堵", + "沫", + "皱", + "畅", + "叠", + "阁", + "莱", + "敲", + "辖", + "钩", + "痕", + "坝", + "巷", + "饿", + "祸", + "丘", + "玄", + "溜", + "曰", + "逻", + "彭", + "尝", + "卿", + "妨", + "艇", + "吞", + "韦", + "怨", + "矮", + "歇" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt new file mode 100644 index 000000000..66e6f5ab0 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeSpanish { + val wordList: List = + listOf( + "ábaco", + "abdomen", + "abeja", + "abierto", + "abogado", + "abono", + "aborto", + "abrazo", + "abrir", + "abuelo", + "abuso", + "acabar", + "academia", + "acceso", + "acción", + "aceite", + "acelga", + "acento", + "aceptar", + "ácido", + "aclarar", + "acné", + "acoger", + "acoso", + "activo", + "acto", + "actriz", + "actuar", + "acudir", + "acuerdo", + "acusar", + "adicto", + "admitir", + "adoptar", + "adorno", + "aduana", + "adulto", + "aéreo", + "afectar", + "afición", + "afinar", + "afirmar", + "ágil", + "agitar", + "agonía", + "agosto", + "agotar", + "agregar", + "agrio", + "agua", + "agudo", + "águila", + "aguja", + "ahogo", + "ahorro", + "aire", + "aislar", + "ajedrez", + "ajeno", + "ajuste", + "alacrán", + "alambre", + "alarma", + "alba", + "álbum", + "alcalde", + "aldea", + "alegre", + "alejar", + "alerta", + "aleta", + "alfiler", + "alga", + "algodón", + "aliado", + "aliento", + "alivio", + "alma", + "almeja", + "almíbar", + "altar", + "alteza", + "altivo", + "alto", + "altura", + "alumno", + "alzar", + "amable", + "amante", + "amapola", + "amargo", + "amasar", + "ámbar", + "ámbito", + "ameno", + "amigo", + "amistad", + "amor", + "amparo", + "amplio", + "ancho", + "anciano", + "ancla", + "andar", + "andén", + "anemia", + "ángulo", + "anillo", + "ánimo", + "anís", + "anotar", + "antena", + "antiguo", + "antojo", + "anual", + "anular", + "anuncio", + "añadir", + "añejo", + "año", + "apagar", + "aparato", + "apetito", + "apio", + "aplicar", + "apodo", + "aporte", + "apoyo", + "aprender", + "aprobar", + "apuesta", + "apuro", + "arado", + "araña", + "arar", + "árbitro", + "árbol", + "arbusto", + "archivo", + "arco", + "arder", + "ardilla", + "arduo", + "área", + "árido", + "aries", + "armonía", + "arnés", + "aroma", + "arpa", + "arpón", + "arreglo", + "arroz", + "arruga", + "arte", + "artista", + "asa", + "asado", + "asalto", + "ascenso", + "asegurar", + "aseo", + "asesor", + "asiento", + "asilo", + "asistir", + "asno", + "asombro", + "áspero", + "astilla", + "astro", + "astuto", + "asumir", + "asunto", + "atajo", + "ataque", + "atar", + "atento", + "ateo", + "ático", + "atleta", + "átomo", + "atraer", + "atroz", + "atún", + "audaz", + "audio", + "auge", + "aula", + "aumento", + "ausente", + "autor", + "aval", + "avance", + "avaro", + "ave", + "avellana", + "avena", + "avestruz", + "avión", + "aviso", + "ayer", + "ayuda", + "ayuno", + "azafrán", + "azar", + "azote", + "azúcar", + "azufre", + "azul", + "baba", + "babor", + "bache", + "bahía", + "baile", + "bajar", + "balanza", + "balcón", + "balde", + "bambú", + "banco", + "banda", + "baño", + "barba", + "barco", + "barniz", + "barro", + "báscula", + "bastón", + "basura", + "batalla", + "batería", + "batir", + "batuta", + "baúl", + "bazar", + "bebé", + "bebida", + "bello", + "besar", + "beso", + "bestia", + "bicho", + "bien", + "bingo", + "blanco", + "bloque", + "blusa", + "boa", + "bobina", + "bobo", + "boca", + "bocina", + "boda", + "bodega", + "boina", + "bola", + "bolero", + "bolsa", + "bomba", + "bondad", + "bonito", + "bono", + "bonsái", + "borde", + "borrar", + "bosque", + "bote", + "botín", + "bóveda", + "bozal", + "bravo", + "brazo", + "brecha", + "breve", + "brillo", + "brinco", + "brisa", + "broca", + "broma", + "bronce", + "brote", + "bruja", + "brusco", + "bruto", + "buceo", + "bucle", + "bueno", + "buey", + "bufanda", + "bufón", + "búho", + "buitre", + "bulto", + "burbuja", + "burla", + "burro", + "buscar", + "butaca", + "buzón", + "caballo", + "cabeza", + "cabina", + "cabra", + "cacao", + "cadáver", + "cadena", + "caer", + "café", + "caída", + "caimán", + "caja", + "cajón", + "cal", + "calamar", + "calcio", + "caldo", + "calidad", + "calle", + "calma", + "calor", + "calvo", + "cama", + "cambio", + "camello", + "camino", + "campo", + "cáncer", + "candil", + "canela", + "canguro", + "canica", + "canto", + "caña", + "cañón", + "caoba", + "caos", + "capaz", + "capitán", + "capote", + "captar", + "capucha", + "cara", + "carbón", + "cárcel", + "careta", + "carga", + "cariño", + "carne", + "carpeta", + "carro", + "carta", + "casa", + "casco", + "casero", + "caspa", + "castor", + "catorce", + "catre", + "caudal", + "causa", + "cazo", + "cebolla", + "ceder", + "cedro", + "celda", + "célebre", + "celoso", + "célula", + "cemento", + "ceniza", + "centro", + "cerca", + "cerdo", + "cereza", + "cero", + "cerrar", + "certeza", + "césped", + "cetro", + "chacal", + "chaleco", + "champú", + "chancla", + "chapa", + "charla", + "chico", + "chiste", + "chivo", + "choque", + "choza", + "chuleta", + "chupar", + "ciclón", + "ciego", + "cielo", + "cien", + "cierto", + "cifra", + "cigarro", + "cima", + "cinco", + "cine", + "cinta", + "ciprés", + "circo", + "ciruela", + "cisne", + "cita", + "ciudad", + "clamor", + "clan", + "claro", + "clase", + "clave", + "cliente", + "clima", + "clínica", + "cobre", + "cocción", + "cochino", + "cocina", + "coco", + "código", + "codo", + "cofre", + "coger", + "cohete", + "cojín", + "cojo", + "cola", + "colcha", + "colegio", + "colgar", + "colina", + "collar", + "colmo", + "columna", + "combate", + "comer", + "comida", + "cómodo", + "compra", + "conde", + "conejo", + "conga", + "conocer", + "consejo", + "contar", + "copa", + "copia", + "corazón", + "corbata", + "corcho", + "cordón", + "corona", + "correr", + "coser", + "cosmos", + "costa", + "cráneo", + "cráter", + "crear", + "crecer", + "creído", + "crema", + "cría", + "crimen", + "cripta", + "crisis", + "cromo", + "crónica", + "croqueta", + "crudo", + "cruz", + "cuadro", + "cuarto", + "cuatro", + "cubo", + "cubrir", + "cuchara", + "cuello", + "cuento", + "cuerda", + "cuesta", + "cueva", + "cuidar", + "culebra", + "culpa", + "culto", + "cumbre", + "cumplir", + "cuna", + "cuneta", + "cuota", + "cupón", + "cúpula", + "curar", + "curioso", + "curso", + "curva", + "cutis", + "dama", + "danza", + "dar", + "dardo", + "dátil", + "deber", + "débil", + "década", + "decir", + "dedo", + "defensa", + "definir", + "dejar", + "delfín", + "delgado", + "delito", + "demora", + "denso", + "dental", + "deporte", + "derecho", + "derrota", + "desayuno", + "deseo", + "desfile", + "desnudo", + "destino", + "desvío", + "detalle", + "detener", + "deuda", + "día", + "diablo", + "diadema", + "diamante", + "diana", + "diario", + "dibujo", + "dictar", + "diente", + "dieta", + "diez", + "difícil", + "digno", + "dilema", + "diluir", + "dinero", + "directo", + "dirigir", + "disco", + "diseño", + "disfraz", + "diva", + "divino", + "doble", + "doce", + "dolor", + "domingo", + "don", + "donar", + "dorado", + "dormir", + "dorso", + "dos", + "dosis", + "dragón", + "droga", + "ducha", + "duda", + "duelo", + "dueño", + "dulce", + "dúo", + "duque", + "durar", + "dureza", + "duro", + "ébano", + "ebrio", + "echar", + "eco", + "ecuador", + "edad", + "edición", + "edificio", + "editor", + "educar", + "efecto", + "eficaz", + "eje", + "ejemplo", + "elefante", + "elegir", + "elemento", + "elevar", + "elipse", + "élite", + "elixir", + "elogio", + "eludir", + "embudo", + "emitir", + "emoción", + "empate", + "empeño", + "empleo", + "empresa", + "enano", + "encargo", + "enchufe", + "encía", + "enemigo", + "enero", + "enfado", + "enfermo", + "engaño", + "enigma", + "enlace", + "enorme", + "enredo", + "ensayo", + "enseñar", + "entero", + "entrar", + "envase", + "envío", + "época", + "equipo", + "erizo", + "escala", + "escena", + "escolar", + "escribir", + "escudo", + "esencia", + "esfera", + "esfuerzo", + "espada", + "espejo", + "espía", + "esposa", + "espuma", + "esquí", + "estar", + "este", + "estilo", + "estufa", + "etapa", + "eterno", + "ética", + "etnia", + "evadir", + "evaluar", + "evento", + "evitar", + "exacto", + "examen", + "exceso", + "excusa", + "exento", + "exigir", + "exilio", + "existir", + "éxito", + "experto", + "explicar", + "exponer", + "extremo", + "fábrica", + "fábula", + "fachada", + "fácil", + "factor", + "faena", + "faja", + "falda", + "fallo", + "falso", + "faltar", + "fama", + "familia", + "famoso", + "faraón", + "farmacia", + "farol", + "farsa", + "fase", + "fatiga", + "fauna", + "favor", + "fax", + "febrero", + "fecha", + "feliz", + "feo", + "feria", + "feroz", + "fértil", + "fervor", + "festín", + "fiable", + "fianza", + "fiar", + "fibra", + "ficción", + "ficha", + "fideo", + "fiebre", + "fiel", + "fiera", + "fiesta", + "figura", + "fijar", + "fijo", + "fila", + "filete", + "filial", + "filtro", + "fin", + "finca", + "fingir", + "finito", + "firma", + "flaco", + "flauta", + "flecha", + "flor", + "flota", + "fluir", + "flujo", + "flúor", + "fobia", + "foca", + "fogata", + "fogón", + "folio", + "folleto", + "fondo", + "forma", + "forro", + "fortuna", + "forzar", + "fosa", + "foto", + "fracaso", + "frágil", + "franja", + "frase", + "fraude", + "freír", + "freno", + "fresa", + "frío", + "frito", + "fruta", + "fuego", + "fuente", + "fuerza", + "fuga", + "fumar", + "función", + "funda", + "furgón", + "furia", + "fusil", + "fútbol", + "futuro", + "gacela", + "gafas", + "gaita", + "gajo", + "gala", + "galería", + "gallo", + "gamba", + "ganar", + "gancho", + "ganga", + "ganso", + "garaje", + "garza", + "gasolina", + "gastar", + "gato", + "gavilán", + "gemelo", + "gemir", + "gen", + "género", + "genio", + "gente", + "geranio", + "gerente", + "germen", + "gesto", + "gigante", + "gimnasio", + "girar", + "giro", + "glaciar", + "globo", + "gloria", + "gol", + "golfo", + "goloso", + "golpe", + "goma", + "gordo", + "gorila", + "gorra", + "gota", + "goteo", + "gozar", + "grada", + "gráfico", + "grano", + "grasa", + "gratis", + "grave", + "grieta", + "grillo", + "gripe", + "gris", + "grito", + "grosor", + "grúa", + "grueso", + "grumo", + "grupo", + "guante", + "guapo", + "guardia", + "guerra", + "guía", + "guiño", + "guion", + "guiso", + "guitarra", + "gusano", + "gustar", + "haber", + "hábil", + "hablar", + "hacer", + "hacha", + "hada", + "hallar", + "hamaca", + "harina", + "haz", + "hazaña", + "hebilla", + "hebra", + "hecho", + "helado", + "helio", + "hembra", + "herir", + "hermano", + "héroe", + "hervir", + "hielo", + "hierro", + "hígado", + "higiene", + "hijo", + "himno", + "historia", + "hocico", + "hogar", + "hoguera", + "hoja", + "hombre", + "hongo", + "honor", + "honra", + "hora", + "hormiga", + "horno", + "hostil", + "hoyo", + "hueco", + "huelga", + "huerta", + "hueso", + "huevo", + "huida", + "huir", + "humano", + "húmedo", + "humilde", + "humo", + "hundir", + "huracán", + "hurto", + "icono", + "ideal", + "idioma", + "ídolo", + "iglesia", + "iglú", + "igual", + "ilegal", + "ilusión", + "imagen", + "imán", + "imitar", + "impar", + "imperio", + "imponer", + "impulso", + "incapaz", + "índice", + "inerte", + "infiel", + "informe", + "ingenio", + "inicio", + "inmenso", + "inmune", + "innato", + "insecto", + "instante", + "interés", + "íntimo", + "intuir", + "inútil", + "invierno", + "ira", + "iris", + "ironía", + "isla", + "islote", + "jabalí", + "jabón", + "jamón", + "jarabe", + "jardín", + "jarra", + "jaula", + "jazmín", + "jefe", + "jeringa", + "jinete", + "jornada", + "joroba", + "joven", + "joya", + "juerga", + "jueves", + "juez", + "jugador", + "jugo", + "juguete", + "juicio", + "junco", + "jungla", + "junio", + "juntar", + "júpiter", + "jurar", + "justo", + "juvenil", + "juzgar", + "kilo", + "koala", + "labio", + "lacio", + "lacra", + "lado", + "ladrón", + "lagarto", + "lágrima", + "laguna", + "laico", + "lamer", + "lámina", + "lámpara", + "lana", + "lancha", + "langosta", + "lanza", + "lápiz", + "largo", + "larva", + "lástima", + "lata", + "látex", + "latir", + "laurel", + "lavar", + "lazo", + "leal", + "lección", + "leche", + "lector", + "leer", + "legión", + "legumbre", + "lejano", + "lengua", + "lento", + "leña", + "león", + "leopardo", + "lesión", + "letal", + "letra", + "leve", + "leyenda", + "libertad", + "libro", + "licor", + "líder", + "lidiar", + "lienzo", + "liga", + "ligero", + "lima", + "límite", + "limón", + "limpio", + "lince", + "lindo", + "línea", + "lingote", + "lino", + "linterna", + "líquido", + "liso", + "lista", + "litera", + "litio", + "litro", + "llaga", + "llama", + "llanto", + "llave", + "llegar", + "llenar", + "llevar", + "llorar", + "llover", + "lluvia", + "lobo", + "loción", + "loco", + "locura", + "lógica", + "logro", + "lombriz", + "lomo", + "lonja", + "lote", + "lucha", + "lucir", + "lugar", + "lujo", + "luna", + "lunes", + "lupa", + "lustro", + "luto", + "luz", + "maceta", + "macho", + "madera", + "madre", + "maduro", + "maestro", + "mafia", + "magia", + "mago", + "maíz", + "maldad", + "maleta", + "malla", + "malo", + "mamá", + "mambo", + "mamut", + "manco", + "mando", + "manejar", + "manga", + "maniquí", + "manjar", + "mano", + "manso", + "manta", + "mañana", + "mapa", + "máquina", + "mar", + "marco", + "marea", + "marfil", + "margen", + "marido", + "mármol", + "marrón", + "martes", + "marzo", + "masa", + "máscara", + "masivo", + "matar", + "materia", + "matiz", + "matriz", + "máximo", + "mayor", + "mazorca", + "mecha", + "medalla", + "medio", + "médula", + "mejilla", + "mejor", + "melena", + "melón", + "memoria", + "menor", + "mensaje", + "mente", + "menú", + "mercado", + "merengue", + "mérito", + "mes", + "mesón", + "meta", + "meter", + "método", + "metro", + "mezcla", + "miedo", + "miel", + "miembro", + "miga", + "mil", + "milagro", + "militar", + "millón", + "mimo", + "mina", + "minero", + "mínimo", + "minuto", + "miope", + "mirar", + "misa", + "miseria", + "misil", + "mismo", + "mitad", + "mito", + "mochila", + "moción", + "moda", + "modelo", + "moho", + "mojar", + "molde", + "moler", + "molino", + "momento", + "momia", + "monarca", + "moneda", + "monja", + "monto", + "moño", + "morada", + "morder", + "moreno", + "morir", + "morro", + "morsa", + "mortal", + "mosca", + "mostrar", + "motivo", + "mover", + "móvil", + "mozo", + "mucho", + "mudar", + "mueble", + "muela", + "muerte", + "muestra", + "mugre", + "mujer", + "mula", + "muleta", + "multa", + "mundo", + "muñeca", + "mural", + "muro", + "músculo", + "museo", + "musgo", + "música", + "muslo", + "nácar", + "nación", + "nadar", + "naipe", + "naranja", + "nariz", + "narrar", + "nasal", + "natal", + "nativo", + "natural", + "náusea", + "naval", + "nave", + "navidad", + "necio", + "néctar", + "negar", + "negocio", + "negro", + "neón", + "nervio", + "neto", + "neutro", + "nevar", + "nevera", + "nicho", + "nido", + "niebla", + "nieto", + "niñez", + "niño", + "nítido", + "nivel", + "nobleza", + "noche", + "nómina", + "noria", + "norma", + "norte", + "nota", + "noticia", + "novato", + "novela", + "novio", + "nube", + "nuca", + "núcleo", + "nudillo", + "nudo", + "nuera", + "nueve", + "nuez", + "nulo", + "número", + "nutria", + "oasis", + "obeso", + "obispo", + "objeto", + "obra", + "obrero", + "observar", + "obtener", + "obvio", + "oca", + "ocaso", + "océano", + "ochenta", + "ocho", + "ocio", + "ocre", + "octavo", + "octubre", + "oculto", + "ocupar", + "ocurrir", + "odiar", + "odio", + "odisea", + "oeste", + "ofensa", + "oferta", + "oficio", + "ofrecer", + "ogro", + "oído", + "oír", + "ojo", + "ola", + "oleada", + "olfato", + "olivo", + "olla", + "olmo", + "olor", + "olvido", + "ombligo", + "onda", + "onza", + "opaco", + "opción", + "ópera", + "opinar", + "oponer", + "optar", + "óptica", + "opuesto", + "oración", + "orador", + "oral", + "órbita", + "orca", + "orden", + "oreja", + "órgano", + "orgía", + "orgullo", + "oriente", + "origen", + "orilla", + "oro", + "orquesta", + "oruga", + "osadía", + "oscuro", + "osezno", + "oso", + "ostra", + "otoño", + "otro", + "oveja", + "óvulo", + "óxido", + "oxígeno", + "oyente", + "ozono", + "pacto", + "padre", + "paella", + "página", + "pago", + "país", + "pájaro", + "palabra", + "palco", + "paleta", + "pálido", + "palma", + "paloma", + "palpar", + "pan", + "panal", + "pánico", + "pantera", + "pañuelo", + "papá", + "papel", + "papilla", + "paquete", + "parar", + "parcela", + "pared", + "parir", + "paro", + "párpado", + "parque", + "párrafo", + "parte", + "pasar", + "paseo", + "pasión", + "paso", + "pasta", + "pata", + "patio", + "patria", + "pausa", + "pauta", + "pavo", + "payaso", + "peatón", + "pecado", + "pecera", + "pecho", + "pedal", + "pedir", + "pegar", + "peine", + "pelar", + "peldaño", + "pelea", + "peligro", + "pellejo", + "pelo", + "peluca", + "pena", + "pensar", + "peñón", + "peón", + "peor", + "pepino", + "pequeño", + "pera", + "percha", + "perder", + "pereza", + "perfil", + "perico", + "perla", + "permiso", + "perro", + "persona", + "pesa", + "pesca", + "pésimo", + "pestaña", + "pétalo", + "petróleo", + "pez", + "pezuña", + "picar", + "pichón", + "pie", + "piedra", + "pierna", + "pieza", + "pijama", + "pilar", + "piloto", + "pimienta", + "pino", + "pintor", + "pinza", + "piña", + "piojo", + "pipa", + "pirata", + "pisar", + "piscina", + "piso", + "pista", + "pitón", + "pizca", + "placa", + "plan", + "plata", + "playa", + "plaza", + "pleito", + "pleno", + "plomo", + "pluma", + "plural", + "pobre", + "poco", + "poder", + "podio", + "poema", + "poesía", + "poeta", + "polen", + "policía", + "pollo", + "polvo", + "pomada", + "pomelo", + "pomo", + "pompa", + "poner", + "porción", + "portal", + "posada", + "poseer", + "posible", + "poste", + "potencia", + "potro", + "pozo", + "prado", + "precoz", + "pregunta", + "premio", + "prensa", + "preso", + "previo", + "primo", + "príncipe", + "prisión", + "privar", + "proa", + "probar", + "proceso", + "producto", + "proeza", + "profesor", + "programa", + "prole", + "promesa", + "pronto", + "propio", + "próximo", + "prueba", + "público", + "puchero", + "pudor", + "pueblo", + "puerta", + "puesto", + "pulga", + "pulir", + "pulmón", + "pulpo", + "pulso", + "puma", + "punto", + "puñal", + "puño", + "pupa", + "pupila", + "puré", + "quedar", + "queja", + "quemar", + "querer", + "queso", + "quieto", + "química", + "quince", + "quitar", + "rábano", + "rabia", + "rabo", + "ración", + "radical", + "raíz", + "rama", + "rampa", + "rancho", + "rango", + "rapaz", + "rápido", + "rapto", + "rasgo", + "raspa", + "rato", + "rayo", + "raza", + "razón", + "reacción", + "realidad", + "rebaño", + "rebote", + "recaer", + "receta", + "rechazo", + "recoger", + "recreo", + "recto", + "recurso", + "red", + "redondo", + "reducir", + "reflejo", + "reforma", + "refrán", + "refugio", + "regalo", + "regir", + "regla", + "regreso", + "rehén", + "reino", + "reír", + "reja", + "relato", + "relevo", + "relieve", + "relleno", + "reloj", + "remar", + "remedio", + "remo", + "rencor", + "rendir", + "renta", + "reparto", + "repetir", + "reposo", + "reptil", + "res", + "rescate", + "resina", + "respeto", + "resto", + "resumen", + "retiro", + "retorno", + "retrato", + "reunir", + "revés", + "revista", + "rey", + "rezar", + "rico", + "riego", + "rienda", + "riesgo", + "rifa", + "rígido", + "rigor", + "rincón", + "riñón", + "río", + "riqueza", + "risa", + "ritmo", + "rito", + "rizo", + "roble", + "roce", + "rociar", + "rodar", + "rodeo", + "rodilla", + "roer", + "rojizo", + "rojo", + "romero", + "romper", + "ron", + "ronco", + "ronda", + "ropa", + "ropero", + "rosa", + "rosca", + "rostro", + "rotar", + "rubí", + "rubor", + "rudo", + "rueda", + "rugir", + "ruido", + "ruina", + "ruleta", + "rulo", + "rumbo", + "rumor", + "ruptura", + "ruta", + "rutina", + "sábado", + "saber", + "sabio", + "sable", + "sacar", + "sagaz", + "sagrado", + "sala", + "saldo", + "salero", + "salir", + "salmón", + "salón", + "salsa", + "salto", + "salud", + "salvar", + "samba", + "sanción", + "sandía", + "sanear", + "sangre", + "sanidad", + "sano", + "santo", + "sapo", + "saque", + "sardina", + "sartén", + "sastre", + "satán", + "sauna", + "saxofón", + "sección", + "seco", + "secreto", + "secta", + "sed", + "seguir", + "seis", + "sello", + "selva", + "semana", + "semilla", + "senda", + "sensor", + "señal", + "señor", + "separar", + "sepia", + "sequía", + "ser", + "serie", + "sermón", + "servir", + "sesenta", + "sesión", + "seta", + "setenta", + "severo", + "sexo", + "sexto", + "sidra", + "siesta", + "siete", + "siglo", + "signo", + "sílaba", + "silbar", + "silencio", + "silla", + "símbolo", + "simio", + "sirena", + "sistema", + "sitio", + "situar", + "sobre", + "socio", + "sodio", + "sol", + "solapa", + "soldado", + "soledad", + "sólido", + "soltar", + "solución", + "sombra", + "sondeo", + "sonido", + "sonoro", + "sonrisa", + "sopa", + "soplar", + "soporte", + "sordo", + "sorpresa", + "sorteo", + "sostén", + "sótano", + "suave", + "subir", + "suceso", + "sudor", + "suegra", + "suelo", + "sueño", + "suerte", + "sufrir", + "sujeto", + "sultán", + "sumar", + "superar", + "suplir", + "suponer", + "supremo", + "sur", + "surco", + "sureño", + "surgir", + "susto", + "sutil", + "tabaco", + "tabique", + "tabla", + "tabú", + "taco", + "tacto", + "tajo", + "talar", + "talco", + "talento", + "talla", + "talón", + "tamaño", + "tambor", + "tango", + "tanque", + "tapa", + "tapete", + "tapia", + "tapón", + "taquilla", + "tarde", + "tarea", + "tarifa", + "tarjeta", + "tarot", + "tarro", + "tarta", + "tatuaje", + "tauro", + "taza", + "tazón", + "teatro", + "techo", + "tecla", + "técnica", + "tejado", + "tejer", + "tejido", + "tela", + "teléfono", + "tema", + "temor", + "templo", + "tenaz", + "tender", + "tener", + "tenis", + "tenso", + "teoría", + "terapia", + "terco", + "término", + "ternura", + "terror", + "tesis", + "tesoro", + "testigo", + "tetera", + "texto", + "tez", + "tibio", + "tiburón", + "tiempo", + "tienda", + "tierra", + "tieso", + "tigre", + "tijera", + "tilde", + "timbre", + "tímido", + "timo", + "tinta", + "tío", + "típico", + "tipo", + "tira", + "tirón", + "titán", + "títere", + "título", + "tiza", + "toalla", + "tobillo", + "tocar", + "tocino", + "todo", + "toga", + "toldo", + "tomar", + "tono", + "tonto", + "topar", + "tope", + "toque", + "tórax", + "torero", + "tormenta", + "torneo", + "toro", + "torpedo", + "torre", + "torso", + "tortuga", + "tos", + "tosco", + "toser", + "tóxico", + "trabajo", + "tractor", + "traer", + "tráfico", + "trago", + "traje", + "tramo", + "trance", + "trato", + "trauma", + "trazar", + "trébol", + "tregua", + "treinta", + "tren", + "trepar", + "tres", + "tribu", + "trigo", + "tripa", + "triste", + "triunfo", + "trofeo", + "trompa", + "tronco", + "tropa", + "trote", + "trozo", + "truco", + "trueno", + "trufa", + "tubería", + "tubo", + "tuerto", + "tumba", + "tumor", + "túnel", + "túnica", + "turbina", + "turismo", + "turno", + "tutor", + "ubicar", + "úlcera", + "umbral", + "unidad", + "unir", + "universo", + "uno", + "untar", + "uña", + "urbano", + "urbe", + "urgente", + "urna", + "usar", + "usuario", + "útil", + "utopía", + "uva", + "vaca", + "vacío", + "vacuna", + "vagar", + "vago", + "vaina", + "vajilla", + "vale", + "válido", + "valle", + "valor", + "válvula", + "vampiro", + "vara", + "variar", + "varón", + "vaso", + "vecino", + "vector", + "vehículo", + "veinte", + "vejez", + "vela", + "velero", + "veloz", + "vena", + "vencer", + "venda", + "veneno", + "vengar", + "venir", + "venta", + "venus", + "ver", + "verano", + "verbo", + "verde", + "vereda", + "verja", + "verso", + "verter", + "vía", + "viaje", + "vibrar", + "vicio", + "víctima", + "vida", + "vídeo", + "vidrio", + "viejo", + "viernes", + "vigor", + "vil", + "villa", + "vinagre", + "vino", + "viñedo", + "violín", + "viral", + "virgo", + "virtud", + "visor", + "víspera", + "vista", + "vitamina", + "viudo", + "vivaz", + "vivero", + "vivir", + "vivo", + "volcán", + "volumen", + "volver", + "voraz", + "votar", + "voto", + "voz", + "vuelo", + "vulgar", + "yacer", + "yate", + "yegua", + "yema", + "yerno", + "yeso", + "yodo", + "yoga", + "yogur", + "zafiro", + "zanja", + "zapato", + "zarza", + "zona", + "zorro", + "zumo", + "zurdo" + ) +} diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt new file mode 100644 index 000000000..7dde768c1 --- /dev/null +++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt @@ -0,0 +1,2060 @@ +package io.iohk.atala.prism.apollo.utils.bip39.wordlists + +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@OptIn(ExperimentalJsExport::class) +@JsExport +internal object MnemonicCodeTraditionalChinese { + val wordList: List = + listOf( + "的", + "一", + "是", + "在", + "不", + "了", + "有", + "和", + "人", + "這", + "中", + "大", + "為", + "上", + "個", + "國", + "我", + "以", + "要", + "他", + "時", + "來", + "用", + "們", + "生", + "到", + "作", + "地", + "於", + "出", + "就", + "分", + "對", + "成", + "會", + "可", + "主", + "發", + "年", + "動", + "同", + "工", + "也", + "能", + "下", + "過", + "子", + "說", + "產", + "種", + "面", + "而", + "方", + "後", + "多", + "定", + "行", + "學", + "法", + "所", + "民", + "得", + "經", + "十", + "三", + "之", + "進", + "著", + "等", + "部", + "度", + "家", + "電", + "力", + "裡", + "如", + "水", + "化", + "高", + "自", + "二", + "理", + "起", + "小", + "物", + "現", + "實", + "加", + "量", + "都", + "兩", + "體", + "制", + "機", + "當", + "使", + "點", + "從", + "業", + "本", + "去", + "把", + "性", + "好", + "應", + "開", + "它", + "合", + "還", + "因", + "由", + "其", + "些", + "然", + "前", + "外", + "天", + "政", + "四", + "日", + "那", + "社", + "義", + "事", + "平", + "形", + "相", + "全", + "表", + "間", + "樣", + "與", + "關", + "各", + "重", + "新", + "線", + "內", + "數", + "正", + "心", + "反", + "你", + "明", + "看", + "原", + "又", + "麼", + "利", + "比", + "或", + "但", + "質", + "氣", + "第", + "向", + "道", + "命", + "此", + "變", + "條", + "只", + "沒", + "結", + "解", + "問", + "意", + "建", + "月", + "公", + "無", + "系", + "軍", + "很", + "情", + "者", + "最", + "立", + "代", + "想", + "已", + "通", + "並", + "提", + "直", + "題", + "黨", + "程", + "展", + "五", + "果", + "料", + "象", + "員", + "革", + "位", + "入", + "常", + "文", + "總", + "次", + "品", + "式", + "活", + "設", + "及", + "管", + "特", + "件", + "長", + "求", + "老", + "頭", + "基", + "資", + "邊", + "流", + "路", + "級", + "少", + "圖", + "山", + "統", + "接", + "知", + "較", + "將", + "組", + "見", + "計", + "別", + "她", + "手", + "角", + "期", + "根", + "論", + "運", + "農", + "指", + "幾", + "九", + "區", + "強", + "放", + "決", + "西", + "被", + "幹", + "做", + "必", + "戰", + "先", + "回", + "則", + "任", + "取", + "據", + "處", + "隊", + "南", + "給", + "色", + "光", + "門", + "即", + "保", + "治", + "北", + "造", + "百", + "規", + "熱", + "領", + "七", + "海", + "口", + "東", + "導", + "器", + "壓", + "志", + "世", + "金", + "增", + "爭", + "濟", + "階", + "油", + "思", + "術", + "極", + "交", + "受", + "聯", + "什", + "認", + "六", + "共", + "權", + "收", + "證", + "改", + "清", + "美", + "再", + "採", + "轉", + "更", + "單", + "風", + "切", + "打", + "白", + "教", + "速", + "花", + "帶", + "安", + "場", + "身", + "車", + "例", + "真", + "務", + "具", + "萬", + "每", + "目", + "至", + "達", + "走", + "積", + "示", + "議", + "聲", + "報", + "鬥", + "完", + "類", + "八", + "離", + "華", + "名", + "確", + "才", + "科", + "張", + "信", + "馬", + "節", + "話", + "米", + "整", + "空", + "元", + "況", + "今", + "集", + "溫", + "傳", + "土", + "許", + "步", + "群", + "廣", + "石", + "記", + "需", + "段", + "研", + "界", + "拉", + "林", + "律", + "叫", + "且", + "究", + "觀", + "越", + "織", + "裝", + "影", + "算", + "低", + "持", + "音", + "眾", + "書", + "布", + "复", + "容", + "兒", + "須", + "際", + "商", + "非", + "驗", + "連", + "斷", + "深", + "難", + "近", + "礦", + "千", + "週", + "委", + "素", + "技", + "備", + "半", + "辦", + "青", + "省", + "列", + "習", + "響", + "約", + "支", + "般", + "史", + "感", + "勞", + "便", + "團", + "往", + "酸", + "歷", + "市", + "克", + "何", + "除", + "消", + "構", + "府", + "稱", + "太", + "準", + "精", + "值", + "號", + "率", + "族", + "維", + "劃", + "選", + "標", + "寫", + "存", + "候", + "毛", + "親", + "快", + "效", + "斯", + "院", + "查", + "江", + "型", + "眼", + "王", + "按", + "格", + "養", + "易", + "置", + "派", + "層", + "片", + "始", + "卻", + "專", + "狀", + "育", + "廠", + "京", + "識", + "適", + "屬", + "圓", + "包", + "火", + "住", + "調", + "滿", + "縣", + "局", + "照", + "參", + "紅", + "細", + "引", + "聽", + "該", + "鐵", + "價", + "嚴", + "首", + "底", + "液", + "官", + "德", + "隨", + "病", + "蘇", + "失", + "爾", + "死", + "講", + "配", + "女", + "黃", + "推", + "顯", + "談", + "罪", + "神", + "藝", + "呢", + "席", + "含", + "企", + "望", + "密", + "批", + "營", + "項", + "防", + "舉", + "球", + "英", + "氧", + "勢", + "告", + "李", + "台", + "落", + "木", + "幫", + "輪", + "破", + "亞", + "師", + "圍", + "注", + "遠", + "字", + "材", + "排", + "供", + "河", + "態", + "封", + "另", + "施", + "減", + "樹", + "溶", + "怎", + "止", + "案", + "言", + "士", + "均", + "武", + "固", + "葉", + "魚", + "波", + "視", + "僅", + "費", + "緊", + "愛", + "左", + "章", + "早", + "朝", + "害", + "續", + "輕", + "服", + "試", + "食", + "充", + "兵", + "源", + "判", + "護", + "司", + "足", + "某", + "練", + "差", + "致", + "板", + "田", + "降", + "黑", + "犯", + "負", + "擊", + "范", + "繼", + "興", + "似", + "餘", + "堅", + "曲", + "輸", + "修", + "故", + "城", + "夫", + "夠", + "送", + "筆", + "船", + "佔", + "右", + "財", + "吃", + "富", + "春", + "職", + "覺", + "漢", + "畫", + "功", + "巴", + "跟", + "雖", + "雜", + "飛", + "檢", + "吸", + "助", + "昇", + "陽", + "互", + "初", + "創", + "抗", + "考", + "投", + "壞", + "策", + "古", + "徑", + "換", + "未", + "跑", + "留", + "鋼", + "曾", + "端", + "責", + "站", + "簡", + "述", + "錢", + "副", + "盡", + "帝", + "射", + "草", + "衝", + "承", + "獨", + "令", + "限", + "阿", + "宣", + "環", + "雙", + "請", + "超", + "微", + "讓", + "控", + "州", + "良", + "軸", + "找", + "否", + "紀", + "益", + "依", + "優", + "頂", + "礎", + "載", + "倒", + "房", + "突", + "坐", + "粉", + "敵", + "略", + "客", + "袁", + "冷", + "勝", + "絕", + "析", + "塊", + "劑", + "測", + "絲", + "協", + "訴", + "念", + "陳", + "仍", + "羅", + "鹽", + "友", + "洋", + "錯", + "苦", + "夜", + "刑", + "移", + "頻", + "逐", + "靠", + "混", + "母", + "短", + "皮", + "終", + "聚", + "汽", + "村", + "雲", + "哪", + "既", + "距", + "衛", + "停", + "烈", + "央", + "察", + "燒", + "迅", + "境", + "若", + "印", + "洲", + "刻", + "括", + "激", + "孔", + "搞", + "甚", + "室", + "待", + "核", + "校", + "散", + "侵", + "吧", + "甲", + "遊", + "久", + "菜", + "味", + "舊", + "模", + "湖", + "貨", + "損", + "預", + "阻", + "毫", + "普", + "穩", + "乙", + "媽", + "植", + "息", + "擴", + "銀", + "語", + "揮", + "酒", + "守", + "拿", + "序", + "紙", + "醫", + "缺", + "雨", + "嗎", + "針", + "劉", + "啊", + "急", + "唱", + "誤", + "訓", + "願", + "審", + "附", + "獲", + "茶", + "鮮", + "糧", + "斤", + "孩", + "脫", + "硫", + "肥", + "善", + "龍", + "演", + "父", + "漸", + "血", + "歡", + "械", + "掌", + "歌", + "沙", + "剛", + "攻", + "謂", + "盾", + "討", + "晚", + "粒", + "亂", + "燃", + "矛", + "乎", + "殺", + "藥", + "寧", + "魯", + "貴", + "鐘", + "煤", + "讀", + "班", + "伯", + "香", + "介", + "迫", + "句", + "豐", + "培", + "握", + "蘭", + "擔", + "弦", + "蛋", + "沉", + "假", + "穿", + "執", + "答", + "樂", + "誰", + "順", + "煙", + "縮", + "徵", + "臉", + "喜", + "松", + "腳", + "困", + "異", + "免", + "背", + "星", + "福", + "買", + "染", + "井", + "概", + "慢", + "怕", + "磁", + "倍", + "祖", + "皇", + "促", + "靜", + "補", + "評", + "翻", + "肉", + "踐", + "尼", + "衣", + "寬", + "揚", + "棉", + "希", + "傷", + "操", + "垂", + "秋", + "宜", + "氫", + "套", + "督", + "振", + "架", + "亮", + "末", + "憲", + "慶", + "編", + "牛", + "觸", + "映", + "雷", + "銷", + "詩", + "座", + "居", + "抓", + "裂", + "胞", + "呼", + "娘", + "景", + "威", + "綠", + "晶", + "厚", + "盟", + "衡", + "雞", + "孫", + "延", + "危", + "膠", + "屋", + "鄉", + "臨", + "陸", + "顧", + "掉", + "呀", + "燈", + "歲", + "措", + "束", + "耐", + "劇", + "玉", + "趙", + "跳", + "哥", + "季", + "課", + "凱", + "胡", + "額", + "款", + "紹", + "卷", + "齊", + "偉", + "蒸", + "殖", + "永", + "宗", + "苗", + "川", + "爐", + "岩", + "弱", + "零", + "楊", + "奏", + "沿", + "露", + "桿", + "探", + "滑", + "鎮", + "飯", + "濃", + "航", + "懷", + "趕", + "庫", + "奪", + "伊", + "靈", + "稅", + "途", + "滅", + "賽", + "歸", + "召", + "鼓", + "播", + "盤", + "裁", + "險", + "康", + "唯", + "錄", + "菌", + "純", + "借", + "糖", + "蓋", + "橫", + "符", + "私", + "努", + "堂", + "域", + "槍", + "潤", + "幅", + "哈", + "竟", + "熟", + "蟲", + "澤", + "腦", + "壤", + "碳", + "歐", + "遍", + "側", + "寨", + "敢", + "徹", + "慮", + "斜", + "薄", + "庭", + "納", + "彈", + "飼", + "伸", + "折", + "麥", + "濕", + "暗", + "荷", + "瓦", + "塞", + "床", + "築", + "惡", + "戶", + "訪", + "塔", + "奇", + "透", + "梁", + "刀", + "旋", + "跡", + "卡", + "氯", + "遇", + "份", + "毒", + "泥", + "退", + "洗", + "擺", + "灰", + "彩", + "賣", + "耗", + "夏", + "擇", + "忙", + "銅", + "獻", + "硬", + "予", + "繁", + "圈", + "雪", + "函", + "亦", + "抽", + "篇", + "陣", + "陰", + "丁", + "尺", + "追", + "堆", + "雄", + "迎", + "泛", + "爸", + "樓", + "避", + "謀", + "噸", + "野", + "豬", + "旗", + "累", + "偏", + "典", + "館", + "索", + "秦", + "脂", + "潮", + "爺", + "豆", + "忽", + "托", + "驚", + "塑", + "遺", + "愈", + "朱", + "替", + "纖", + "粗", + "傾", + "尚", + "痛", + "楚", + "謝", + "奮", + "購", + "磨", + "君", + "池", + "旁", + "碎", + "骨", + "監", + "捕", + "弟", + "暴", + "割", + "貫", + "殊", + "釋", + "詞", + "亡", + "壁", + "頓", + "寶", + "午", + "塵", + "聞", + "揭", + "炮", + "殘", + "冬", + "橋", + "婦", + "警", + "綜", + "招", + "吳", + "付", + "浮", + "遭", + "徐", + "您", + "搖", + "谷", + "贊", + "箱", + "隔", + "訂", + "男", + "吹", + "園", + "紛", + "唐", + "敗", + "宋", + "玻", + "巨", + "耕", + "坦", + "榮", + "閉", + "灣", + "鍵", + "凡", + "駐", + "鍋", + "救", + "恩", + "剝", + "凝", + "鹼", + "齒", + "截", + "煉", + "麻", + "紡", + "禁", + "廢", + "盛", + "版", + "緩", + "淨", + "睛", + "昌", + "婚", + "涉", + "筒", + "嘴", + "插", + "岸", + "朗", + "莊", + "街", + "藏", + "姑", + "貿", + "腐", + "奴", + "啦", + "慣", + "乘", + "夥", + "恢", + "勻", + "紗", + "扎", + "辯", + "耳", + "彪", + "臣", + "億", + "璃", + "抵", + "脈", + "秀", + "薩", + "俄", + "網", + "舞", + "店", + "噴", + "縱", + "寸", + "汗", + "掛", + "洪", + "賀", + "閃", + "柬", + "爆", + "烯", + "津", + "稻", + "牆", + "軟", + "勇", + "像", + "滾", + "厘", + "蒙", + "芳", + "肯", + "坡", + "柱", + "盪", + "腿", + "儀", + "旅", + "尾", + "軋", + "冰", + "貢", + "登", + "黎", + "削", + "鑽", + "勒", + "逃", + "障", + "氨", + "郭", + "峰", + "幣", + "港", + "伏", + "軌", + "畝", + "畢", + "擦", + "莫", + "刺", + "浪", + "秘", + "援", + "株", + "健", + "售", + "股", + "島", + "甘", + "泡", + "睡", + "童", + "鑄", + "湯", + "閥", + "休", + "匯", + "舍", + "牧", + "繞", + "炸", + "哲", + "磷", + "績", + "朋", + "淡", + "尖", + "啟", + "陷", + "柴", + "呈", + "徒", + "顏", + "淚", + "稍", + "忘", + "泵", + "藍", + "拖", + "洞", + "授", + "鏡", + "辛", + "壯", + "鋒", + "貧", + "虛", + "彎", + "摩", + "泰", + "幼", + "廷", + "尊", + "窗", + "綱", + "弄", + "隸", + "疑", + "氏", + "宮", + "姐", + "震", + "瑞", + "怪", + "尤", + "琴", + "循", + "描", + "膜", + "違", + "夾", + "腰", + "緣", + "珠", + "窮", + "森", + "枝", + "竹", + "溝", + "催", + "繩", + "憶", + "邦", + "剩", + "幸", + "漿", + "欄", + "擁", + "牙", + "貯", + "禮", + "濾", + "鈉", + "紋", + "罷", + "拍", + "咱", + "喊", + "袖", + "埃", + "勤", + "罰", + "焦", + "潛", + "伍", + "墨", + "欲", + "縫", + "姓", + "刊", + "飽", + "仿", + "獎", + "鋁", + "鬼", + "麗", + "跨", + "默", + "挖", + "鏈", + "掃", + "喝", + "袋", + "炭", + "污", + "幕", + "諸", + "弧", + "勵", + "梅", + "奶", + "潔", + "災", + "舟", + "鑑", + "苯", + "訟", + "抱", + "毀", + "懂", + "寒", + "智", + "埔", + "寄", + "屆", + "躍", + "渡", + "挑", + "丹", + "艱", + "貝", + "碰", + "拔", + "爹", + "戴", + "碼", + "夢", + "芽", + "熔", + "赤", + "漁", + "哭", + "敬", + "顆", + "奔", + "鉛", + "仲", + "虎", + "稀", + "妹", + "乏", + "珍", + "申", + "桌", + "遵", + "允", + "隆", + "螺", + "倉", + "魏", + "銳", + "曉", + "氮", + "兼", + "隱", + "礙", + "赫", + "撥", + "忠", + "肅", + "缸", + "牽", + "搶", + "博", + "巧", + "殼", + "兄", + "杜", + "訊", + "誠", + "碧", + "祥", + "柯", + "頁", + "巡", + "矩", + "悲", + "灌", + "齡", + "倫", + "票", + "尋", + "桂", + "鋪", + "聖", + "恐", + "恰", + "鄭", + "趣", + "抬", + "荒", + "騰", + "貼", + "柔", + "滴", + "猛", + "闊", + "輛", + "妻", + "填", + "撤", + "儲", + "簽", + "鬧", + "擾", + "紫", + "砂", + "遞", + "戲", + "吊", + "陶", + "伐", + "餵", + "療", + "瓶", + "婆", + "撫", + "臂", + "摸", + "忍", + "蝦", + "蠟", + "鄰", + "胸", + "鞏", + "擠", + "偶", + "棄", + "槽", + "勁", + "乳", + "鄧", + "吉", + "仁", + "爛", + "磚", + "租", + "烏", + "艦", + "伴", + "瓜", + "淺", + "丙", + "暫", + "燥", + "橡", + "柳", + "迷", + "暖", + "牌", + "秧", + "膽", + "詳", + "簧", + "踏", + "瓷", + "譜", + "呆", + "賓", + "糊", + "洛", + "輝", + "憤", + "競", + "隙", + "怒", + "粘", + "乃", + "緒", + "肩", + "籍", + "敏", + "塗", + "熙", + "皆", + "偵", + "懸", + "掘", + "享", + "糾", + "醒", + "狂", + "鎖", + "淀", + "恨", + "牲", + "霸", + "爬", + "賞", + "逆", + "玩", + "陵", + "祝", + "秒", + "浙", + "貌", + "役", + "彼", + "悉", + "鴨", + "趨", + "鳳", + "晨", + "畜", + "輩", + "秩", + "卵", + "署", + "梯", + "炎", + "灘", + "棋", + "驅", + "篩", + "峽", + "冒", + "啥", + "壽", + "譯", + "浸", + "泉", + "帽", + "遲", + "矽", + "疆", + "貸", + "漏", + "稿", + "冠", + "嫩", + "脅", + "芯", + "牢", + "叛", + "蝕", + "奧", + "鳴", + "嶺", + "羊", + "憑", + "串", + "塘", + "繪", + "酵", + "融", + "盆", + "錫", + "廟", + "籌", + "凍", + "輔", + "攝", + "襲", + "筋", + "拒", + "僚", + "旱", + "鉀", + "鳥", + "漆", + "沈", + "眉", + "疏", + "添", + "棒", + "穗", + "硝", + "韓", + "逼", + "扭", + "僑", + "涼", + "挺", + "碗", + "栽", + "炒", + "杯", + "患", + "餾", + "勸", + "豪", + "遼", + "勃", + "鴻", + "旦", + "吏", + "拜", + "狗", + "埋", + "輥", + "掩", + "飲", + "搬", + "罵", + "辭", + "勾", + "扣", + "估", + "蔣", + "絨", + "霧", + "丈", + "朵", + "姆", + "擬", + "宇", + "輯", + "陝", + "雕", + "償", + "蓄", + "崇", + "剪", + "倡", + "廳", + "咬", + "駛", + "薯", + "刷", + "斥", + "番", + "賦", + "奉", + "佛", + "澆", + "漫", + "曼", + "扇", + "鈣", + "桃", + "扶", + "仔", + "返", + "俗", + "虧", + "腔", + "鞋", + "棱", + "覆", + "框", + "悄", + "叔", + "撞", + "騙", + "勘", + "旺", + "沸", + "孤", + "吐", + "孟", + "渠", + "屈", + "疾", + "妙", + "惜", + "仰", + "狠", + "脹", + "諧", + "拋", + "黴", + "桑", + "崗", + "嘛", + "衰", + "盜", + "滲", + "臟", + "賴", + "湧", + "甜", + "曹", + "閱", + "肌", + "哩", + "厲", + "烴", + "緯", + "毅", + "昨", + "偽", + "症", + "煮", + "嘆", + "釘", + "搭", + "莖", + "籠", + "酷", + "偷", + "弓", + "錐", + "恆", + "傑", + "坑", + "鼻", + "翼", + "綸", + "敘", + "獄", + "逮", + "罐", + "絡", + "棚", + "抑", + "膨", + "蔬", + "寺", + "驟", + "穆", + "冶", + "枯", + "冊", + "屍", + "凸", + "紳", + "坯", + "犧", + "焰", + "轟", + "欣", + "晉", + "瘦", + "禦", + "錠", + "錦", + "喪", + "旬", + "鍛", + "壟", + "搜", + "撲", + "邀", + "亭", + "酯", + "邁", + "舒", + "脆", + "酶", + "閒", + "憂", + "酚", + "頑", + "羽", + "漲", + "卸", + "仗", + "陪", + "闢", + "懲", + "杭", + "姚", + "肚", + "捉", + "飄", + "漂", + "昆", + "欺", + "吾", + "郎", + "烷", + "汁", + "呵", + "飾", + "蕭", + "雅", + "郵", + "遷", + "燕", + "撒", + "姻", + "赴", + "宴", + "煩", + "債", + "帳", + "斑", + "鈴", + "旨", + "醇", + "董", + "餅", + "雛", + "姿", + "拌", + "傅", + "腹", + "妥", + "揉", + "賢", + "拆", + "歪", + "葡", + "胺", + "丟", + "浩", + "徽", + "昂", + "墊", + "擋", + "覽", + "貪", + "慰", + "繳", + "汪", + "慌", + "馮", + "諾", + "姜", + "誼", + "兇", + "劣", + "誣", + "耀", + "昏", + "躺", + "盈", + "騎", + "喬", + "溪", + "叢", + "盧", + "抹", + "悶", + "諮", + "刮", + "駕", + "纜", + "悟", + "摘", + "鉺", + "擲", + "頗", + "幻", + "柄", + "惠", + "慘", + "佳", + "仇", + "臘", + "窩", + "滌", + "劍", + "瞧", + "堡", + "潑", + "蔥", + "罩", + "霍", + "撈", + "胎", + "蒼", + "濱", + "倆", + "捅", + "湘", + "砍", + "霞", + "邵", + "萄", + "瘋", + "淮", + "遂", + "熊", + "糞", + "烘", + "宿", + "檔", + "戈", + "駁", + "嫂", + "裕", + "徙", + "箭", + "捐", + "腸", + "撐", + "曬", + "辨", + "殿", + "蓮", + "攤", + "攪", + "醬", + "屏", + "疫", + "哀", + "蔡", + "堵", + "沫", + "皺", + "暢", + "疊", + "閣", + "萊", + "敲", + "轄", + "鉤", + "痕", + "壩", + "巷", + "餓", + "禍", + "丘", + "玄", + "溜", + "曰", + "邏", + "彭", + "嘗", + "卿", + "妨", + "艇", + "吞", + "韋", + "怨", + "矮", + "歇" + ) +} diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt similarity index 84% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt index 369d9aabc..3a253b291 100644 --- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt +++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt @@ -12,7 +12,6 @@ import kotlin.test.assertNotNull import kotlin.test.assertTrue class HDKeyTest { - lateinit var seed: ByteArray lateinit var privateKey: String lateinit var derivedPrivateKey: String @@ -75,11 +74,12 @@ class HDKeyTest { @Test fun testDeriveChild_whenNoChainCode_thenThrowException() { val depth = 1 - val hdKey = HDKey( - privateKey = privateKey.encodeToByteArray(), - depth = depth, - childIndex = BigIntegerWrapper(childIndex) - ) + val hdKey = + HDKey( + privateKey = privateKey.encodeToByteArray(), + depth = depth, + childIndex = BigIntegerWrapper(childIndex) + ) assertFailsWith(Exception::class) { hdKey.deriveChild(BigIntegerWrapper(childIndex)) @@ -89,11 +89,12 @@ class HDKeyTest { @Test fun testDeriveChild_whenPrivateKeyNotHardened_thenThrowException() { val depth = 1 - val hdKey = HDKey( - privateKey = privateKey.encodeToByteArray(), - depth = depth, - childIndex = BigIntegerWrapper(childIndex) - ) + val hdKey = + HDKey( + privateKey = privateKey.encodeToByteArray(), + depth = depth, + childIndex = BigIntegerWrapper(childIndex) + ) assertFailsWith(Exception::class) { hdKey.deriveChild(BigIntegerWrapper(childIndex)) @@ -105,11 +106,12 @@ class HDKeyTest { val depth = 1 childIndex = BigInteger(1) - val hdKey = HDKey( - privateKey = Random.Default.nextBytes(33), - depth = depth, - childIndex = BigIntegerWrapper(childIndex) - ) + val hdKey = + HDKey( + privateKey = Random.Default.nextBytes(33), + depth = depth, + childIndex = BigIntegerWrapper(childIndex) + ) assertFailsWith(Exception::class) { hdKey.deriveChild(BigIntegerWrapper(childIndex)) diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt similarity index 66% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt index 006d7563b..c18febb4e 100644 --- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt +++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt @@ -15,7 +15,10 @@ class KMMECSecp256k1KeysTests { val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray) val message = "Test" val signature = privateKey.sign(message.encodeToByteArray()) - assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded) + assertEquals( + "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", + signature.base64UrlEncoded + ) } @Test @@ -25,7 +28,10 @@ class KMMECSecp256k1KeysTests { val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray) val message = "Test" val signature = privateKey.sign(message.encodeToByteArray()) - assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded) + assertEquals( + "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", + signature.base64UrlEncoded + ) assertTrue(privateKey.verify(signature, message.encodeToByteArray())) } @@ -36,7 +42,10 @@ class KMMECSecp256k1KeysTests { val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray) val message = "Test" val signature = privateKey.sign(message.encodeToByteArray()) - assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded) + assertEquals( + "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", + signature.base64UrlEncoded + ) val publicKey = privateKey.getPublicKey() assertTrue(publicKey.verify(signature, message.encodeToByteArray())) } @@ -46,20 +55,25 @@ class KMMECSecp256k1KeysTests { val privateKeyBase64 = "N_JFgvYaReyRXwassz5FHg33A4I6dczzdXrjdHGksmg" val base64ByteArray = privateKeyBase64.base64UrlDecodedBytes val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray) - assertEquals("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", privateKey.getPublicKey().raw.base64UrlEncoded) + assertEquals( + "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", + privateKey.getPublicKey().raw.base64UrlEncoded + ) } @Test fun testIsPointOnSecp256k1Curve() { - val point = KMMECPoint( - "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes, - "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes - ) - try { - val publicKey = KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates( - point.x, - point.y + val point = + KMMECPoint( + "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes, + "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes ) + try { + val publicKey = + KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates( + point.x, + point.y + ) assertNotNull(publicKey) assertTrue(true) } catch (ex: Exception) { @@ -69,7 +83,10 @@ class KMMECSecp256k1KeysTests { @Test fun testGetCurvePoint() { - val publicKey = KMMECSecp256k1PublicKey("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes) + val publicKey = + KMMECSecp256k1PublicKey( + "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes + ) val point = publicKey.getCurvePoint() assertEquals("P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU", point.x.base64UrlEncoded) assertEquals("gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", point.y.base64UrlEncoded) @@ -78,10 +95,11 @@ class KMMECSecp256k1KeysTests { @Test fun testECSecp256K1FromByteCoordinates() { try { - val publicKey = KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates( - "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes, - "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes - ) + val publicKey = + KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates( + "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes, + "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes + ) assertNotNull(publicKey) assertTrue(true) } catch (ex: Exception) { diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt similarity index 100% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt similarity index 100% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt similarity index 100% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt similarity index 52% rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt index 027916bda..16fbaa719 100644 --- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt +++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt @@ -9,14 +9,16 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue -// @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class) class Secp256k1LibTests { @Test fun testCreatePublicKey() { val privKeyBase64 = "N/JFgvYaReyRXwassz5FHg33A4I6dczzdXrjdHGksmg=" val base64ByteArray = privKeyBase64.base64DecodedBytes val pubKey = Secp256k1Lib().createPublicKey(base64ByteArray, false) - assertEquals("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", pubKey.base64UrlEncoded) + assertEquals( + "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", + pubKey.base64UrlEncoded + ) } @Test @@ -24,8 +26,15 @@ class Secp256k1LibTests { val privKeyBase64 = "96ViMAl0/N1Xm5RJesQxC2NvxhNc4ZkwPyVevZ4akDI=" val derivedPrivKeyBase64 = "xEDIjzhlf/0o+vL42KupeLuZDiWBqpUHhVuwO8a2BBA=" - val derivedKey = Secp256k1Lib().derivePrivateKey(privKeyBase64.base64DecodedBytes, derivedPrivKeyBase64.base64PadDecodedBytes) - assertEquals("u-Yqv0HafNqAlodCU2_ahWRZ91IvQ438BK6wbJSaUwE", derivedKey!!.base64UrlEncoded) + val derivedKey = + Secp256k1Lib().derivePrivateKey( + privKeyBase64.base64DecodedBytes, + derivedPrivKeyBase64.base64PadDecodedBytes + ) + assertEquals( + "u-Yqv0HafNqAlodCU2_ahWRZ91IvQ438BK6wbJSaUwE", + derivedKey!!.base64UrlEncoded + ) } @Test @@ -34,29 +43,45 @@ class Secp256k1LibTests { val message = "Test" val signature = Secp256k1Lib().sign(privKeyBase64.base64UrlDecodedBytes, message.encodeToByteArray()) - assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded) + assertEquals( + "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", + signature.base64UrlEncoded + ) } @Test fun testVerification() { val pubKeyBase64 = "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q" - val signatureBase64 = "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ" + val signatureBase64 = + "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ" val message = "Test" - assertTrue { Secp256k1Lib().verify(pubKeyBase64.base64UrlDecodedBytes, signatureBase64.base64UrlDecodedBytes, message.encodeToByteArray()) } + assertTrue { + Secp256k1Lib().verify( + pubKeyBase64.base64UrlDecodedBytes, + signatureBase64.base64UrlDecodedBytes, + message.encodeToByteArray() + ) + } } @Test fun testCompress() { val pubKeyBase64 = "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8" - assertEquals(Secp256k1Lib().compressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r") + assertEquals( + Secp256k1Lib().compressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, + "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r" + ) } @Test fun testUncompress() { val pubKeyBase64 = "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r" - assertEquals(Secp256k1Lib().uncompressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8") + assertEquals( + Secp256k1Lib().uncompressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, + "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8" + ) } } diff --git a/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt new file mode 100644 index 000000000..06eec69c1 --- /dev/null +++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt @@ -0,0 +1,189 @@ +package io.iohk.atala.prism.apollo.utils + +class TestPoint(val x: ByteArray, val y: ByteArray) + +object Secp256k1TestVectors { + // Vectors from https://crypto.stackexchange.com/a/21206 + val vectors = + listOf( + TestPoint( + "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(), + "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8".decodeHex() + ), + TestPoint( + "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(), + "1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a".decodeHex() + ), + TestPoint( + "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(), + "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672".decodeHex() + ), + TestPoint( + "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(), + "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6".decodeHex() + ), + TestPoint( + "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(), + "ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297".decodeHex() + ), + TestPoint( + "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(), + "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da".decodeHex() + ), + TestPoint( + "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(), + "5c4da8a741539949293d082a132d13b4c2e213d6ba5b7617b5da2cb76cbde904".decodeHex() + ), + TestPoint( + "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(), + "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37".decodeHex() + ), + TestPoint( + "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(), + "893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7".decodeHex() + ), + TestPoint( + "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(), + "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b".decodeHex() + ), + TestPoint( + "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(), + "a9f34ffdc815e0d7a8b64537e17bd81579238c5dd9a86d526b051b13f4062327".decodeHex() + ), + TestPoint( + "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(), + "0ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81".decodeHex() + ), + TestPoint( + "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(), + "cac2f6c4b54e855190f044e4a7b3d464464279c27a3f95bcc65f40d403a13f5b".decodeHex() + ), + TestPoint( + "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(), + "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58".decodeHex() + ), + TestPoint( + "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(), + "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821".decodeHex() + ), + TestPoint( + "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(), + "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77".decodeHex() + ), + TestPoint( + "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(), + "c136c1dc0cbeb930e9e298043589351d81d8e0bc736ae2a1f5192e5e8b061d58".decodeHex() + ), + TestPoint( + "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(), + "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a".decodeHex() + ), + TestPoint( + "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(), + "12ba26dcb10ec1625da61fa10a844c676162948271d96967450288ee9233dc3a".decodeHex() + ), + TestPoint( + "a90cc3d3f3e146daadfc74ca1372207cb4b725ae708cef713a98edd73d99ef29".decodeHex(), + "5a79d6b289610c68bc3b47f3d72f9788a26a06868b4d8e433e1e2ad76fb7dc76".decodeHex() + ), + TestPoint( + "e5a2636bcfd412ebf36ec45b19bfb68a1bc5f8632e678132b885f7df99c5e9b3".decodeHex(), + "736c1ce161ae27b405cafd2a7520370153c2c861ac51d6c1d5985d9606b45f39".decodeHex() + ), + TestPoint( + "a6b594b38fb3e77c6edf78161fade2041f4e09fd8497db776e546c41567feb3c".decodeHex(), + "71444009192228730cd8237a490feba2afe3d27d7cc1136bc97e439d13330d55".decodeHex() + ), + TestPoint( + "00000000000000000000003b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63".decodeHex(), + "3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3".decodeHex() + ), + TestPoint( + "e24ce4beee294aa6350faa67512b99d388693ae4e7f53d19882a6ea169fc1ce1".decodeHex(), + "8b71e83545fc2b5872589f99d948c03108d36797c4de363ebd3ff6a9e1a95b10".decodeHex() + ), + TestPoint( + "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(), + "ed45d9234ef13e9da259e05ef57bb3989e9d6b7d8e269698bafd77106dcc1ff5".decodeHex() + ), + TestPoint( + "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(), + "7a17643fc86ba26c4cbcf7c4a5e379ece5fe09f3afd9689c4a8f37aa1a3f60b5".decodeHex() + ), + TestPoint( + "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(), + "3ec93e23f34146cf161d67fbca76cae27e271f438c951d5e0ae6d1a074f9ded7".decodeHex() + ), + TestPoint( + "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(), + "bdee54f96b9cae9716684f152d56c251312e0b5fb56a3f09304e660861a910b8".decodeHex() + ), + TestPoint( + "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(), + "081caf8c661a6a6d624660cb0a86c8efed6976e1bb2dc0f41e0cd330969e940e".decodeHex() + ), + TestPoint( + "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(), + "a7e1d78d57938d597c7bd13dd733921015bf50d427692c5a3afb235f095d90d7".decodeHex() + ), + TestPoint( + "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(), + "353d093b4ab17aae6f0fbb1b584c2b9bb9bd863d85c06a4339a0bf2afc5ebcd4".decodeHex() + ), + TestPoint( + "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(), + "f54f6fd17277f5768a7ded149a3250b8c5e5f925ade056e0d64a34ac24fc0eae".decodeHex() + ), + TestPoint( + "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(), + "560cb00237ea1f285749bac81e8427ea86dc73a2265792ad94fae4eb0bf9d908".decodeHex() + ), + TestPoint( + "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(), + "267b5fcd1494a1e6fdbc22a928484c9ac8d24e1d20062957cfe28b3536ac3614".decodeHex() + ), + TestPoint( + "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(), + "76c545bdabe643d85c4938196c5db3969086b3d127885ea6c3411ac3fc8c9358".decodeHex() + ), + TestPoint( + "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(), + "33cc76de4f5826029bc7f68e89c49e165227775bc8a071f0fa33d9d439b05ff8".decodeHex() + ), + TestPoint( + "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(), + "a3b25758beac66b6d6c2f7d5ecd2ec4b3d1dec2945a489e84a25d3479342132b".decodeHex() + ), + TestPoint( + "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(), + "951435bf45daa69f5ce8729279e5ab2457ec2f47ec02184a5af7d9d6f78d9755".decodeHex() + ), + TestPoint( + "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(), + "51ed8885530449df0c4169fe80ba3a9f217f0f09ae701b5fc378f3c84f8a0998".decodeHex() + ), + TestPoint( + "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(), + "2753ddd9c91a1c292b24562259363bd90877d8e454f297bf235782c459539959".decodeHex() + ), + TestPoint( + "e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13".decodeHex(), + "ae1266c15f2baa48a9bd1df6715aebb7269851cc404201bf30168422b88c630d".decodeHex() + ), + TestPoint( + "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(), + "c77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bd".decodeHex() + ), + TestPoint( + "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(), + "e51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705".decodeHex() + ), + TestPoint( + "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(), + "b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777".decodeHex() + ) + ) + + fun publicKeysFromSecp256k1TestVectors(): List = + vectors.map { KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(it.x, it.y) } +} diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt similarity index 87% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt index 8b83bd247..517c87215 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt @@ -1,14 +1,11 @@ package io.iohk.atala.prism.apollo.secp256k1 -/* ktlint-disable */ import kotlinx.cinterop.UByteVar import kotlinx.cinterop.allocArray import kotlinx.cinterop.memScoped import kotlinx.cinterop.ptr import kotlinx.cinterop.readBytes -// import io.iohk.atala.prism.apollo.kmmsecp256k1.* -import secp256k1.* -/* ktlint-disable */ +import secp256k1.secp256k1_ecdh class ECDH : Secp256k1() { /** diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt similarity index 96% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt index d1fc7335d..5844893c1 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt @@ -1,8 +1,6 @@ package io.iohk.atala.prism.apollo.secp256k1 -/* ktlint-disable */ import fr.acinq.secp256k1.Secp256k1Native -/* ktlint-disable */ class ECDSA : Secp256k1() { /** diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt similarity index 64% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt index 9ab34ce9d..79ffa1e48 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt @@ -5,21 +5,23 @@ internal object Hex { fun decode(hex: String): ByteArray { val input = hex.filterNot { it.isWhitespace() } - val offset = when { - input.length >= 2 && input[0] == '0' && input[1] == 'x' -> 2 - input.length >= 2 && input[0] == '0' && input[1] == 'X' -> 2 - else -> 0 - } + val offset = + when { + input.length >= 2 && input[0] == '0' && input[1] == 'x' -> 2 + input.length >= 2 && input[0] == '0' && input[1] == 'X' -> 2 + else -> 0 + } val len = input.length - offset require(len % 2 == 0) val out = ByteArray(len / 2) - fun hexToBin(ch: Char): Int = when (ch) { - in '0'..'9' -> ch - '0' - in 'a'..'f' -> ch - 'a' + 10 - in 'A'..'F' -> ch - 'A' + 10 - else -> throw IllegalArgumentException("illegal hex character: $ch") - } + fun hexToBin(ch: Char): Int = + when (ch) { + in '0'..'9' -> ch - '0' + in 'a'..'f' -> ch - 'a' + 10 + in 'A'..'F' -> ch - 'A' + 10 + else -> throw IllegalArgumentException("illegal hex character: $ch") + } for (i in out.indices) { out[i] = (hexToBin(input[offset + 2 * i]) * 16 + hexToBin(input[offset + 2 * i + 1])).toByte() diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt similarity index 81% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt index fb5f003cb..1db21b450 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt @@ -1,6 +1,6 @@ package io.iohk.atala.prism.apollo.secp256k1 -/* ktlint-disable */ +import io.iohk.atala.prism.apollo.utils.toHex import kotlinx.cinterop.CPointer import kotlinx.cinterop.DeferScope import kotlinx.cinterop.MemScope @@ -13,19 +13,33 @@ import kotlinx.cinterop.memScoped import kotlinx.cinterop.pin import kotlinx.cinterop.ptr import kotlinx.cinterop.readBytes -import io.iohk.atala.prism.apollo.utils.toHex -import secp256k1.* - -/* ktlint-disable */ +import secp256k1.SECP256K1_CONTEXT_SIGN +import secp256k1.SECP256K1_CONTEXT_VERIFY +import secp256k1.SECP256K1_FLAGS_BIT_CONTEXT_SIGN +import secp256k1.SECP256K1_FLAGS_BIT_CONTEXT_VERIFY +import secp256k1.SECP256K1_FLAGS_TYPE_CONTEXT +import secp256k1.secp256k1_context +import secp256k1.secp256k1_context_create +import secp256k1.secp256k1_context_destroy +import secp256k1.secp256k1_ec_privkey_tweak_mul +import secp256k1.secp256k1_ec_pubkey_parse +import secp256k1.secp256k1_ec_seckey_negate +import secp256k1.secp256k1_ec_seckey_tweak_add +import secp256k1.secp256k1_ec_seckey_verify +import secp256k1.secp256k1_ecdsa_signature +import secp256k1.secp256k1_ecdsa_signature_normalize +import secp256k1.secp256k1_ecdsa_signature_parse_compact +import secp256k1.secp256k1_ecdsa_signature_parse_der +import secp256k1.secp256k1_ecdsa_signature_serialize_compact +import secp256k1.secp256k1_ecdsa_verify +import secp256k1.secp256k1_pubkey open class Secp256k1 { - val ctx: CPointer by lazy { secp256k1_context_create((SECP256K1_FLAGS_TYPE_CONTEXT or SECP256K1_FLAGS_BIT_CONTEXT_SIGN or SECP256K1_FLAGS_BIT_CONTEXT_VERIFY).toUInt()) ?: error("Could not create secp256k1 context") } - /** * Convert an ECDSA signature to a normalized lower-S form (bitcoin standardness rule). * Returns the normalized signature and a boolean set to true if the input signature was not normalized. @@ -141,11 +155,12 @@ open class Secp256k1 { val sig = alloc() val sigPinned = signature.toUByteArray().pin() val nativeBytes = sigPinned.addressOf(0) - val result = when { - signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes) - signature.size < 64 -> throw Secp256k1Exception("Unknown signature format") - else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert()) - } + val result = + when { + signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes) + signature.size < 64 -> throw Secp256k1Exception("Unknown signature format") + else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert()) + } if (result != 1) { throw Secp256k1Exception("cannot parse signature (size = ${signature.size} sig = ${signature.toHex()}") } @@ -183,11 +198,12 @@ open class Secp256k1 { val sig = alloc() val nativeBytes = toNat(input) - val result = when { - input.size == 64 -> secp256k1_ecdsa_signature_parse_compact(ctx, sig.ptr, nativeBytes) - input.size < 64 -> throw Secp256k1Exception("Unknown signature format") - else -> secp256k1_ecdsa_signature_parse_der(ctx, sig.ptr, nativeBytes, input.size.convert()) - } + val result = + when { + input.size == 64 -> secp256k1_ecdsa_signature_parse_compact(ctx, sig.ptr, nativeBytes) + input.size < 64 -> throw Secp256k1Exception("Unknown signature format") + else -> secp256k1_ecdsa_signature_parse_der(ctx, sig.ptr, nativeBytes, input.size.convert()) + } result.requireSuccess("cannot parse signature (size = ${input.size} sig = ${Hex.encode(input)}") return sig } diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt similarity index 99% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt index 80b92c3db..6e7e11c2a 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt @@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils import swift.cryptoKit.Ed25519 public actual class KMMEdPublicKey(val raw: ByteArray = ByteArray(0)) { - @Throws(RuntimeException::class) actual fun verify(message: ByteArray, sig: ByteArray): Boolean { val result = Ed25519.verifyWithPublicKey(raw.toNSData(), sig.toNSData(), message.toNSData()) diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt similarity index 68% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt index 4f532bd7b..9b6b7e07b 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt @@ -3,8 +3,10 @@ package io.iohk.atala.prism.apollo.utils import platform.Security.SecKeyRef actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) { - - private constructor(nativePrivateKey: SecKeyRef, nativePublicKey: SecKeyRef) : this(KMMRSAPrivateKey(nativePrivateKey), KMMRSAPublicKey(nativePublicKey)) + private constructor( + nativePrivateKey: SecKeyRef, + nativePublicKey: SecKeyRef + ) : this(KMMRSAPrivateKey(nativePrivateKey), KMMRSAPublicKey(nativePublicKey)) actual companion object : RSAKeyPairGeneration { override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair { @@ -13,7 +15,11 @@ actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivat // return KMMRSAKeyPair(pair.privateKey()!!, pair.publicKey()!!) } - override suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair { + override suspend fun generateRSAKeyPairFrom( + seed: ByteArray, + algorithm: RSAAsymmetricAlgorithm, + keySize: Int + ): KMMRSAKeyPair { TODO("Not yet implemented") // val pair = IOHKRSA.generateKeyPairWithKeySize(keySize.toLong())!! // return KMMRSAKeyPair(pair.privateKey()!!, pair.publicKey()!!) diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt similarity index 100% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt similarity index 99% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt index 368847040..d2a9d602b 100644 --- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt +++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt @@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils actual interface RSAKeyPairGeneration { suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair + suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair } diff --git a/base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt b/cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt similarity index 84% rename from base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt rename to cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt index cb30a65d3..5ea3733b2 100644 --- a/base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt +++ b/cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt @@ -33,7 +33,7 @@ class Secp256k1Tests { val publicKey = secp256k1.createPublicKey(privateKey, false) assertEquals( "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6", - Hex.encode(publicKey).uppercase(), + Hex.encode(publicKey).uppercase() ) } @@ -48,9 +48,15 @@ class Secp256k1Tests { @Test fun compressPublicKey() { val secp256k1 = Secp256k1() - val pub = Hex.decode("04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6") + val pub = + Hex.decode( + "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6" + ) val compressed = secp256k1.publicKeyCompress(pub) - assertEquals("02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D", Hex.encode(compressed).uppercase()) + assertEquals( + "02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D", + Hex.encode(compressed).uppercase() + ) } @Test @@ -60,7 +66,7 @@ class Secp256k1Tests { val pub = secp256k1.createPublicKey(priv, false) assertEquals( "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6", - Hex.encode(pub).uppercase(), + Hex.encode(pub).uppercase() ) assertEquals( "02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D", @@ -69,7 +75,7 @@ class Secp256k1Tests { val npub = Secp256k1Native.pubKeyNegate(pub) assertEquals( "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2DDEFC12B6B8E73968536514302E69ED1DDB24B999EFEE79C12D03AB17E79E1989", - Hex.encode(npub).uppercase(), + Hex.encode(npub).uppercase() ) assertEquals( "03C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D", @@ -85,7 +91,7 @@ class Secp256k1Tests { val parsed1 = Secp256k1Native.pubkeyParse(pub) assertEquals( "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6", - Hex.encode(parsed1).uppercase(), + Hex.encode(parsed1).uppercase() ) val parsed2 = Secp256k1Native.pubkeyParse(parsed1) assertContentEquals(parsed1, parsed2) @@ -106,58 +112,82 @@ class Secp256k1Tests { @Test fun combinePublicKeys() { // Mixture of compressed and uncompressed public keys. - val pub1 = Hex.decode("041b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1") - val pub2 = Hex.decode("044d4b6cd1361032ca9bd2aeb9d900aa4d45d9ead80ac9423374c451a7254d07662a3eada2d0fe208b6d257ceb0f064284662e857f57b66b54c198bd310ded36d0") - val pub3 = Hex.decode("02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619") + val pub1 = + Hex.decode( + "041b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1" + ) + val pub2 = + Hex.decode( + "044d4b6cd1361032ca9bd2aeb9d900aa4d45d9ead80ac9423374c451a7254d07662a3eada2d0fe208b6d257ceb0f064284662e857f57b66b54c198bd310ded36d0" + ) + val pub3 = + Hex.decode( + "02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619" + ) val pub4 = Secp256k1Native.pubKeyCombine(arrayOf(pub1, pub2, pub3)) assertEquals( "042C0B7CF95324A07D05398B240174DC0C2BE444D96B159AA6C7F7B1E668680991AE31A9C671A36543F46CEA8FCE6984608AA316AA0472A7EED08847440218CB2F", - Hex.encode(pub4).uppercase(), + Hex.encode(pub4).uppercase() ) } @Test fun createEcdsaSignature() { val ecdsa = ECDSA() - val message = Hex.decode("CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()) // sha256hash of "testing" + val message = + Hex.decode( + "CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase() + ) // sha256hash of "testing" val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase()) val sig = ecdsa.sign(message, priv) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(sig).uppercase(), + Hex.encode(sig).uppercase() ) } @Test fun normalizeEcdsaSignature() { val secp256k1 = Secp256k1() - val normalizedDerSig = Hex.decode("30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()) + val normalizedDerSig = + Hex.decode( + "30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase() + ) val (normalizedCompactSig1, wasNotNormalized1) = secp256k1.signatureNormalize(normalizedDerSig) assertFalse(wasNotNormalized1) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(normalizedCompactSig1).uppercase(), + Hex.encode(normalizedCompactSig1).uppercase() ) - val notNormalizedDerSig = Hex.decode("30450220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2022100E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase()) + val notNormalizedDerSig = + Hex.decode( + "30450220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2022100E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase() + ) val (normalizedCompactSig2, wasNotNormalized2) = secp256k1.signatureNormalize(notNormalizedDerSig) assertTrue(wasNotNormalized2) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(normalizedCompactSig2).uppercase(), + Hex.encode(normalizedCompactSig2).uppercase() ) - val normalizedCompactSig = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()) + val normalizedCompactSig = + Hex.decode( + "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase() + ) val (normalizedCompactSig3, wasNotNormalized3) = secp256k1.signatureNormalize(normalizedCompactSig) assertFalse(wasNotNormalized3) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(normalizedCompactSig3).uppercase(), + Hex.encode(normalizedCompactSig3).uppercase() ) - val notNormalizedCompactSig = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase()) + val notNormalizedCompactSig = + Hex.decode( + "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase() + ) val (normalizedCompactSig4, wasNotNormalized4) = secp256k1.signatureNormalize(notNormalizedCompactSig) assertTrue(wasNotNormalized4) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(normalizedCompactSig4).uppercase(), + Hex.encode(normalizedCompactSig4).uppercase() ) } @@ -174,12 +204,18 @@ class Secp256k1Tests { @Test fun createCompactEcdsaSignature() { val ecdsa = ECDSA() - val message = Hex.decode("CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()) // sha256hash of "testing" - val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase()) + val message = + Hex.decode( + "CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase() + ) // sha256hash of "testing" + val priv = + Hex.decode( + "67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase() + ) val sig = ecdsa.sign(message, priv) assertEquals( "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(sig).uppercase(), + Hex.encode(sig).uppercase() ) } @@ -210,7 +246,7 @@ class Secp256k1Tests { val npriv = secp256k1.privateKeyNegate(priv) assertEquals( "981A9A7DD677A622518DA068D66D5F824E5F22F084B8A0E2F195B5662F300C11", - Hex.encode(npriv).uppercase(), + Hex.encode(npriv).uppercase() ) val nnpriv: ByteArray = secp256k1.privateKeyNegate(npriv) assertContentEquals(priv, nnpriv) @@ -224,7 +260,7 @@ class Secp256k1Tests { val tweakedPriv = secp256k1.privateKeyTweakAdd(priv, tweak) assertEquals( "A168571E189E6F9A7E2D657A4B53AE99B909F7E712D1C23CED28093CD57C88F3", - Hex.encode(tweakedPriv).uppercase(), + Hex.encode(tweakedPriv).uppercase() ) } @@ -236,29 +272,35 @@ class Secp256k1Tests { val tweakedPriv = secp256k1.privateKeyTweakMul(priv, tweak) assertEquals( "97F8184235F101550F3C71C927507651BD3F1CDB4A5A33B8986ACF0DEE20FFFC", - Hex.encode(tweakedPriv).uppercase(), + Hex.encode(tweakedPriv).uppercase() ) } @Test fun addTweakToPublicKey() { - val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()) + val pub = + Hex.decode( + "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase() + ) val tweak = Hex.decode("3982F19BEF1615BCCFBB05E321C10E1D4CBA3DF0E841C2E41EEB6016347653C3".lowercase()) val tweakedPub = Secp256k1Native.pubKeyTweakAdd(pub, tweak) assertEquals( "0411C6790F4B663CCE607BAAE08C43557EDC1A4D11D88DFCB3D841D0C6A941AF525A268E2A863C148555C48FB5FBA368E88718A46E205FABC3DBA2CCFFAB0796EF", - Hex.encode(tweakedPub).uppercase(), + Hex.encode(tweakedPub).uppercase() ) } @Test fun multiplyPublicKeyWithTweak() { - val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()) + val pub = + Hex.decode( + "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase() + ) val tweak = Hex.decode("3982F19BEF1615BCCFBB05E321C10E1D4CBA3DF0E841C2E41EEB6016347653C3".lowercase()) val tweakedPub = Secp256k1Native.pubKeyTweakMul(pub, tweak) assertEquals( "04E0FE6FE55EBCA626B98A807F6CAF654139E14E5E3698F01A9A658E21DC1D2791EC060D4F412A794D5370F672BC94B722640B5F76914151CFCA6E712CA48CC589", - Hex.encode(tweakedPub).uppercase(), + Hex.encode(tweakedPub).uppercase() ) } @@ -266,11 +308,14 @@ class Secp256k1Tests { fun createEcdhSecret() { val ecdh = ECDH() val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase()) - val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()) + val pub = + Hex.decode( + "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase() + ) val secret = ecdh.ecdh(priv, pub) assertEquals( "2A2A67007A926E6594AF3EB564FC74005B37A9C8AEF2033C4552051B5C87F043", - Hex.encode(secret).uppercase(), + Hex.encode(secret).uppercase() ) } @@ -301,11 +346,14 @@ class Secp256k1Tests { @Test fun convertCompactEcdsaSignatureToDer() { val ecdsa = ECDSA() - val compact = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()) // sha256hash of "testing" + val compact = + Hex.decode( + "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase() + ) // sha256hash of "testing" val der = ecdsa.compact2der(compact) assertEquals( "30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9", - Hex.encode(der).uppercase(), + Hex.encode(der).uppercase() ) } diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt similarity index 94% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt index aba30eea6..6af05918e 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt @@ -9,11 +9,11 @@ import io.iohk.atala.prism.apollo.utils.asUint8Array import io.iohk.atala.prism.apollo.utils.decodeHex import io.iohk.atala.prism.apollo.utils.external.BN import io.iohk.atala.prism.apollo.utils.external.ec -import io.iohk.atala.prism.apollo.utils.external.secp256k1.getPublicKey +import io.iohk.atala.prism.apollo.utils.external.secp256k1.secp256k1 actual class Secp256k1Lib actual constructor() { actual fun createPublicKey(privateKey: ByteArray, compressed: Boolean): ByteArray { - return getPublicKey(privateKey.asUint8Array(), isCompressed = compressed).asByteArray() + return secp256k1.getPublicKey(privateKey.asUint8Array(), compressed).asByteArray() } actual fun derivePrivateKey(privateKeyBytes: ByteArray, derivedPrivateKeyBytes: ByteArray): ByteArray? { diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt similarity index 68% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt index e09640683..495ae4f86 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt @@ -1,4 +1,4 @@ -package io.iohk.atala.prism.apollo.utils // ktlint-disable filename +package io.iohk.atala.prism.apollo.utils import io.iohk.atala.prism.apollo.utils.external.BN diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt similarity index 64% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt index e2d6c5a8e..ae6d02fd2 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt @@ -12,32 +12,35 @@ actual final class KMMRSAKeyPair actual constructor( val publicKey: KMMRSAPublicKey ) { actual companion object : RSAKeyPairGeneration { - private fun getRsaHashedKeyGenParams(algorithm: RSAAsymmetricAlgorithm, hashType: JsHashType, keySize: Int): RsaHashedKeyGenParams { val algorithmNativeValue = algorithm.nativeValue() val keySizeNativeValue = keySize val hashTypeNativeValue = hashType.nativeValue() - return js("{name: algorithmNativeValue, modulusLength: keySizeNativeValue, publicExponent: new Uint8Array([1, 0, 1]), hash: hashTypeNativeValue}").unsafeCast() + return js( + "{name: algorithmNativeValue, modulusLength: keySizeNativeValue, publicExponent: new Uint8Array([1, 0, 1]), hash: hashTypeNativeValue}" + ).unsafeCast() } override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair { return MainScope().promise { - val keyPair = crypto.subtle.generateKey( - getRsaHashedKeyGenParams(algorithm, hash, keySize), - true, - arrayOf(KeyUsage.sign, KeyUsage.verify) - ).await() + val keyPair = + crypto.subtle.generateKey( + getRsaHashedKeyGenParams(algorithm, hash, keySize), + true, + arrayOf(KeyUsage.sign, KeyUsage.verify) + ).await() KMMRSAKeyPair(KMMRSAPrivateKey(keyPair.privateKey), KMMRSAPublicKey(keyPair.publicKey)) }.await() } override suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair { return MainScope().promise { - val keyPair = crypto.subtle.generateKey( - getRsaHashedKeyGenParams(algorithm, hash, keySize), - true, - arrayOf(KeyUsage.sign, KeyUsage.verify) - ).await() + val keyPair = + crypto.subtle.generateKey( + getRsaHashedKeyGenParams(algorithm, hash, keySize), + true, + arrayOf(KeyUsage.sign, KeyUsage.verify) + ).await() KMMRSAKeyPair(KMMRSAPrivateKey(keyPair.privateKey), KMMRSAPublicKey(keyPair.publicKey)) }.await() } diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt similarity index 100% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt similarity index 99% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt index b09d765f9..d270ea2f8 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt @@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils actual interface RSAKeyPairGeneration { suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair + suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair } diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt similarity index 96% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt index 57f9af8db..0cd1e4278 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt @@ -1,8 +1,7 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") @file:JsModule("bip32") -/* ktlint-disable */ package io.iohk.atala.prism.apollo.utils.external import node.buffer.Buffer @@ -61,4 +60,3 @@ internal external fun fromPrivateKey(privateKey: Buffer, chainCode: Buffer, netw internal external fun fromPublicKey(publicKey: Buffer, chainCode: Buffer, network: Network = definedExternally): BIP32Interface internal external fun fromSeed(seed: Buffer, network: Network = definedExternally): BIP32Interface -/* ktlint-disable */ diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt similarity index 95% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt index ce8b428a8..5b161a0bb 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt @@ -1,8 +1,7 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") @file:JsModule("bip39") -/* ktlint-disable */ package io.iohk.atala.prism.apollo.utils.external import node.buffer.Buffer @@ -29,4 +28,3 @@ internal external fun validateMnemonic(mnemonic: String, wordlist: Array internal external fun setDefaultWordlist(language: String) internal external fun getDefaultWordlist(): String -/* ktlint-disable */ diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt similarity index 97% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt index 123d51834..b9334bff9 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt @@ -1,12 +1,11 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") // @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") -/* ktlint-disable */ package io.iohk.atala.prism.apollo.utils.external -import org.khronos.webgl.* // ktlint-disable no-wildcard-imports -import kotlin.js.* // ktlint-disable no-wildcard-imports +import org.khronos.webgl.* +import kotlin.js.* external interface EGCD { var a: BN @@ -204,4 +203,3 @@ open external class RedBN : BN { open fun redNeg(): RedBN open fun redPow(b: BN): RedBN } -/* ktlint-disable */ diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt similarity index 99% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt index 1e43474d2..c387bac02 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt @@ -1,10 +1,9 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") // @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") @file:JsQualifier("curve") @file:JsModule("elliptic") -/* ktlint-disable */ package io.iohk.atala.prism.apollo.utils.external import org.khronos.webgl.Uint8Array @@ -175,4 +174,3 @@ open external class short(conf: ShortConf) : base { open fun toJSON(): Array */> } } -/* ktlint-disable */ diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt similarity index 99% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt index 3311a0c67..946e73005 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt @@ -1,5 +1,5 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") // @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") @file:JsModule("elliptic") diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt similarity index 93% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt index 6ab99ced1..855ad71eb 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt @@ -1,10 +1,9 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile -@file:Suppress("ktlint") +@file:Suppress("ktlint", "internal:ktlint-suppression") // @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") @file:JsQualifier("curves") @file:JsModule("elliptic") -/* ktlint-disable */ package io.iohk.atala.prism.apollo.utils.external open external class PresetCurve(options: Options) { @@ -33,4 +32,3 @@ open external class PresetCurve(options: Options) { set(value) = definedExternally } } -/* ktlint-disable */ diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt similarity index 90% rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt index 9897fcb6c..dc961e0d6 100644 --- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt @@ -1,6 +1,6 @@ // Automatically generated by dukat and then slightly adjusted manually to make it compile +@file:Suppress("ktlint", "internal:ktlint-suppression", "SpellCheckingInspection") @file:JsModule("@stablelib/x25519") -@file:Suppress("SpellCheckingInspection") package io.iohk.atala.prism.apollo.utils.external diff --git a/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt new file mode 100644 index 000000000..61bacc759 --- /dev/null +++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt @@ -0,0 +1,96 @@ +// Automatically generated by dukat and then slightly adjusted manually to make it compile +@file:Suppress("ktlint", "internal:ktlint-suppression") +// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS") +@file:JsModule("@noble/curves/secp256k1") + +package io.iohk.atala.prism.apollo.utils.external.secp256k1 + +import io.iohk.atala.prism.apollo.utils.external.BN +import kotlin.js.* +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.svg.* +import org.w3c.dom.url.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.performance.* +import org.w3c.workers.* +import org.w3c.xhr.* +import org.khronos.webgl.Uint8Array + +external interface `T$0` { + var k1neg: Boolean + var k1: Any + var k2neg: Boolean + var k2: Any +} + +external interface `T$1` { + var beta: Any + var splitScalar: (k: Any) -> `T$0` +} + + +external interface `T$2` { + var nBitLength: Number + var nByteLength: Number + var Fp: Any + var n: Any + var h: Any + var hEff: Any? + get() = definedExternally + set(value) = definedExternally + var Gx: Any + var Gy: Any + var allowInfinityPoint: Boolean? + get() = definedExternally + set(value) = definedExternally + var a: Any + var b: Any + var allowedPrivateKeyLengths: Array? + get() = definedExternally + set(value) = definedExternally + var wrapPrivateKey: Boolean? + get() = definedExternally + set(value) = definedExternally + var endo: `T$1`? + get() = definedExternally + set(value) = definedExternally + var hash: Any + var hmac: (key: Uint8Array, messages: Uint8Array) -> Uint8Array + var randomBytes: (bytesLength: Number?) -> Uint8Array + var lowS: Boolean + var bits2int: ((bytes: Uint8Array) -> Any)? + get() = definedExternally + set(value) = definedExternally + var bits2int_modN: ((bytes: Uint8Array) -> Any)? + get() = definedExternally + set(value) = definedExternally + var p: Any +} + +external interface `T$4` { + var normPrivateKeyToScalar: (key: dynamic /* Uint8Array | String | Any */) -> Any + fun isValidPrivateKey(privateKey: Uint8Array): Boolean + fun isValidPrivateKey(privateKey: String): Boolean + fun isValidPrivateKey(privateKey: Any): Boolean + var randomPrivateKey: () -> Uint8Array +} + +external interface `T$5` { + var create: (hash: Any) -> Any + var CURVE:`T$2` + var getPublicKey: (privateKey: dynamic /* Uint8Array | String | Any */, isCompressed: Boolean?) -> Uint8Array + var getSharedSecret: (privateA: dynamic /* Uint8Array | String | Any */, publicB: dynamic /* Uint8Array | String */, isCompressed: Boolean?) -> Uint8Array + var sign: (msgHash: dynamic /* Uint8Array | String */, privKey: dynamic /* Uint8Array | String | Any */, opts: Any?) -> Any + var verify: (signature: dynamic /* Uint8Array | String | `T$3` */, msgHash: dynamic /* Uint8Array | String */, publicKey: dynamic /* Uint8Array | String */, opts: Any?) -> Boolean + var ProjectivePoint: Any + var Signature: Any + var utils: `T$4` +} + + +external var secp256k1: `T$5` diff --git a/base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt b/cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt similarity index 100% rename from base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt rename to cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt diff --git a/base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt b/cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt similarity index 100% rename from base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt rename to cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt similarity index 97% rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt index 4e40ea7ad..a768cf944 100644 --- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt +++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt @@ -17,7 +17,7 @@ actual class KMMEdKeyPair actual constructor( val pair = generator.generateKeyPair() return KMMEdKeyPair( privateKey = KMMEdPrivateKey((pair.private as Ed25519PrivateKeyParameters).encoded), - publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded), + publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded) ) } } diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt similarity index 99% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt index 5092af0a0..42f1d6ef7 100644 --- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt +++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt @@ -5,7 +5,6 @@ import org.bouncycastle.crypto.signers.Ed25519Signer import java.io.ByteArrayInputStream actual class KMMEdPrivateKey(val raw: ByteArray) { - fun publicKey(): KMMEdPublicKey { val private = Ed25519PrivateKeyParameters(raw, 0) val public = private.generatePublicKey() diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt similarity index 99% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt index 35d472890..3acf9191f 100644 --- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt +++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt @@ -5,7 +5,6 @@ import java.security.SecureRandom actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) { actual companion object : RSAKeyPairGeneration { - override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair { val keyPairGen = KeyPairGenerator.getInstance(algorithm.nativeValue()) keyPairGen.initialize(keySize, SecureRandom()) diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt similarity index 99% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt index 1067ed504..78da76f87 100644 --- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt +++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt @@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils import org.bouncycastle.crypto.params.X25519PrivateKeyParameters actual class KMMX25519PrivateKey(val raw: ByteArray) { - fun publicKey(): KMMX25519PublicKey { val private = X25519PrivateKeyParameters(raw, 0) val public = private.generatePublicKey() diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt similarity index 100% rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt similarity index 99% rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt index 368847040..d2a9d602b 100644 --- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt +++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt @@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils actual interface RSAKeyPairGeneration { suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair + suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair } diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKCryptoKit.def b/cryptography/src/nativeInterop/cinterop/IOHKCryptoKit.def similarity index 100% rename from base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKCryptoKit.def rename to cryptography/src/nativeInterop/cinterop/IOHKCryptoKit.def diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def b/cryptography/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def similarity index 100% rename from base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def rename to cryptography/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/SwiftCryptoKit.def b/cryptography/src/nativeInterop/cinterop/SwiftCryptoKit.def similarity index 100% rename from base-asymmetric-encryption/src/nativeInterop/cinterop/SwiftCryptoKit.def rename to cryptography/src/nativeInterop/cinterop/SwiftCryptoKit.def diff --git a/base-asymmetric-encryption/webpack.config.d/polyfill.js b/cryptography/webpack.config.d/polyfill.js similarity index 100% rename from base-asymmetric-encryption/webpack.config.d/polyfill.js rename to cryptography/webpack.config.d/polyfill.js diff --git a/ecdsa/build.gradle.kts b/ecdsa/build.gradle.kts deleted file mode 100644 index 7c438150f..000000000 --- a/ecdsa/build.gradle.kts +++ /dev/null @@ -1,275 +0,0 @@ -import org.gradle.internal.os.OperatingSystem -import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target - -val currentModuleName = "ApolloECDSA" -val os: OperatingSystem = OperatingSystem.current() - -plugins { - kotlin("multiplatform") - kotlin("native.cocoapods") - id("com.android.library") - id("org.jetbrains.dokka") -} - -kotlin { - android { - publishAllLibraryVariants() - } - jvm { - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - testRuns["test"].executionTask.configure { - useJUnitPlatform() - } - } - if (os.isMacOsX) { - ios() -// tvos() -// watchos() -// macosX64() -// if (System.getProperty("os.arch") != "x86_64") { // M1Chip -// iosSimulatorArm64() -// tvosSimulatorArm64() -// watchosSimulatorArm64() -// macosArm64() -// } - } -// if (os.isWindows) { -// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// mingwX64() -// } - js(IR) { - this.moduleName = currentModuleName - this.binaries.library() - this.useCommonJs() - this.compilations["main"].packageJson { - this.version = rootProject.version.toString() - } - this.compilations["test"].packageJson { - this.version = rootProject.version.toString() - } - browser { - this.webpackTask { - this.output.library = currentModuleName - this.output.libraryTarget = Target.VAR - } - this.commonWebpackConfig { - this.cssSupport { - this.enabled = true - } - } - this.testTask { - if (os.isWindows) { - this.enabled = false - } - this.useKarma { - this.useChromeHeadless() - } - } - } - nodejs { - this.testTask { - if (os.isWindows) { - this.enabled = false - } - this.useKarma { - this.useChromeHeadless() - } - } - } - } - - if (os.isMacOsX) { - cocoapods { - this.summary = "ApolloECDSA is ECDSA" - this.version = rootProject.version.toString() - this.authors = "IOG" - this.ios.deploymentTarget = "13.0" - this.osx.deploymentTarget = "12.0" - this.tvos.deploymentTarget = "13.0" - this.watchos.deploymentTarget = "8.0" - framework { - this.baseName = currentModuleName - } - - pod("IOHKRSA") { - version = "1.0.0" - packageName = "IOHKRSA1" - source = path(project.file("../iOSLibs/IOHKRSA")) - } - - pod("IOHKSecureRandomGeneration") { - version = "1.0.0" - packageName = "IOHKSecureRandomGeneration2" - source = path(project.file("../iOSLibs/IOHKSecureRandomGeneration")) - } - } - } - - sourceSets { - val commonMain by getting { - dependencies { - implementation(project(":utils")) - implementation(project(":base-asymmetric-encryption")) - implementation(project(":hashing")) - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - val jvmMain by getting { - dependencies { - implementation("org.bouncycastle:bcprov-jdk15on:1.68") - } - } - val jvmTest by getting - val androidMain by getting { - dependencies { - implementation("org.bouncycastle:bcprov-jdk15on:1.68") - } - } - val androidTest by getting { - dependencies { - implementation("junit:junit:4.13.2") - } - } - val jsMain by getting { - dependencies { - implementation(npm("elliptic", "6.5.4")) - implementation(npm("@types/elliptic", "6.4.14")) - - // Polyfill dependencies - implementation(npm("stream-browserify", "3.0.0")) - implementation(npm("buffer", "6.0.3")) - - implementation("org.jetbrains.kotlin-wrappers:kotlin-web:1.0.0-pre.461") - implementation("org.jetbrains.kotlin-wrappers:kotlin-node:18.11.13-pre.461") - } - } - val jsTest by getting - if (os.isMacOsX) { - val iosMain by getting - val iosTest by getting -// val tvosMain by getting -// val tvosTest by getting -// val watchosMain by getting -// val watchosTest by getting -// val macosX64Main by getting -// val macosX64Test by getting -// if (System.getProperty("os.arch") != "x86_64") { // M1Chip -// val iosSimulatorArm64Main by getting { -// this.dependsOn(iosMain) -// } -// val iosSimulatorArm64Test by getting { -// this.dependsOn(iosTest) -// } -// val tvosSimulatorArm64Main by getting { -// this.dependsOn(tvosMain) -// } -// val tvosSimulatorArm64Test by getting { -// this.dependsOn(tvosTest) -// } -// val watchosSimulatorArm64Main by getting { -// this.dependsOn(watchosMain) -// } -// val watchosSimulatorArm64Test by getting { -// this.dependsOn(watchosTest) -// } -// val macosArm64Main by getting { -// this.dependsOn(macosX64Main) -// } -// val macosArm64Test by getting { -// this.dependsOn(macosX64Test) -// } -// } - } -// if (os.isWindows) { -// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// val mingwX64Main by getting -// val mingwX64Test by getting -// } - } -} - -android { - compileSdk = 32 - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - defaultConfig { - minSdk = 21 - targetSdk = 32 - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - /** - * Because Software Components will not be created automatically for Maven publishing from - * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android. - * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new - * publishing DSL. - */ - publishing { - multipleVariants { - withSourcesJar() - withJavadocJar() - allVariants() - } - } -} - -// Dokka implementation -tasks.withType { - moduleName.set(project.name) - moduleVersion.set(rootProject.version.toString()) - description = """ - This is a Kotlin Multiplatform Library for ECDSA - """.trimIndent() - dokkaSourceSets { - // TODO: Figure out how to include files to the documentations - named("commonMain") { - includes.from("Module.md", "docs/Module.md") - } - } -} - -// afterEvaluate { -// tasks.withType { -// testLogging { -// events("passed", "skipped", "failed", "standard_out", "standard_error") -// showExceptions = true -// showStackTraces = true -// } -// } -// } - -// TODO(Investigate why the below tasks fails) -tasks.matching { - fun String.isOneOf(values: List): Boolean { - for (value in values) { - if (this == value) { - return true - } - } - return false - } - - it.name.isOneOf( - listOf( - "linkPodReleaseFrameworkIosFat", - ":linkPodReleaseFrameworkIosFat", - ":base-asymmetric-encryption:linkPodReleaseFrameworkIosFat", - "linkPodDebugFrameworkIosFat", - ":linkPodDebugFrameworkIosFat", - ":base-asymmetric-encryption:linkPodDebugFrameworkIosFat" - ) - ) -}.all { - this.enabled = false -} diff --git a/ecdsa/ecdsa.podspec b/ecdsa/ecdsa.podspec deleted file mode 100644 index 663c8fdc7..000000000 --- a/ecdsa/ecdsa.podspec +++ /dev/null @@ -1,43 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'ecdsa' - spec.version = '1.7.0-alpha' - spec.homepage = '' - spec.source = { :http=> ''} - spec.authors = 'IOG' - spec.license = '' - spec.summary = 'ApolloECDSA is ECDSA' - spec.vendored_frameworks = 'build/cocoapods/framework/ApolloECDSA.framework' - spec.libraries = 'c++' - spec.ios.deployment_target = '13.0' - spec.osx.deployment_target = '12.0' - spec.tvos.deployment_target = '13.0' - spec.watchos.deployment_target = '8.0' - spec.dependency 'IOHKRSA', '1.0.0' - spec.dependency 'IOHKSecureRandomGeneration', '1.0.0' - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':ecdsa', - 'PRODUCT_MODULE_NAME' => 'ApolloECDSA', - } - - spec.script_phases = [ - { - :name => 'Build ecdsa', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then - echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" - SCRIPT - } - ] - -end \ No newline at end of file diff --git a/ecdsa/src/androidMain/AndroidManifest.xml b/ecdsa/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 3ee55cfd8..000000000 --- a/ecdsa/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt deleted file mode 100644 index 8fa645d39..000000000 --- a/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt +++ /dev/null @@ -1,43 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMECPublicKey -import org.bouncycastle.jce.provider.BouncyCastleProvider -import java.security.Signature - -actual object KMMECDSA { - private val provider = BouncyCastleProvider() - - actual fun sign( - type: ECDSAType, - data: ByteArray, - privateKey: KMMECPrivateKey - ): ByteArray { - val signatureAlgorithm = when (type) { - ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA" - ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA" - ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA" - } - val signer = Signature.getInstance(signatureAlgorithm, provider) - signer.initSign(privateKey.nativeValue) - signer.update(data) - return signer.sign() - } - - actual fun verify( - type: ECDSAType, - data: ByteArray, - publicKey: KMMECPublicKey, - signature: ByteArray - ): Boolean { - val signatureAlgorithm = when (type) { - ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA" - ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA" - ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA" - } - val verifier = Signature.getInstance(signatureAlgorithm, provider) - verifier.initVerify(publicKey.nativeValue) - verifier.update(data) - return verifier.verify(signature) - } -} diff --git a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt b/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt deleted file mode 100644 index 95139ad2b..000000000 --- a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -enum class ECDSAType { - ECDSA_SHA256, - ECDSA_SHA384, - ECDSA_SHA512 -} diff --git a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt deleted file mode 100644 index dfd349d29..000000000 --- a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -expect object KMMECDSA { - fun sign(type: ECDSAType, data: ByteArray, privateKey: KMMECPrivateKey): ByteArray - fun verify(type: ECDSAType, data: ByteArray, publicKey: KMMECPublicKey, signature: ByteArray): Boolean -} diff --git a/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt b/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt deleted file mode 100644 index 13d81d896..000000000 --- a/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt +++ /dev/null @@ -1,141 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -import io.iohk.atala.prism.apollo.utils.KMMECSecp256k1KeyPair -import io.iohk.atala.prism.apollo.utils.KMMECSecp256k1PrivateKey -import io.iohk.atala.prism.apollo.utils.decodeHex -import kotlin.test.Ignore -import kotlin.test.Test -import kotlin.test.assertFalse -import kotlin.test.assertTrue - -class KMMECDSATests { - - @Test - fun testECDSA() { - val textToSign = "Hello IOG!" - val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair() - - val signature = KMMECDSA.sign( - ECDSAType.ECDSA_SHA256, - textToSign.encodeToByteArray(), - keyPair.privateKey - ) - - assertTrue( - KMMECDSA.verify( - ECDSAType.ECDSA_SHA256, - textToSign.encodeToByteArray(), - keyPair.publicKey, - signature - ) - ) - } - - @Test - fun testSignAndVerifyText() { - val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair() - val text = "The quick brown fox jumps over the lazy dog" - - val signature = KMMECDSA.sign( - type = ECDSAType.ECDSA_SHA256, - privateKey = keyPair.privateKey, - data = text.encodeToByteArray() - ) - - assertTrue( - KMMECDSA.verify( - type = ECDSAType.ECDSA_SHA256, - data = text.encodeToByteArray(), - publicKey = keyPair.publicKey, - signature = signature - ) - ) - } - - @Test - fun testSignAndVerifyData() { - val testData = byteArrayOf(-107, 101, 68, 118, 27, 74, 29, 50, -32, 72, 47, -127, -49, 3, -8, -55, -63, -66, 46, 125) - val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair() - - val signature = KMMECDSA.sign( - type = ECDSAType.ECDSA_SHA256, - privateKey = keyPair.privateKey, - data = testData - ) - - assertTrue( - KMMECDSA.verify( - type = ECDSAType.ECDSA_SHA256, - data = testData, - publicKey = keyPair.publicKey, - signature = signature - ) - ) - } - - @Test - fun testNotVerifyWrongInput() { - val type = ECDSAType.ECDSA_SHA256 - val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair() - val wrongKeyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair() - - val text = "The quick brown fox jumps over the lazy dog" - val wrongText = "Wrong text" - - val signature = KMMECDSA.sign( - type = type, - privateKey = keyPair.privateKey, - data = text.encodeToByteArray() - ) - val wrongSignature = KMMECDSA.sign( - type = type, - privateKey = keyPair.privateKey, - data = wrongText.encodeToByteArray() - ) - - assertFalse( - KMMECDSA.verify( - type = type, - data = wrongText.encodeToByteArray(), - publicKey = keyPair.publicKey, - signature = signature - ) - ) - assertFalse( - KMMECDSA.verify( - type = type, - data = text.encodeToByteArray(), - publicKey = wrongKeyPair.publicKey, - signature = signature - ) - ) - assertFalse( - KMMECDSA.verify( - type = type, - data = text.encodeToByteArray(), - publicKey = keyPair.publicKey, - signature = wrongSignature - ) - ) - } - - @Test - @Ignore // Not working for JS - fun testVerifySameSignatureInAllImplementations() { - val testData = byteArrayOf(-107, 101, 68, 118, 27, 74, 29, 50, -32, 72, 47, -127, -49, 3, -8, -55, -63, -66, 46, 125) - val hexEncodedPrivateKey = "0123fbf1050c3fc060b709fdcf240e766a41190c40afc5ac7a702961df8313c0" - val hexEncodedSignature = - "30450221008a78c557dfc18275b5c800281ef8d26d2b40572b9c1442d708c610f50f797bd302207e44e340f787df7ab1299dabfc988e4c02fcaca0f68dbe813050f4b8641fa739" - val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromBytes(hexEncodedPrivateKey.decodeHex()) - val signature = hexEncodedSignature.decodeHex() - - assertTrue( - KMMECDSA.verify( - type = ECDSAType.ECDSA_SHA256, - data = testData, - publicKey = privateKey.getPublicKey(), - signature = signature - ) - ) - } -} diff --git a/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt deleted file mode 100644 index ddb1bd336..000000000 --- a/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt +++ /dev/null @@ -1,115 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -/* ktlint-disable */ -import io.iohk.atala.prism.apollo.hashing.SHA256 -import io.iohk.atala.prism.apollo.hashing.SHA384 -import io.iohk.atala.prism.apollo.hashing.SHA512 -import io.iohk.atala.prism.apollo.secp256k1.Secp256k1Exception -import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMECPublicKey -import io.iohk.atala.prism.apollo.utils.toHex -import kotlinx.cinterop.UByteVar -import kotlinx.cinterop.addressOf -import kotlinx.cinterop.alloc -import kotlinx.cinterop.allocArray -import kotlinx.cinterop.convert -import kotlinx.cinterop.memScoped -import kotlinx.cinterop.pin -import kotlinx.cinterop.ptr -import kotlinx.cinterop.readBytes -import secp256k1.* -/* ktlint-disable */ - -actual object KMMECDSA { - @OptIn(ExperimentalUnsignedTypes::class) - actual fun sign( - type: ECDSAType, - data: ByteArray, - privateKey: KMMECPrivateKey - ): ByteArray { - val hashedData = when (type) { - ECDSAType.ECDSA_SHA256 -> SHA256().digest(data) - ECDSAType.ECDSA_SHA384 -> SHA384().digest(data) - ECDSAType.ECDSA_SHA512 -> SHA512().digest(data) - } - memScoped { - // Context - val context = secp256k1_context_create((SECP256K1_CONTEXT_SIGN or SECP256K1_CONTEXT_VERIFY).convert()) - - val privateKeyPinned = privateKey.nativeValue.pin() - val nPrivateKey = privateKeyPinned.addressOf(0) - - val messagePinned = hashedData.toUByteArray().pin() - val nMessage = messagePinned.addressOf(0) - - val nSig = alloc() - if (secp256k1_ecdsa_sign(context, nSig.ptr, nMessage, nPrivateKey, null, null) != 1) { - throw Secp256k1Exception("secp256k1_ecdsa_sign() failed") - } - val natOutput = allocArray(64) - - if(secp256k1_ecdsa_signature_serialize_compact(context, natOutput, nSig.ptr) != 1) { - throw Secp256k1Exception("secp256k1_ecdsa_signature_serialize_compact() failed") - } - - this.defer { - secp256k1_context_destroy(context) - privateKeyPinned.unpin() - messagePinned.unpin() - } - return natOutput.readBytes(64) - } - } - - @OptIn(ExperimentalUnsignedTypes::class) - actual fun verify( - type: ECDSAType, - data: ByteArray, - publicKey: KMMECPublicKey, - signature: ByteArray - ): Boolean { - val hashedData = when (type) { - ECDSAType.ECDSA_SHA256 -> SHA256().digest(data) - ECDSAType.ECDSA_SHA384 -> SHA384().digest(data) - ECDSAType.ECDSA_SHA512 -> SHA512().digest(data) - } - memScoped { - // Context - val context = secp256k1_context_create((SECP256K1_CONTEXT_SIGN or SECP256K1_CONTEXT_VERIFY).convert()) - - // Public Key Alloc - val publicKeyPinned = publicKey.getEncoded().asUByteArray().pin() - val natPub = publicKeyPinned.addressOf(0) - val nPublicKey = alloc() - - if (secp256k1_ec_pubkey_parse(context, nPublicKey.ptr, natPub, publicKey.nativeValue.size.convert()) != 1) { - throw Secp256k1Exception("secp256k1_ec_pubkey_parse() failed") - } - - // Message - val messagePinned = hashedData.toUByteArray().pin() - val nMessage = messagePinned.addressOf(0) - - // Signature - val sig = alloc() - val sigPinned = signature.toUByteArray().pin() - val nativeBytes = sigPinned.addressOf(0) - val result = when { - signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes) - signature.size < 64 -> throw Secp256k1Exception("Unknown signature format") - else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert()) - } - if (result != 1) { - throw Secp256k1Exception("cannot parse signature (size = ${signature.size} sig = ${signature.toHex()}") - } - - this.defer { - secp256k1_context_destroy(context) - publicKeyPinned.unpin() - messagePinned.unpin() - sigPinned.unpin() - } - return secp256k1_ecdsa_verify(context, sig.ptr, nMessage, nPublicKey.ptr) == 1 - } - } -} diff --git a/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt deleted file mode 100644 index 0928f4cfe..000000000 --- a/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt +++ /dev/null @@ -1,47 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -import io.iohk.atala.prism.apollo.hashing.internal.toHexString -import io.iohk.atala.prism.apollo.utils.ECConfig -import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMECPublicKey -import io.iohk.atala.prism.apollo.utils.decodeHex -import io.iohk.atala.prism.apollo.utils.external.ec - -actual object KMMECDSA { - actual fun sign( - type: ECDSAType, - data: ByteArray, - privateKey: KMMECPrivateKey - ): ByteArray { - when (type) { - ECDSAType.ECDSA_SHA256 -> {} - ECDSAType.ECDSA_SHA384, ECDSAType.ECDSA_SHA512 -> { - throw NotImplementedError("Only ECDSA with SHA256 is supported") - } - } - val byteList = privateKey.nativeValue.toArray().map { it.toByte() } - val padding = ByteArray(ECConfig.PRIVATE_KEY_BYTE_SIZE - byteList.size) { 0 } - val privateKeyBytes = (padding + byteList).toHexString() - - val ecjs = ec("secp256k1") - val signature = ecjs.sign(data.toHexString(), privateKeyBytes, enc = "hex") - val value = signature.toDER(enc = "hex").unsafeCast() - return value.decodeHex() - } - - actual fun verify( - type: ECDSAType, - data: ByteArray, - publicKey: KMMECPublicKey, - signature: ByteArray - ): Boolean { - when (type) { - ECDSAType.ECDSA_SHA256 -> {} - ECDSAType.ECDSA_SHA384, ECDSAType.ECDSA_SHA512 -> { - throw NotImplementedError("Only ECDSA with SHA256 is supported") - } - } - val ecjs = ec("secp256k1") - return ecjs.verify(data.toHexString(), signature.toHexString(), publicKey.getEncoded().toHexString(), enc = "hex") - } -} diff --git a/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt deleted file mode 100644 index 8fa645d39..000000000 --- a/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt +++ /dev/null @@ -1,43 +0,0 @@ -package io.iohk.atala.prism.apollo.ecdsa - -import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMECPublicKey -import org.bouncycastle.jce.provider.BouncyCastleProvider -import java.security.Signature - -actual object KMMECDSA { - private val provider = BouncyCastleProvider() - - actual fun sign( - type: ECDSAType, - data: ByteArray, - privateKey: KMMECPrivateKey - ): ByteArray { - val signatureAlgorithm = when (type) { - ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA" - ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA" - ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA" - } - val signer = Signature.getInstance(signatureAlgorithm, provider) - signer.initSign(privateKey.nativeValue) - signer.update(data) - return signer.sign() - } - - actual fun verify( - type: ECDSAType, - data: ByteArray, - publicKey: KMMECPublicKey, - signature: ByteArray - ): Boolean { - val signatureAlgorithm = when (type) { - ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA" - ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA" - ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA" - } - val verifier = Signature.getInstance(signatureAlgorithm, provider) - verifier.initVerify(publicKey.nativeValue) - verifier.update(data) - return verifier.verify(signature) - } -} diff --git a/gradle.properties b/gradle.properties index fd614ec4c..da34c5854 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,8 @@ -#Gradle -org.gradle.jvmargs=-Xmx3072M -Dkotlin.daemon.jvm.options\="-Xmx3072M" - -#Kotlin -kotlin.code.style=official - -#Android -android.useAndroidX=true - -#MPP -# kotlin.mpp.enableGranularSourceSetsMetadata=true -# kotlin.native.enableDependencyPropagation=false -kotlin.mpp.enableCInteropCommonization=true -kotlin.native.cacheKind.iosSimulatorArm64=none -kotlin.native.cacheKind.iosX64=none -kotlin.native.cacheKind.iosArm64=none +version = 1.0.15 +org.gradle.jvmargs = -Xmx3072M -Dkotlin.daemon.jvm.options="-Xmx3072M" +kotlin.code.style = official +android.useAndroidX = true +kotlin.mpp.enableCInteropCommonization = true +kotlin.native.cacheKind.iosSimulatorArm64 = none +kotlin.native.cacheKind.iosX64 = none +kotlin.native.cacheKind.iosArm64 = none diff --git a/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt b/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt index afc6b460f..4d941461f 100644 --- a/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt +++ b/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt @@ -7,30 +7,34 @@ import io.iohk.atala.prism.apollo.hashing.internal.toHexString import kotlin.test.Test import kotlin.test.assertEquals +/** + * Test From: + * - NIST test data + * - https://tools.ietf.org/rfc/rfc4231.txt + * - https://github.com/crypto-browserify/hash-test-vectors/blob/master/hmac.json + * - https://github.com/xsc/pandect/blob/main/test/pandect/hmac_test.clj + */ class HmacSHA512Tests : BaseHmacHashTests() { - override fun hash(key: ByteArray, stringToHash: ByteArray, outputLength: Int?): String { val hash = SHA512().createHmac(key, outputLength) return hash.digest(stringToHash).toHexString() } - /** - * From: - * - NIST test data - * - https://tools.ietf.org/rfc/rfc4231.txt - * - https://github.com/crypto-browserify/hash-test-vectors/blob/master/hmac.json - * - https://github.com/xsc/pandect/blob/main/test/pandect/hmac_test.clj - */ - @Test fun test_Strings() { assertEquals( "fc25e240658ca785b7a811a8d3f7b4ca48cfa26a8a366bf2cd1f836b05fcb024bd36853081811d6cea4216ebad79da1cfcb95ea4586b8a0ce356596a55fb1347", - hash("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F", "Sample message for keylen=blocklen") + hash( + "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F", + "Sample message for keylen=blocklen" + ) ) assertEquals( "fd44c18bda0bb0a6ce0e82b031bf2818f6539bd56ec00bdc10a8a2d730b3634de2545d639b0f2cf710d0692c72a1896f1f211c2b922d1a96c392e07e7ea9fedc", - hash("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F", "Sample message for keylen assertEquals(output, hash(key, ByteArray(index) { it.toByte() })) diff --git a/iOSLibs/build.gradle.kts b/iOSLibs/build.gradle.kts index 6fd7bb623..4c2166ab9 100644 --- a/iOSLibs/build.gradle.kts +++ b/iOSLibs/build.gradle.kts @@ -19,7 +19,7 @@ libraries.forEach { library -> "-target", "${library}Iphoneos", "-sdk", - sdk, + sdk ) } "macosx" -> { @@ -30,7 +30,7 @@ libraries.forEach { library -> "-target", "${library}Macos", "-sdk", - sdk, + sdk ) } } @@ -42,22 +42,22 @@ libraries.forEach { library -> inputs.files( fileTree("$projectDir/$library.xcodeproj") { exclude("**/xcuserdata") }, - fileTree("$projectDir/$library"), + fileTree("$projectDir/$library") ) when (sdk) { "iphoneos" -> { outputs.files( - fileTree("$projectDir/$library/build/Release-iphoneos"), + fileTree("$projectDir/$library/build/Release-iphoneos") ) } "iphonesimulator" -> { outputs.files( - fileTree("$projectDir/$library/build/Release-iphonesimulator"), + fileTree("$projectDir/$library/build/Release-iphonesimulator") ) } "macosx" -> { outputs.files( - fileTree("$projectDir/$library/build/Release"), + fileTree("$projectDir/$library/build/Release") ) } } diff --git a/jose/build.gradle.kts b/jose/build.gradle.kts deleted file mode 100644 index ac7d0a97e..000000000 --- a/jose/build.gradle.kts +++ /dev/null @@ -1,219 +0,0 @@ -import org.gradle.internal.os.OperatingSystem -import org.jetbrains.dokka.gradle.DokkaTask - -val currentModuleName = "JOSE" -val os: OperatingSystem = OperatingSystem.current() - -plugins { - kotlin("multiplatform") - kotlin("native.cocoapods") - id("com.android.library") - id("org.jetbrains.dokka") -} - -kotlin { - android { - publishAllLibraryVariants() - } - jvm { - compilations.all { - kotlinOptions { - jvmTarget = "11" - } - } - testRuns["test"].executionTask.configure { - useJUnitPlatform() - } - } - if (os.isMacOsX) { - // ios() -// tvos() -// watchos() -// macosX64() -// if (System.getProperty("os.arch") != "x86_64") { // M1Chip -// iosSimulatorArm64() -// tvosSimulatorArm64() -// watchosSimulatorArm64() -// macosArm64() -// } - } -// if (os.isWindows) { -// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// mingwX64() -// } -// js(IR) { -// this.moduleName = currentModuleName -// this.binaries.library() -// this.useCommonJs() -// this.compilations["main"].packageJson { -// this.version = rootProject.version.toString() -// } -// this.compilations["test"].packageJson { -// this.version = rootProject.version.toString() -// } -// browser { -// this.webpackTask { -// this.output.library = currentModuleName -// this.output.libraryTarget = Target.VAR -// } -// this.commonWebpackConfig { -// this.cssSupport { -// this.enabled = true -// } -// } -// this.testTask { -// if (os.isWindows) { -// this.enabled = false -// } -// this.useKarma { -// this.useChromeHeadless() -// } -// } -// } -// nodejs { -// this.testTask { -// if (os.isWindows) { -// this.enabled = false -// } -// this.useKarma { -// this.useChromeHeadless() -// } -// } -// } -// } - - if (os.isMacOsX) { - cocoapods { - this.summary = "JOSE is JSON Object Signing and Encryption" - this.version = rootProject.version.toString() - this.authors = "IOG" - this.ios.deploymentTarget = "13.0" - this.osx.deploymentTarget = "12.0" - this.tvos.deploymentTarget = "13.0" - this.watchos.deploymentTarget = "8.0" - framework { - this.baseName = currentModuleName - } - } - } - - sourceSets { - val commonMain by getting - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - val jvmMain by getting { - dependencies { - implementation("com.nimbusds:nimbus-jose-jwt:9.31") - } - } - val jvmTest by getting - val androidMain by getting { - dependencies { - implementation("com.nimbusds:nimbus-jose-jwt:9.31") - } - } - val androidTest by getting { - dependencies { - implementation("junit:junit:4.13.2") - } - } -// val jsMain by getting -// val jsTest by getting - if (os.isMacOsX) { -// val iosMain by getting -// val iosTest by getting -// val tvosMain by getting -// val tvosTest by getting -// val watchosMain by getting -// val watchosTest by getting -// val macosX64Main by getting -// val macosX64Test by getting - if (System.getProperty("os.arch") != "x86_64") { // M1Chip -// val iosSimulatorArm64Main by getting { -// this.dependsOn(iosMain) -// } -// val iosSimulatorArm64Test by getting { -// this.dependsOn(iosTest) -// } -// val tvosSimulatorArm64Main by getting { -// this.dependsOn(tvosMain) -// } -// val tvosSimulatorArm64Test by getting { -// this.dependsOn(tvosTest) -// } -// val watchosSimulatorArm64Main by getting { -// this.dependsOn(watchosMain) -// } -// val watchosSimulatorArm64Test by getting { -// this.dependsOn(watchosTest) -// } -// val macosArm64Main by getting { -// this.dependsOn(macosX64Main) -// } -// val macosArm64Test by getting { -// this.dependsOn(macosX64Test) -// } - } - } -// if (os.isWindows) { -// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well -// val mingwX64Main by getting -// val mingwX64Test by getting -// } - } -} - -android { - compileSdk = 32 - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - defaultConfig { - minSdk = 21 - targetSdk = 32 - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - /** - * Because Software Components will not be created automatically for Maven publishing from - * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android. - * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new - * publishing DSL. - */ - publishing { - multipleVariants { - withSourcesJar() - withJavadocJar() - allVariants() - } - } -} - -// Dokka implementation -tasks.withType { - moduleName.set(project.name) - moduleVersion.set(rootProject.version.toString()) - description = """ - This is a Kotlin Multiplatform Library for JOSE - JSON Object Signing and Encryption - """.trimIndent() - dokkaSourceSets { - // TODO: Figure out how to include files to the documentations - named("commonMain") { - includes.from("Module.md", "docs/Module.md") - } - } -} - -// afterEvaluate { -// tasks.withType { -// testLogging { -// events("passed", "skipped", "failed", "standard_out", "standard_error") -// showExceptions = true -// showStackTraces = true -// } -// } -// } diff --git a/jose/jose.podspec b/jose/jose.podspec deleted file mode 100644 index 02a6fa529..000000000 --- a/jose/jose.podspec +++ /dev/null @@ -1,42 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'jose' - spec.version = '1.7.0-alpha' - spec.homepage = '' - spec.source = { :http=> ''} - spec.authors = 'IOG' - spec.license = '' - spec.summary = 'JOSE is JSON Object Signing and Encryption' - spec.vendored_frameworks = 'build/cocoapods/framework/jose.framework' - spec.libraries = 'c++' - spec.ios.deployment_target = '13.0' - spec.osx.deployment_target = '12.0' - spec.tvos.deployment_target = '13.0' - spec.watchos.deployment_target = '8.0' - - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':jose', - 'PRODUCT_MODULE_NAME' => 'jose', - } - - spec.script_phases = [ - { - :name => 'Build jose', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then - echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" - SCRIPT - } - ] - -end \ No newline at end of file diff --git a/jose/src/androidMain/AndroidManifest.xml b/jose/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 09bb0c772..000000000 --- a/jose/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt b/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt deleted file mode 100644 index ac7648732..000000000 --- a/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt +++ /dev/null @@ -1,199 +0,0 @@ -package io.iohk.atala.prism.apollo.jose - -import com.nimbusds.jose.JOSEException -import com.nimbusds.jose.JOSEObjectType -import com.nimbusds.jose.JWSAlgorithm -import com.nimbusds.jose.JWSHeader -import com.nimbusds.jose.JWSObject -import com.nimbusds.jose.JWSObjectJSON -import com.nimbusds.jose.Payload -import com.nimbusds.jose.UnprotectedHeader -import com.nimbusds.jose.crypto.ECDSASigner -import com.nimbusds.jose.crypto.ECDSAVerifier -import com.nimbusds.jose.crypto.Ed25519Signer -import com.nimbusds.jose.crypto.Ed25519Verifier -import com.nimbusds.jose.jwk.Curve -import com.nimbusds.jose.jwk.ECKey -import com.nimbusds.jose.jwk.JWK -import com.nimbusds.jose.jwk.OctetKeyPair -import com.nimbusds.jose.util.Base64URL -import com.nimbusds.jwt.JWTClaimsSet -import com.nimbusds.jwt.SignedJWT -import java.security.SignatureException - -sealed interface Key { - val id: String - val jwk: JWK - val curve: Curve -} - -enum class Typ(val typ: String) { - Encrypted("application/didcomm-encrypted+json"), - Signed("application/didcomm-signed+json"), - Plaintext("application/didcomm-plain+json"); - - companion object { - fun parse(str: String): Typ = when (str) { - "application/didcomm-encrypted+json" -> Encrypted - "application/didcomm-signed+json" -> Signed - "application/didcomm-plain+json" -> Plaintext - else -> throw IllegalArgumentException("Unsupported message typ") - } - } -} - -enum class SignAlg { - /** - * Elliptic curve digital signature with edwards curves Ed25519 and SHA-512 - */ - ED25519, - - /** - * Elliptic curve digital signature with NIST p-256 curve and SHA-256 - */ - ES256, - - /** - * Elliptic curve digital signature with Secp256k1 keys - */ - ES256K -} - -inline fun JWK.asKey(): Key { - if (this !is Key) throw IllegalArgumentException("Can not cast JWK to ${Key::class.java.name}") - return this -} - -object JWS { - fun sign(payload: String, key: Key): String { - val jwk = key.jwk - val alg = getJWSAlgorithm(jwk) - - val signer = try { - when (alg) { - JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey()) - else -> throw NotImplementedError(alg.name) - } - } catch (e: JOSEException) { - throw NotImplementedError(alg.name) - } - - val jwsProtectedHeader = JWSHeader.Builder(alg) - .type(JOSEObjectType(Typ.Signed.typ)) - .build() - - val jwsUnprotectedHeader = UnprotectedHeader.Builder().keyID(key.id).build() - return JWSObjectJSON(Payload(Base64URL.encode(payload))) - .apply { - try { - sign(jwsProtectedHeader, jwsUnprotectedHeader, signer) - } catch (e: JOSEException) { - // this can be thrown if the signature type is not supported - // example: curve256k1 is not supported in JDK >= 15 - if (e.cause is SignatureException) { - throw NotImplementedError("Unsupported signature algorithm ${e.cause}") - } - throw NotImplementedError("JWS cannot be signed $e") - } - } - .serializeGeneral() - } - - fun verify(signature: JWSObjectJSON.Signature, signAlg: SignAlg, key: Key) { - val jwk = key.jwk - - val verifier = try { - when (signAlg) { - SignAlg.ES256 -> ECDSAVerifier(jwk.asKey()) - SignAlg.ES256K -> ECDSAVerifier(jwk.asKey()) - SignAlg.ED25519 -> Ed25519Verifier(jwk.asKey()) - } - } catch (e: JOSEException) { - throw NotImplementedError(signAlg.name) - } - - try { - if (!signature.verify(verifier)) { - throw NotImplementedError("Invalid signature") - } - } catch (e: JOSEException) { - // this can be thrown if the signature type is not supported - // example: curve256k1 is not supported in JDK >= 15 - if (e.cause is SignatureException) { - throw NotImplementedError("Unsupported signature algorithm ${e.cause}") - } - throw NotImplementedError("JWS signature cannot be verified $e") - } - } -} - -object JWT { - fun sign(jwtClaimsSet: JWTClaimsSet, key: Key): String { - val jwk = key.jwk - val alg = getJWSAlgorithm(jwk) - - val signer = try { - when (alg) { - JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey()) - else -> throw NotImplementedError(alg.name) - } - } catch (e: JOSEException) { - throw NotImplementedError(alg.name) - } - - val jwsHeader = JWSHeader.Builder(alg) - .keyID(key.id) - .build() - - return SignedJWT(jwsHeader, jwtClaimsSet).apply { - try { - sign(signer) - } catch (e: JOSEException) { - throw NotImplementedError("JWT cannot be signed $e") - } - }.serialize() - } -} - -private fun getCryptoAlg(signature: JWSObjectJSON.Signature): SignAlg { - return when (val alg = signature.header.algorithm) { - JWSAlgorithm.ES256 -> SignAlg.ES256 - JWSAlgorithm.ES256K -> SignAlg.ES256K - JWSAlgorithm.EdDSA -> SignAlg.ED25519 - else -> throw NotImplementedError("UnsupportedCurveException ${alg.name}") - } -} - -private fun getJWSAlgorithm(jwk: JWK): JWSAlgorithm { - return when (jwk) { - is ECKey -> { - when (jwk.curve) { - Curve.P_256 -> JWSAlgorithm.ES256 - Curve.SECP256K1 -> JWSAlgorithm.ES256K - else -> { - throw NotImplementedError("UnsupportedCurveException ${jwk.curve}") - } - } - } - is OctetKeyPair -> { - when (jwk.curve) { - Curve.Ed25519 -> JWSAlgorithm.EdDSA - else -> throw NotImplementedError("UnsupportedCurveException ${jwk.curve.name}") - } - } - else -> throw NotImplementedError("UnsupportedCurveException ${jwk.javaClass.name}") - } -} - -private fun getCryptoAlg(jws: JWSObject): SignAlg { - return when (val alg = jws.header.algorithm) { - JWSAlgorithm.ES256 -> SignAlg.ES256 - JWSAlgorithm.ES256K -> SignAlg.ES256K - JWSAlgorithm.EdDSA -> SignAlg.ED25519 - else -> throw NotImplementedError(alg.name) - } -} diff --git a/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt b/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt deleted file mode 100644 index ac7648732..000000000 --- a/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt +++ /dev/null @@ -1,199 +0,0 @@ -package io.iohk.atala.prism.apollo.jose - -import com.nimbusds.jose.JOSEException -import com.nimbusds.jose.JOSEObjectType -import com.nimbusds.jose.JWSAlgorithm -import com.nimbusds.jose.JWSHeader -import com.nimbusds.jose.JWSObject -import com.nimbusds.jose.JWSObjectJSON -import com.nimbusds.jose.Payload -import com.nimbusds.jose.UnprotectedHeader -import com.nimbusds.jose.crypto.ECDSASigner -import com.nimbusds.jose.crypto.ECDSAVerifier -import com.nimbusds.jose.crypto.Ed25519Signer -import com.nimbusds.jose.crypto.Ed25519Verifier -import com.nimbusds.jose.jwk.Curve -import com.nimbusds.jose.jwk.ECKey -import com.nimbusds.jose.jwk.JWK -import com.nimbusds.jose.jwk.OctetKeyPair -import com.nimbusds.jose.util.Base64URL -import com.nimbusds.jwt.JWTClaimsSet -import com.nimbusds.jwt.SignedJWT -import java.security.SignatureException - -sealed interface Key { - val id: String - val jwk: JWK - val curve: Curve -} - -enum class Typ(val typ: String) { - Encrypted("application/didcomm-encrypted+json"), - Signed("application/didcomm-signed+json"), - Plaintext("application/didcomm-plain+json"); - - companion object { - fun parse(str: String): Typ = when (str) { - "application/didcomm-encrypted+json" -> Encrypted - "application/didcomm-signed+json" -> Signed - "application/didcomm-plain+json" -> Plaintext - else -> throw IllegalArgumentException("Unsupported message typ") - } - } -} - -enum class SignAlg { - /** - * Elliptic curve digital signature with edwards curves Ed25519 and SHA-512 - */ - ED25519, - - /** - * Elliptic curve digital signature with NIST p-256 curve and SHA-256 - */ - ES256, - - /** - * Elliptic curve digital signature with Secp256k1 keys - */ - ES256K -} - -inline fun JWK.asKey(): Key { - if (this !is Key) throw IllegalArgumentException("Can not cast JWK to ${Key::class.java.name}") - return this -} - -object JWS { - fun sign(payload: String, key: Key): String { - val jwk = key.jwk - val alg = getJWSAlgorithm(jwk) - - val signer = try { - when (alg) { - JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey()) - else -> throw NotImplementedError(alg.name) - } - } catch (e: JOSEException) { - throw NotImplementedError(alg.name) - } - - val jwsProtectedHeader = JWSHeader.Builder(alg) - .type(JOSEObjectType(Typ.Signed.typ)) - .build() - - val jwsUnprotectedHeader = UnprotectedHeader.Builder().keyID(key.id).build() - return JWSObjectJSON(Payload(Base64URL.encode(payload))) - .apply { - try { - sign(jwsProtectedHeader, jwsUnprotectedHeader, signer) - } catch (e: JOSEException) { - // this can be thrown if the signature type is not supported - // example: curve256k1 is not supported in JDK >= 15 - if (e.cause is SignatureException) { - throw NotImplementedError("Unsupported signature algorithm ${e.cause}") - } - throw NotImplementedError("JWS cannot be signed $e") - } - } - .serializeGeneral() - } - - fun verify(signature: JWSObjectJSON.Signature, signAlg: SignAlg, key: Key) { - val jwk = key.jwk - - val verifier = try { - when (signAlg) { - SignAlg.ES256 -> ECDSAVerifier(jwk.asKey()) - SignAlg.ES256K -> ECDSAVerifier(jwk.asKey()) - SignAlg.ED25519 -> Ed25519Verifier(jwk.asKey()) - } - } catch (e: JOSEException) { - throw NotImplementedError(signAlg.name) - } - - try { - if (!signature.verify(verifier)) { - throw NotImplementedError("Invalid signature") - } - } catch (e: JOSEException) { - // this can be thrown if the signature type is not supported - // example: curve256k1 is not supported in JDK >= 15 - if (e.cause is SignatureException) { - throw NotImplementedError("Unsupported signature algorithm ${e.cause}") - } - throw NotImplementedError("JWS signature cannot be verified $e") - } - } -} - -object JWT { - fun sign(jwtClaimsSet: JWTClaimsSet, key: Key): String { - val jwk = key.jwk - val alg = getJWSAlgorithm(jwk) - - val signer = try { - when (alg) { - JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey()) - JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey()) - else -> throw NotImplementedError(alg.name) - } - } catch (e: JOSEException) { - throw NotImplementedError(alg.name) - } - - val jwsHeader = JWSHeader.Builder(alg) - .keyID(key.id) - .build() - - return SignedJWT(jwsHeader, jwtClaimsSet).apply { - try { - sign(signer) - } catch (e: JOSEException) { - throw NotImplementedError("JWT cannot be signed $e") - } - }.serialize() - } -} - -private fun getCryptoAlg(signature: JWSObjectJSON.Signature): SignAlg { - return when (val alg = signature.header.algorithm) { - JWSAlgorithm.ES256 -> SignAlg.ES256 - JWSAlgorithm.ES256K -> SignAlg.ES256K - JWSAlgorithm.EdDSA -> SignAlg.ED25519 - else -> throw NotImplementedError("UnsupportedCurveException ${alg.name}") - } -} - -private fun getJWSAlgorithm(jwk: JWK): JWSAlgorithm { - return when (jwk) { - is ECKey -> { - when (jwk.curve) { - Curve.P_256 -> JWSAlgorithm.ES256 - Curve.SECP256K1 -> JWSAlgorithm.ES256K - else -> { - throw NotImplementedError("UnsupportedCurveException ${jwk.curve}") - } - } - } - is OctetKeyPair -> { - when (jwk.curve) { - Curve.Ed25519 -> JWSAlgorithm.EdDSA - else -> throw NotImplementedError("UnsupportedCurveException ${jwk.curve.name}") - } - } - else -> throw NotImplementedError("UnsupportedCurveException ${jwk.javaClass.name}") - } -} - -private fun getCryptoAlg(jws: JWSObject): SignAlg { - return when (val alg = jws.header.algorithm) { - JWSAlgorithm.ES256 -> SignAlg.ES256 - JWSAlgorithm.ES256K -> SignAlg.ES256K - JWSAlgorithm.EdDSA -> SignAlg.ED25519 - else -> throw NotImplementedError(alg.name) - } -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..7ec89ef51 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8106 @@ +{ + "name": "atala-prism-apollo", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "atala-prism-apollo", + "version": "0.1.0", + "license": "ISC", + "devDependencies": { + "@semantic-release/changelog": "^6.0.2", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "gradle-semantic-release-plugin": "1.7.7", + "semantic-release": "^21.0.2", + "semantic-release-slack-bot": "^4.0.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.1.tgz", + "integrity": "sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.2.tgz", + "integrity": "sha512-qhKW8YLIi+Kmc92FQUFGr++DYtkx/1fBv+Thua6baqnjnOsgBYJDCvWZR1YcINuHGOEQt416WOfE+A/oG60NBQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "dev": true, + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.0.2.tgz", + "integrity": "sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.3.tgz", + "integrity": "sha512-gm4KmW+pdAfCO5cXJyRZnNfnPE9r6OGpRG8JZpI0eSo1XVk7LXoRcdS7aP4L9azdV0ncHazsLAI0knKjr+snPg==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.2.tgz", + "integrity": "sha512-oFba+ioR6HGb0fgqxMta7Kpk/MdffUTuUxNY856l1nXPvh7Qggp8w4AksRx1SDA8SGd+4cbrpkY4k1J/Xz8nZQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.5.tgz", + "integrity": "sha512-zVKbNbX1xUluD9ZR4/tPs1yuYrK9xeh5fGZUXA6u04XGsTvomg0YO8/ZUC0FqAd49hAOEMFPAVUTh+2lBhOhLA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.2.0.tgz", + "integrity": "sha512-ZkdHqHJdifVndN7Pha10+qrgAjy3AcG//Vmjr/o5UFuTiYCcMhqDj39Yr9VM9zJ/42KO2xAYhV7cvLnLI9Kvwg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^19.0.2" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-10.0.4.tgz", + "integrity": "sha512-pFGn99fn8w4/MHE0otb2A/l5kxgOuxaaauIh4u30ncoTJuqWj4hXTgEJ03REqjS+w1R2vPftSsO26WC61yOcpw==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^6.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from": "^4.0.0", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/exec": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-6.0.3.tgz", + "integrity": "sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "parse-json": "^5.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/github": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.3.tgz", + "integrity": "sha512-FAjXb1F84CVI6IG8fWi+XS9ErYD+s3MHkP03zBa3+GyUrV4kqwYu/WPppIciHxujGFR51SAWPkOY5rnH6ZlrxA==", + "dev": true, + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^6.0.0", + "lodash-es": "^4.17.21", + "mime": "^3.0.0", + "p-filter": "^3.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-10.0.6.tgz", + "integrity": "sha512-DyqHrGE8aUyapA277BB+4kV0C4iMHh3sHzUWdf0jTgp5NNJxVUz76W1f57FB64Ue03him3CBXxFqQD2xGabxow==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^9.5.0", + "rc": "^1.2.8", + "read-pkg": "^8.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-11.0.7.tgz", + "integrity": "sha512-T09QB9ImmNx7Q6hY6YnnEbw/rEJ6a+22LBxfZq+pSAXg/OL/k0siwEm5cK4k1f9dE2Z2mPIjJKKohzUm0jbxcQ==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^6.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from": "^4.0.0", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^10.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "dev": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/env-ci": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.1.1.tgz", + "integrity": "sha512-Im2yEWeF4b2RAMAaWvGioXk6m0UNaIjD8hj28j2ij5ldnIFrDQT0+pzDvpbRkcjurhXhf/AsBKv8P2rtmGi9Aw==", + "dev": true, + "dependencies": { + "execa": "^7.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^16.14 || >=18" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "dev": true, + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gradle-semantic-release-plugin": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.7.7.tgz", + "integrity": "sha512-tfjK+aO3FDADl3zZGJwa5dcQK+iLIc+vao8PD1z+wEiNi0kQPfod6n7kTEZdi2IoaueUAQ4BqvImf249FSSyLg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/KengoTODA" + } + ], + "dependencies": { + "promisified-properties": "^2.0.27", + "split2": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": "^21.0.2" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz", + "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true, + "engines": { + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/marked-terminal": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", + "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.2.0", + "cli-table3": "^0.6.3", + "node-emoji": "^1.11.0", + "supports-hyperlinks": "^2.3.0" + }, + "engines": { + "node": ">=14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.1.tgz", + "integrity": "sha512-D3YZ1ZTxPGDHLLiFU9q3sVrPfYnn6BaJ1hogm3vdWi8oOmHGtTlPUPXAM0iG22UT0JRkBnMDOh6oUhpbEYgg2A==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "sigstore", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^6.5.0", + "@npmcli/config": "^6.4.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.4", + "@npmcli/package-json": "^4.0.1", + "@npmcli/promise-spawn": "^6.0.2", + "@npmcli/run-script": "^6.0.2", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^17.1.3", + "chalk": "^5.3.0", + "ci-info": "^3.8.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.2", + "glob": "^10.2.7", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^6.1.1", + "ini": "^4.1.1", + "init-package-json": "^5.0.0", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^3.0.0", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.20", + "libnpmexec": "^6.0.4", + "libnpmfund": "^4.2.1", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.4", + "libnpmpack": "^5.0.20", + "libnpmpublish": "^7.5.0", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "minipass": "^5.0.0", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^9.4.0", + "nopt": "^7.2.0", + "normalize-package-data": "^5.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.2", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.5", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^15.2.0", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.1.0", + "semver": "^7.5.4", + "sigstore": "^1.9.0", + "spdx-expression-parse": "^3.0.1", + "ssri": "^10.0.4", + "supports-color": "^9.4.0", + "tar": "^6.1.15", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "6.5.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^4.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "6.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^3.8.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.1.0", + "glob": "^10.2.2", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abort-controller": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^2.0.0", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "17.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "3.8.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/event-target-shim": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/events": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.2.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "5.0.20", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^9.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/run-script": "^6.0.0", + "ci-info": "^3.7.1", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "4.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "5.0.20", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "7.5.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^1.4.0", + "ssri": "^10.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^11.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "10.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "15.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.9.2", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/process": { + "version": "0.11.10", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "4.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "1.9.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.7.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.13", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.15", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "1.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "dev": true, + "dependencies": { + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parsimmon": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz", + "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promisified-properties": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/promisified-properties/-/promisified-properties-2.0.27.tgz", + "integrity": "sha512-fmx256M3b0QcHnqOj+Ok127LoYpmnYRf7g2OyLl7qD7Z0fzNbIZhHHIPKyvegbA29iAPP5BVWv7BJ/y2cMHHjA==", + "dev": true, + "dependencies": { + "parsimmon": "^1.13.0" + }, + "engines": { + "node": ">=14.16", + "npm": ">=7.12" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.7.1.tgz", + "integrity": "sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.7.1.tgz", + "integrity": "sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "dev": true, + "dependencies": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semantic-release": { + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.1.2.tgz", + "integrity": "sha512-kz76azHrT8+VEkQjoCBHE06JNQgTgsC4bT8XfCzb7DHcsk9vG3fqeMVik8h5rcWCYi2Fd+M3bwA7BG8Z8cRwtA==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^10.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^10.0.2", + "@semantic-release/release-notes-generator": "^11.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^8.0.0", + "debug": "^4.0.0", + "env-ci": "^9.0.0", + "execa": "^8.0.0", + "figures": "^5.0.0", + "find-versions": "^5.1.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "lodash-es": "^4.17.21", + "marked": "^5.0.0", + "marked-terminal": "^5.1.1", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^10.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release-slack-bot": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/semantic-release-slack-bot/-/semantic-release-slack-bot-4.0.2.tgz", + "integrity": "sha512-EgpUGmxDq5l9qSfAJNkGMOjxi6p5a7lAMnV5sNG53QxpIOsgMUF9X3J+NeaFWXsGyRP5CEkVtDdDkfvvNNo2ag==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^2.2.0", + "micromatch": "4.0.2", + "node-fetch": "^2.3.0", + "slackify-markdown": "^4.3.0" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "semantic-release": ">=11.0.0" + } + }, + "node_modules/semantic-release-slack-bot/node_modules/@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "dev": true + }, + "node_modules/semantic-release-slack-bot/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slackify-markdown": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/slackify-markdown/-/slackify-markdown-4.4.0.tgz", + "integrity": "sha512-a2b0Rh4aPi3PYt23N0vxPn7emkQtShewhLX8uIiXOMlPBAXRki+/9kEXJztZr1Oo9rDb1YxScGuZ0D2ubLPhvQ==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.2", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.1", + "unified": "^9.0.0", + "unist-util-remove": "^2.0.1", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dev": true, + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..c6008ccc6 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "atala-prism-apollo", + "version": "1.0.15", + "description": "atala-prism-apollo", + "directories": { + "example": "examples" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/input-output-hk/atala-prism-apollo.git" + }, + "author": "IOG", + "license": "ISC", + "bugs": { + "url": "https://github.com/input-output-hk/atala-prism-apollo/issues" + }, + "homepage": "https://github.com/input-output-hk/atala-prism-apollo#readme", + "devDependencies": { + "@semantic-release/changelog": "^6.0.2", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "gradle-semantic-release-plugin": "1.7.7", + "semantic-release": "^21.0.2", + "semantic-release-slack-bot": "^4.0.2" + } +} diff --git a/rsa/README.md b/rsa/README.md deleted file mode 100644 index c77fce15f..000000000 --- a/rsa/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Apollo - AES - -[![Kotlin](https://img.shields.io/badge/kotlin-1.7.21-blue.svg?logo=kotlin)](http://kotlinlang.org) - -![android](https://camo.githubusercontent.com/b1d9ad56ab51c4ad1417e9a5ad2a8fe63bcc4755e584ec7defef83755c23f923/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d616e64726f69642d3645444238442e7376673f7374796c653d666c6174) -![apple-silicon](https://camo.githubusercontent.com/a92c841ffd377756a144d5723ff04ecec886953d40ac03baa738590514714921/687474703a2f2f696d672e736869656c64732e696f2f62616467652f737570706f72742d2535424170706c6553696c69636f6e2535442d3433424246462e7376673f7374796c653d666c6174) -![ios](https://camo.githubusercontent.com/1fec6f0d044c5e1d73656bfceed9a78fd4121b17e82a2705d2a47f6fd1f0e3e5/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d696f732d4344434443442e7376673f7374796c653d666c6174) -![jvm](https://camo.githubusercontent.com/700f5dcd442fd835875568c038ae5cd53518c80ae5a0cf12c7c5cf4743b5225b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a766d2d4442343133442e7376673f7374796c653d666c6174) -![js](https://camo.githubusercontent.com/3e0a143e39915184b54b60a2ecedec75e801f396d34b5b366c94ec3604f7e6bd/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a732d4638444235442e7376673f7374796c653d666c6174) -![getNode-js](https://camo.githubusercontent.com/d08fda729ceebcae0f23c83499ca8f06105350f037661ac9a4cc7f58edfdbca9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6e6f64656a732d3638613036332e7376673f7374796c653d666c6174) -![macos](https://camo.githubusercontent.com/1b8313498db244646b38a4480186ae2b25464e5e8d71a1920c52b2be5212b909/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61636f732d3131313131312e7376673f7374796c653d666c6174) -![tvos](https://camo.githubusercontent.com/4ac08d7fb1bcb8ef26388cd2bf53b49626e1ab7cbda581162a946dd43e6a2726/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d74766f732d3830383038302e7376673f7374796c653d666c6174) -![watchos](https://camo.githubusercontent.com/135dbadae40f9cabe7a3a040f9380fb485cff36c90909f3c1ae36b81c304426b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77617463686f732d4330433043302e7376673f7374796c653d666c6174) - -Apollo RSA is Kotlin Multiplatform library for RSA & RSA/PSS signature. - -## Supported Key Size - -- 1024 -- 2048 -- 3072 -- 4096 - -## Supported Signature - -- RSA -- RSA/PSS - -## Usage - -Example of key pair generation, signing and verifying RSA/PSS with SHA256 -```kotlin -val keyPair = KMMKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) -val rsa = RSA() -val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) -val verify = rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256) -``` - -## TODO - -* Make support for key size depend on the logic of multiable of 1024 instead of the current limited value selection diff --git a/rsa/rsa.podspec b/rsa/rsa.podspec deleted file mode 100644 index 804b15835..000000000 --- a/rsa/rsa.podspec +++ /dev/null @@ -1,42 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'rsa' - spec.version = '1.7.0-alpha' - spec.homepage = '' - spec.source = { :http=> ''} - spec.authors = 'IOG' - spec.license = '' - spec.summary = 'ApolloRSA is an RSA lib' - spec.vendored_frameworks = 'build/cocoapods/framework/ApolloRSA.framework' - spec.libraries = 'c++' - spec.ios.deployment_target = '13.0' - spec.osx.deployment_target = '12.0' - spec.tvos.deployment_target = '13.0' - spec.watchos.deployment_target = '8.0' - spec.dependency 'IOHKRSA', '1.0.0' - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':rsa', - 'PRODUCT_MODULE_NAME' => 'ApolloRSA', - } - - spec.script_phases = [ - { - :name => 'Build rsa', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then - echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" - SCRIPT - } - ] - -end \ No newline at end of file diff --git a/rsa/src/androidAndroidTest/AndroidManifest.xml b/rsa/src/androidAndroidTest/AndroidManifest.xml deleted file mode 100644 index 71a1eb3ee..000000000 --- a/rsa/src/androidAndroidTest/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index ce115cb04..000000000 --- a/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair -import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import org.junit.Test -import kotlin.test.assertTrue - -@OptIn(ExperimentalCoroutinesApi::class) -actual class RSATests { - @Test - actual fun testRSA() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256)) - } - - @Test - actual fun testRSAPSS() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } -} diff --git a/rsa/src/androidMain/AndroidManifest.xml b/rsa/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 71a1eb3ee..000000000 --- a/rsa/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt deleted file mode 100644 index f17909c96..000000000 --- a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt +++ /dev/null @@ -1,29 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey -import org.bouncycastle.jce.provider.BouncyCastleProvider -import java.security.Security -import java.security.Signature - -actual final class RSA : RSASigner, RSAVerifier { - - init { - Security.removeProvider("BC") - Security.addProvider(BouncyCastleProvider()) - } - - override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray { - val signature = Signature.getInstance(type.nativeValue()) - signature.initSign(privateKey.nativeType) - signature.update(data) - return signature.sign() - } - - override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean { - val signature = Signature.getInstance(type.nativeValue()) - signature.initVerify(publicKey.nativeType) - signature.update(data) - return signature.verify(signedData) - } -} diff --git a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt deleted file mode 100644 index f0f01128c..000000000 --- a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt +++ /dev/null @@ -1,25 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual typealias RSASignatureTypeNativeType = String - -actual final enum class RSASignatureType : NativeTypeInterface { - RSASHA256, - RSASHA384, - RSASHA512, - RSAPSSSHA256, - RSAPSSSHA384, - RSAPSSSHA512; - - override fun nativeValue(): String { - return when (this) { - RSASHA256 -> "SHA256withRSA" - RSASHA384 -> "SHA384withRSA" - RSASHA512 -> "SHA512withRSA" - RSAPSSSHA256 -> "SHA256withRSA/PSS" - RSAPSSSHA384 -> "SHA384withRSA/PSS" - RSAPSSSHA512 -> "SHA512withRSA/PSS" - } - } -} diff --git a/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index ce115cb04..000000000 --- a/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair -import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import org.junit.Test -import kotlin.test.assertTrue - -@OptIn(ExperimentalCoroutinesApi::class) -actual class RSATests { - @Test - actual fun testRSA() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256)) - } - - @Test - actual fun testRSAPSS() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } -} diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt deleted file mode 100644 index 708cd98d6..000000000 --- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt +++ /dev/null @@ -1,3 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -expect final class RSA : RSASigner, RSAVerifier diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt deleted file mode 100644 index 67f270bfb..000000000 --- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt +++ /dev/null @@ -1,14 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -expect class RSASignatureTypeNativeType - -expect final enum class RSASignatureType : NativeTypeInterface { - RSASHA256, - RSASHA384, - RSASHA512, - RSAPSSSHA256, - RSAPSSSHA384, - RSAPSSSHA512; -} diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt deleted file mode 100644 index 9a12b53c3..000000000 --- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey - -interface RSASigner { - /** - * Returns the signature bytes of all the data updated. The format of the signature depends on the underlying - * signature scheme. - * - * @param privateKey private key in PKCS#8 pem format - * @param data the data to sign - * @return the signature bytes of the signing operation's result. - */ - suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray -} diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt deleted file mode 100644 index 363266a0d..000000000 --- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt +++ /dev/null @@ -1,15 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey - -interface RSAVerifier { - /** - * Verifies the passed-in signature. - * - * @param publicKey public key in PKCS#8 pem format - * @param data data that we need to sign - * @param signedData data that has already been signed - * @return boolean value representing if the verifying was correct or not - */ - suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean -} diff --git a/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index 83fecaa0b..000000000 --- a/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestResult - -@OptIn(ExperimentalCoroutinesApi::class) -expect class RSATests { - fun testRSA(): TestResult - fun testRSAPSS(): TestResult -} diff --git a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt deleted file mode 100644 index cca55373d..000000000 --- a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt +++ /dev/null @@ -1,26 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import cocoapods.IOHKRSA.IOHKRSA -import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey -import io.iohk.atala.prism.apollo.utils.toByteArray -import io.iohk.atala.prism.apollo.utils.toNSData - -actual final class RSA : RSASigner, RSAVerifier { - override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray { - return IOHKRSA.signRSAWithKey( - privateKey.nativeType, - type.nativeValue(), - data.toNSData() - )!!.toByteArray() - } - - override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean { - return IOHKRSA.verifyRSAWithKey( - publicKey.nativeType, - type.nativeValue(), - data.toNSData(), - signedData.toNSData() - ) - } -} diff --git a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt deleted file mode 100644 index b2652656f..000000000 --- a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt +++ /dev/null @@ -1,32 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import cocoapods.IOHKRSA.RSASignatureMessageType -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA256 -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA384 -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA512 -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA256 -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA384 -import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA512 -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual typealias RSASignatureTypeNativeType = Long - -actual final enum class RSASignatureType : NativeTypeInterface { - RSASHA256, - RSASHA384, - RSASHA512, - RSAPSSSHA256, - RSAPSSSHA384, - RSAPSSSHA512; - - override fun nativeValue(): RSASignatureMessageType { - return when (this) { - RSASHA256 -> RSASignatureMessageTypeRsaSHA256 - RSASHA384 -> RSASignatureMessageTypeRsaSHA384 - RSASHA512 -> RSASignatureMessageTypeRsaSHA512 - RSAPSSSHA256 -> RSASignatureMessageTypeRsaPSSSHA256 - RSAPSSSHA384 -> RSASignatureMessageTypeRsaPSSSHA384 - RSAPSSSHA512 -> RSASignatureMessageTypeRsaPSSSHA512 - } - } -} diff --git a/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index ecadb4656..000000000 --- a/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair -import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import kotlin.test.Test -import kotlin.test.assertTrue - -@OptIn(ExperimentalCoroutinesApi::class) -actual class RSATests { - @Test - actual fun testRSA() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } - - @Test - actual fun testRSAPSS() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } -} diff --git a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt deleted file mode 100644 index d2bff71cf..000000000 --- a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt +++ /dev/null @@ -1,67 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey -import io.iohk.atala.prism.apollo.utils.toArrayBuffer -import io.iohk.atala.prism.apollo.utils.toByteArray -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.await -import kotlinx.coroutines.promise -import web.crypto.RsaPssParams -import web.crypto.crypto - -actual final class RSA : RSASigner, RSAVerifier { - - private fun getRsaPssParams(): RsaPssParams { - val algorithm = "RSA-PSS" - return js("{name: algorithm, saltLength: 32}") as RsaPssParams - } - - override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray { - return when (type) { - RSASignatureType.RSASHA256, RSASignatureType.RSASHA384, RSASignatureType.RSASHA512 -> { - MainScope().promise { - crypto.subtle.sign( - privateKey.nativeType.algorithm.name, - privateKey.nativeType, - data.toArrayBuffer() - ).await().toByteArray() - }.await() - } - RSASignatureType.RSAPSSSHA256, RSASignatureType.RSAPSSSHA384, RSASignatureType.RSAPSSSHA512 -> { - MainScope().promise { - crypto.subtle.sign( - getRsaPssParams(), - privateKey.nativeType, - data.toArrayBuffer() - ).await().toByteArray() - }.await() - } - } - } - - override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean { - return when (type) { - RSASignatureType.RSASHA256, RSASignatureType.RSASHA384, RSASignatureType.RSASHA512 -> { - MainScope().promise { - crypto.subtle.verify( - publicKey.nativeType.algorithm.name, - publicKey.nativeType, - signedData.toArrayBuffer(), - data.toArrayBuffer() - ).await() - }.await() - } - RSASignatureType.RSAPSSSHA256, RSASignatureType.RSAPSSSHA384, RSASignatureType.RSAPSSSHA512 -> { - MainScope().promise { - crypto.subtle.verify( - getRsaPssParams(), - publicKey.nativeType, - signedData.toArrayBuffer(), - data.toArrayBuffer() - ).await() - }.await() - } - } - } -} diff --git a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt deleted file mode 100644 index 95278d688..000000000 --- a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt +++ /dev/null @@ -1,25 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual typealias RSASignatureTypeNativeType = String - -actual final enum class RSASignatureType : NativeTypeInterface { - RSASHA256, - RSASHA384, - RSASHA512, - RSAPSSSHA256, - RSAPSSSHA384, - RSAPSSSHA512; - - override fun nativeValue(): RSASignatureTypeNativeType { - return when (this) { - RSASHA256 -> "RSA-PSS" - RSASHA384 -> "RSA-PSS" - RSASHA512 -> "RSA-PSS" - RSAPSSSHA256 -> "RSASSA-PKCS1-v1_5" - RSAPSSSHA384 -> "RSASSA-PKCS1-v1_5" - RSAPSSSHA512 -> "RSASSA-PKCS1-v1_5" - } - } -} diff --git a/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index 736631f19..000000000 --- a/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,32 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.JsHashType -import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair -import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import kotlin.test.Test -import kotlin.test.assertTrue - -@OptIn(ExperimentalCoroutinesApi::class) -actual class RSATests { - @Test - actual fun testRSA() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, JsHashType.SHA256, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } - - @Test - actual fun testRSAPSS() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, JsHashType.SHA256, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } -} diff --git a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt deleted file mode 100644 index f17909c96..000000000 --- a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt +++ /dev/null @@ -1,29 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey -import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey -import org.bouncycastle.jce.provider.BouncyCastleProvider -import java.security.Security -import java.security.Signature - -actual final class RSA : RSASigner, RSAVerifier { - - init { - Security.removeProvider("BC") - Security.addProvider(BouncyCastleProvider()) - } - - override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray { - val signature = Signature.getInstance(type.nativeValue()) - signature.initSign(privateKey.nativeType) - signature.update(data) - return signature.sign() - } - - override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean { - val signature = Signature.getInstance(type.nativeValue()) - signature.initVerify(publicKey.nativeType) - signature.update(data) - return signature.verify(signedData) - } -} diff --git a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt deleted file mode 100644 index f0f01128c..000000000 --- a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt +++ /dev/null @@ -1,25 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.NativeTypeInterface - -actual typealias RSASignatureTypeNativeType = String - -actual final enum class RSASignatureType : NativeTypeInterface { - RSASHA256, - RSASHA384, - RSASHA512, - RSAPSSSHA256, - RSAPSSSHA384, - RSAPSSSHA512; - - override fun nativeValue(): String { - return when (this) { - RSASHA256 -> "SHA256withRSA" - RSASHA384 -> "SHA384withRSA" - RSASHA512 -> "SHA512withRSA" - RSAPSSSHA256 -> "SHA256withRSA/PSS" - RSAPSSSHA384 -> "SHA384withRSA/PSS" - RSAPSSSHA512 -> "SHA512withRSA/PSS" - } - } -} diff --git a/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt deleted file mode 100644 index 1c7ffa0e9..000000000 --- a/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt +++ /dev/null @@ -1,31 +0,0 @@ -package io.iohk.atala.prism.apollo.rsa - -import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair -import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest -import org.junit.jupiter.api.Test -import kotlin.test.assertTrue - -@OptIn(ExperimentalCoroutinesApi::class) -actual class RSATests { - @Test - actual fun testRSA() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256)) - } - - @Test - actual fun testRSAPSS() = runTest { - val msgToSign = "Hello IOG!" - val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048) - val rsa = RSA() - val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256) - - assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)) - } -} diff --git a/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt b/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt index bb7a05d7a..99018ce35 100644 --- a/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt +++ b/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt @@ -18,10 +18,7 @@ package fr.acinq.secp256k1 import kotlin.jvm.JvmStatic -/* ktlint-disable */ - public interface Secp256k1 { - /** * Verify an ECDSA signature. * diff --git a/settings.gradle.kts b/settings.gradle.kts index d33d8d0d2..7a40c78f2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -29,10 +29,10 @@ include(":base58") include(":base64") include(":multibase") include(":utils") -include(":base-symmetric-encryption") +include(":cryptography") include(":secure-random") // include(":aes") -include(":base-asymmetric-encryption") +include(":cryptography") include(":iOSLibs") // include(":rsa") // include(":ecdsa")