diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml deleted file mode 100644 index 07a5f422..00000000 --- a/.github/workflows/snapshot.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Snapshot release workflow for walt.id SSI Kit - -on: - push: - branches: - - master - -jobs: - verify-wrapper: - name: "Verification" - runs-on: "ubuntu-latest" - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Validate gradle wrapper - uses: gradle/wrapper-validation-action@v1 - - gradle: - needs: verify-wrapper - name: "Build" - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Setup java - uses: actions/setup-java@v2.1.0 - with: - distribution: 'adopt-hotspot' - java-version: '16' - - name: Running gradle build - uses: eskatos/gradle-command-action@v1.3.3 - env: - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - with: - arguments: build publish --no-daemon - - name: Docker Build and Push SNAPSHOT - uses: philpotisk/github-action-docker-build-push@master - env: - DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} - DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} - DOCKER_FILE: Dockerfile - CONTAINER_TAG: waltid/ssikit:latest - - name: Prepare CD K8S - run: sed "s/_DEFAULT_DEPLOYMENT_/$GITHUB_SHA/g" k8s/deployment-dev.yaml > k8s/deployment-dev_mod.yaml - - name: Continuous deployment K8S - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} - with: - args: apply -n dev -f k8s/deployment-dev_mod.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 73892f50..9f440b06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,217 +1,7 @@ # Changelog -Notable changes since the last release of the [SSI Kit](https://github.com/walt-id/waltid-ssikit). +The changelog is maintained in GitHub: [SSI Kit releases & changelog](https://github.com/walt-id/waltid-ssikit/releases). -## [Unreleased] +# Roadmap -- Roadmap - - IOTA ecosystem https://github.com/orgs/walt-id/projects/10/views/4 -- Features - - OIDC4VP spec update https://github.com/walt-id/waltid-ssikit/issues/165 - - OIDC4VCI spec update https://github.com/walt-id/waltid-ssikit/issues/172 - - Definition of Verification Methods when issuing VCs https://github.com/walt-id/waltid-ssikit/issues/162 - - Implement Gaia-X Self-Description https://github.com/walt-id/waltid-ssikit/issues/163 - - Support for JsonWebKey2020 https://github.com/walt-id/waltid-ssikit/issues/159 - - JCS Ed25519 Signature https://github.com/walt-id/waltid-ssikit/issues/160 - - EBSI wallet conformance v2 https://github.com/walt-id/waltid-internal-issues/issues/158 - - Generic credentials and dynamic credential templates management https://github.com/walt-id/waltid-ssikit/pull/196 - - Added folder from importing VC templates at runtime https://github.com/walt-id/waltid-ssikit/pulls -- Fixes - - did:key with ECDSA keys broken https://github.com/walt-id/waltid-ssikit/issues/179 - - JWK key import depending on optional alg field https://github.com/walt-id/waltid-ssikit/issues/190 - - Added support for ARM64 in the Docker container (if libsodium wasn't installed) - - Fix parsing OIDC4VP requests with presentation definition by reference (https://github.com/walt-id/waltid-ssikit/issues/207) - -## [1.12.0] - 2022-07-19 - -- Roadmap - - Dynamic Policies powered by the OpenPolicyAgent -- Features - - Added support for did:ebsi V2 by @xmartinez15 - - Added support for Open Badge V3 credential by - - Dynamically register opa enabled policies with the auditor -- Fixes - - Fix custodian importkey api - -## [1.11.0] - 2022-05-31 - -- Roadmap Items - - Verifiable Mandate & Delegation - - Integration of Open Policy Agent -- Features - - Support rego policy via CLI - -## [1.10.0] - 2022-05-10 - -- Bumped all dependencies - -## [1.9.0] - 2022-04-08 - -- Features - - added Secp256k1, Ed25519 key import test cases for key command, key service, core api - - added key delete command and tests for core api and key service - - Simple s3 storage implementation for HKV store - - Presentation Exchange protocol 2.0 - -## [1.8.0] - 2022-03-22 - -- Features - - Extended CLI tool with OidcCommands - - DID import CLI command from file or resolved DID - - Added support for ParticipantCredential -- Fixes - - Fixed did:web resolution issue - -## [1.7.0] - 2022-02-17 - -- Roadmap Items - - Completed EBSI Wallet Conformance Tests -- Features - - Introduced OIDC SIOPv2 core functionality - - Support of "issued" attribute in EBSI data models - -## [1.6.2] - 2022-02-04 - -- Features - - Upgraded VC-Lib to 1.14.1 - -## [1.6.1] - 2022-01-31 - -- Features - - Upgraded VC-Lib to 1.13.0 - -## [1.6.0] - 2022-01-31 - -- Features - - 2019 09 json schema validation -- Fixes - - Fix/ebsi jwt verifiable presentation - - DidService move max length substring to FileSystem Store - -## [1.5.0] - 2022-01-27 - -- Roadmap Items - - - - -- Features - - Revocation service added to Signatory - -## [1.4.0] - 2022-01-03 - -- adaptations for changes in VerifiableCredential data model of vclib version 1.7.0 -- refactoring of data providers -- credential timestamps using UTC by default - -## [1.3.0] - 2021-12-27 - -- Roadmap Items - - Support of RSA keys -- Features - - Replaced log4j with slf4j-simple - - Creation of Timestamps via REST API - -## [1.2.0] - 2021-12-12 - -- Roadmap Items - - EBSI Timestamping service - -- Features - - Added generic jsonRpcService for working with the EBSI ledger - - Generation of RSA keys - - Secp256k1 based did:key implementation - - RSA based did:key implementation - - DID import - -## [1.1.1] - 2021-12-03 - -- Features - - Added GaiaxSelfDecription credential thx to & - - Added GaiaxServiceOffering credential - - Added VerifiableVaccinationCertificate credential - - Creation of VerifiablePresentations via Custodian REST API - - Custodians REST API should also offer the management functionality for DIDs - - Import cryptographic key from did:key - -## [1.1.0] - 2021-11-25 - -- Features - - Parameterize did:web creation - - Automatic deployment of test-system at - - Introduced TrustedSchemaRegistry Policy for validating Json-schemas against the EBSI TSR - - JsonSchemaPolicy now validates against Json-schemas maintained in the VcLib - - Did Document context can be a single string or a list of strings - - Merging Data Provider - Signatory API now takes credential data as well - -## [1.0.1] - 2021-11-08 - -- Features - - SIOPv2 data structures - -## [1.0.0] - 2021-11-07 - -- Roadmap Items - - Init Key Management - - Init Decentralized Identifiers - - Signatory - - Custodian - - Auditor - - ESSIF | DID -basic - - ESSIF VC verification - basic - -- Features - - Server Binding-Address must be configurable - - Loading issuer from EBSI - - Abstract BaseDid - - Trusted Issuer Registry Policy - - Persistence context - - New EBSI DID format - - DID Document context - - Feat SIOP - - Feat/ebsi vc and vp verifications - - Update GaiaxCredential - - Replacement of existing key-alias when importing keys - -- Fixes - - Swagger Docu is broken (no docs nor parameters are shown) - - Key export/import of EdDSA_ED25519 not working - - Fix/ebsi onboarding ephemeral key service - - Fixed the way of finding the padding - - SignaturePolicy fails for issuers using did:ebsi - -[Unreleased]: https://github.com/walt-id/waltid-ssikit/compare/1.12.0...HEAD - -[1.12.0]: https://github.com/walt-id/waltid-ssikit/compare/1.11.0...1.12.0 - -[1.11.0]: https://github.com/walt-id/waltid-ssikit/compare/1.10.0...1.11.0 - -[1.10.0]: https://github.com/walt-id/waltid-ssikit/compare/1.9.0...1.10.0 - -[1.9.0]: https://github.com/walt-id/waltid-ssikit/compare/1.8.0...1.9.0 - -[1.8.0]: https://github.com/walt-id/waltid-ssikit/compare/1.7.0...1.8.0 - -[1.7.0]: https://github.com/walt-id/waltid-ssikit/compare/1.6.2...1.7.0 - -[1.6.2]: https://github.com/walt-id/waltid-ssikit/compare/1.6.1...1.6.2 - -[1.6.1]: https://github.com/walt-id/waltid-ssikit/compare/1.6.0...1.6.1 - -[1.6.0]: https://github.com/walt-id/waltid-ssikit/compare/1.5.0...1.6.0 - -[1.5.0]: https://github.com/walt-id/waltid-ssikit/compare/1.4.0...1.5.0 - -[1.4.0]: https://github.com/walt-id/waltid-ssikit/compare/1.3.0...1.4.0 - -[1.3.0]: https://github.com/walt-id/waltid-ssikit/compare/1.2.0...1.3.0 - -[1.2.0]: https://github.com/walt-id/waltid-ssikit/compare/1.2.0...1.2.0 - -[1.2.0]: https://github.com/walt-id/waltid-ssikit/compare/1.1.1...1.2.0 - -[1.1.1]: https://github.com/walt-id/waltid-ssikit/compare/1.1.0...1.1.1 - -[1.1.0]: https://github.com/walt-id/waltid-ssikit/compare/1.0.1...1.1.0 - -[1.0.1]: https://github.com/walt-id/waltid-ssikit/compare/1.0.0...1.0.1 - -[1.0.0]: https://github.com/walt-id/waltid-ssikit/compare/2be9d92014df8b7da68ccccc96bdd1024f2ce50e...1.0.0 +The walt.id public roadmap can be found here: [walt.id roadmap](https://www.notion.so/walt-id/fcde1687baab42378b3047d4a22eeaca?v=1140dd17c17b4726a70cc1465d20866d). diff --git a/build.gradle.kts b/build.gradle.kts index b28bf6ba..64a51644 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,7 @@ plugins { } group = "id.walt" -version = "1.13.0-SNAPSHOT9" +version = "1.SNAPSHOT" repositories { mavenCentral() diff --git a/src/main/kotlin/id/walt/Values.kt b/src/main/kotlin/id/walt/Values.kt index 9be84825..aca4c7a8 100644 --- a/src/main/kotlin/id/walt/Values.kt +++ b/src/main/kotlin/id/walt/Values.kt @@ -1,7 +1,7 @@ package id.walt object Values { - const val version = "1.13.0-SNAPSHOT" + const val version = "1.SNAPSHOT" val isSnapshot: Boolean get() = version.contains("SNAPSHOT") } diff --git a/src/main/kotlin/id/walt/cli/DidCommand.kt b/src/main/kotlin/id/walt/cli/DidCommand.kt index b39162ad..668e9029 100644 --- a/src/main/kotlin/id/walt/cli/DidCommand.kt +++ b/src/main/kotlin/id/walt/cli/DidCommand.kt @@ -31,16 +31,16 @@ import kotlin.io.path.writeText class DidCommand : CliktCommand( help = """Decentralized Identifiers (DIDs). - DID related operations, like registering, updating and deactivating DIDs. + DID related operations, like creating, updating and deleted DIDs in the associated data store. - Supported DID methods are "key", "web" and "ebsi""" + Supported DID methods are "key", "jwk", "web", "ebsi" , "iota", "cheqd"""" ) { override fun run() {} } class CreateDidCommand : CliktCommand( name = "create", - help = """Create DID. + help = """Create DID Creates a DID document based on the corresponding SSI ecosystem (DID method). Optionally the associated asymmetric key is also created. @@ -104,7 +104,7 @@ fun resolveDidHelper(did: String, raw: Boolean) = when { class ResolveDidCommand : CliktCommand( name = "resolve", - help = """Resolve DID. + help = """Resolve DID Resolves the DID document. Use option RAW to disable type checking.""" ) { diff --git a/src/main/kotlin/id/walt/cli/EssifCommand.kt b/src/main/kotlin/id/walt/cli/EssifCommand.kt index cdd538a7..35d1d8c6 100644 --- a/src/main/kotlin/id/walt/cli/EssifCommand.kt +++ b/src/main/kotlin/id/walt/cli/EssifCommand.kt @@ -21,7 +21,7 @@ import java.util.* class EssifCommand : CliktCommand( name = "essif", - help = """ESSIF specific operations. + help = """ESSIF specific operations ESSIF functions & flows.""" ) { @@ -71,16 +71,16 @@ class EssifAuthCommand : CliktCommand( class EssifDidCommand : CliktCommand( name = "did", - help = """ESSIF DID operations. + help = """ESSIF DID operations - ESSIF DID operations.""" + ESSIF DID operations""" ) { override fun run() {} } class EssifDidRegisterCommand : CliktCommand( name = "register", - help = """Register ESSIF DID. + help = """Register ESSIF DID Registers a previously created DID with the EBSI ledger.""" ) { @@ -97,50 +97,9 @@ class EssifDidRegisterCommand : CliktCommand( } } -//class EssifVcIssuanceCommand : CliktCommand( -// name = "vc-issuance", -// help = """ESSIF VC issuance flow -// -// ESSIF VC issuance flow""" -//) { -// override fun run() { -// -// // Mocked flow: -// // EssifFlowRunner.vcIssuance() -// -// // This runs everything: EssifClient.authenticate() -// val did: String = DidService.create(DidMethod.ebsi) // Client DID -// -// val oidcReq = TrustedIssuerClient.generateAuthenticationRequest() -// echo("- Authentication request: \n$oidcReq\n\n") -// -// val didAuthReq = EssifClientVcExchange.validateAuthenticationRequest(oidcReq) -// echo("- Parsed and validated authentication request: \n$didAuthReq\n\n") -// -// val authResp = EssifClientVcExchange.generateAuthenticationResponse(did, didAuthReq) -// echo("- Authentication response JWT: \n$authResp\n\n") -// -// val encAccessToken = TrustedIssuerClient.openSession(authResp) -// echo("- Received encrypted access token: \n$encAccessToken\n\n") -// -// val accessToken = EssifClientVcExchange.decryptAccessToken(encAccessToken) -// echo("- Decrypted and verified access token: \n$accessToken\n\n") -// -// } -//} -// -//class EssifVcExchangeCommand : CliktCommand( -// name = "vc-exchange", -// help = """ESSIF VC exchange flow -// -// ESSIF VC exchange flow""" -//) { -// override fun run() = EssifClient.vcExchange() -//} - class EssifTimestampCommand : CliktCommand( name = "timestamp", - help = """EBSI Timestamp API operations. + help = """EBSI Timestamp API operations Create and retrieve a timestamp on the EBSI ledger.""" ) { @@ -149,7 +108,7 @@ class EssifTimestampCommand : CliktCommand( class EssifTimestampCreateCommand : CliktCommand( name = "create", - help = """Create timestamp. + help = """Create timestamp Create timestamp on the EBSI ledger.""" ) { @@ -173,7 +132,7 @@ class EssifTimestampCreateCommand : CliktCommand( class EssifTimestampGetCommand : CliktCommand( name = "get", - help = """Get timestamp. + help = """Get timestamp Get timestamp by its ID or transaction hash.""" ) { @@ -199,9 +158,9 @@ class EssifTimestampGetCommand : CliktCommand( class EssifTirCommand : CliktCommand( name = "tir", - help = """ESSIF Trusted Issuer Registry operations. + help = """ESSIF Trusted Issuer Registry operations - ESSIF DID operations.""" + Not implemented yet""" ) { override fun run() {} } @@ -209,7 +168,7 @@ class EssifTirCommand : CliktCommand( class EssifTirGetIssuerCommand : CliktCommand( name = "get", - help = """Get issuer. + help = """Get issuer Get issuer by its DID. Use option raw to disable type checking.""" ) { @@ -234,9 +193,9 @@ class EssifTirGetIssuerCommand : CliktCommand( class EssifTaorCommand : CliktCommand( name = "taor", - help = """ESSIF Trusted Accreditation Organization operations. + help = """ESSIF Trusted Accreditation Organization operations - ESSIF Trusted Accreditation Organization operations.""" + Not implemented yet""" ) { override fun run() = TODO("The \"ESSIF-TAOR\" operation has not yet been implemented in this snapshot (currently running ${Values.version}).") @@ -246,8 +205,8 @@ class EssifTsrCommand : CliktCommand( name = "tsr", help = """ESSIF Trusted Schema Registry operations. - ESSIF Trusted Schema Registry operations.""" + Not implemented yet""" ) { override fun run() = - TODO("The \"ESSIF-TSR\" operation has not yet been implemented in this snapshot (currently running ${Values.version}).") + TODO("The \"ESSIF-TSR\" operation has not yet been implemented in this version (currently running ${Values.version}).") } diff --git a/src/main/kotlin/id/walt/cli/GaiaxCommand.kt b/src/main/kotlin/id/walt/cli/GaiaxCommand.kt index ad8b58ee..0013e48f 100644 --- a/src/main/kotlin/id/walt/cli/GaiaxCommand.kt +++ b/src/main/kotlin/id/walt/cli/GaiaxCommand.kt @@ -32,7 +32,7 @@ import kotlin.io.path.writeText class GaiaxCommand : CliktCommand( name = "gaiax", - help = """Gaia-X specific operations. + help = """Gaia-X specific operations Gaia-X functions & flows.""" ) { diff --git a/src/main/kotlin/id/walt/cli/KeyCommand.kt b/src/main/kotlin/id/walt/cli/KeyCommand.kt index 82acbc56..8e403ff9 100644 --- a/src/main/kotlin/id/walt/cli/KeyCommand.kt +++ b/src/main/kotlin/id/walt/cli/KeyCommand.kt @@ -19,9 +19,9 @@ import java.nio.file.Path private val keyService = KeyService.getService() class KeyCommand : CliktCommand( - help = """Key Management. + help = """Key Management - Key management functions like generation, export/import, and deletion.""" + Generation export/import, and deletion of asymmetric keys.""" ) { val algorithm: String by option(help = "Key algorithm [Ed25519]").default("Ed25519") @@ -30,7 +30,7 @@ class KeyCommand : CliktCommand( } class GenKeyCommand : CliktCommand( - name = "gen", help = """Generate keys. + name = "gen", help = """Generate keys Generates an asymmetric keypair by the specified algorithm. Supported algorithms are ECDSA Secp256k1 & EdDSA Ed25519 (default) @@ -51,7 +51,7 @@ class GenKeyCommand : CliktCommand( } class ImportKeyCommand : CliktCommand( - name = "import", help = """Import key in JWK or PEM format. + name = "import", help = """Import key in JWK or PEM format For JWK Keys: Based on the JWK key ID and key material an internal key object will be created and placed in the corresponding key store. @@ -78,7 +78,7 @@ class ImportKeyCommand : CliktCommand( } class ExportKeyCommand : CliktCommand( - name = "export", help = """Export keys. + name = "export", help = """Export keys Export key in JWK format.""" ) { @@ -101,7 +101,7 @@ class ExportKeyCommand : CliktCommand( } class ListKeysCommand : CliktCommand( - name = "list", help = """List keys. + name = "list", help = """List keys List all keys in the key store.""" ) { @@ -118,7 +118,7 @@ class ListKeysCommand : CliktCommand( } class DeleteKeyCommand : CliktCommand( - name = "delete", help = """Delete key. + name = "delete", help = """Delete key Deletes the key with the specified ID. """ diff --git a/src/main/kotlin/id/walt/cli/VcCommand.kt b/src/main/kotlin/id/walt/cli/VcCommand.kt index 72c474e1..eb7c35d3 100644 --- a/src/main/kotlin/id/walt/cli/VcCommand.kt +++ b/src/main/kotlin/id/walt/cli/VcCommand.kt @@ -37,20 +37,19 @@ import kotlin.io.path.readText private val log = KotlinLogging.logger {} class VcCommand : CliktCommand( - name = "vc", help = """Verifiable Credentials (VCs). + name = "vc", help = """Verifiable Credentials (VCs) VC related operations like issuing, verifying and revoking VCs. """ ) { - override fun run() { } } class VcIssueCommand : CliktCommand( - name = "issue", help = """Issues and save VC. + name = "issue", help = """Issues and save VC """ ) { @@ -141,7 +140,7 @@ class VcImportCommand : CliktCommand( } class PresentVcCommand : CliktCommand( - name = "present", help = """Present VC. + name = "present", help = """Present VC """ ) { @@ -181,7 +180,7 @@ class PresentVcCommand : CliktCommand( } class VerifyVcCommand : CliktCommand( - name = "verify", help = """Verify VC or VP. + name = "verify", help = """Verify VC or VP """ ) { @@ -337,7 +336,7 @@ class RemoveDynamicVerificationPolicyCommand : CliktCommand( } class ListVcCommand : CliktCommand( - name = "list", help = """List VC. + name = "list", help = """List VCs """ ) { @@ -352,7 +351,7 @@ class ListVcCommand : CliktCommand( } class VcTemplatesCommand : CliktCommand( - name = "templates", help = """VC Templates. + name = "templates", help = """VC templates VC templates related operations e.g.: list & export. @@ -365,7 +364,7 @@ class VcTemplatesCommand : CliktCommand( } class VcTemplatesListCommand : CliktCommand( - name = "list", help = """List VC Templates. + name = "list", help = """List VC templates """ ) { @@ -384,7 +383,7 @@ class VcTemplatesListCommand : CliktCommand( } class VcTemplatesExportCommand : CliktCommand( - name = "export", help = """Export VC Template. + name = "export", help = """Export VC template """ ) { @@ -400,7 +399,7 @@ class VcTemplatesExportCommand : CliktCommand( } class VcTemplatesImportCommand : CliktCommand( - name = "import", help = """Import VC Template. + name = "import", help = """Import VC template """ ) { @@ -427,7 +426,7 @@ class VcTemplatesImportCommand : CliktCommand( } class VcTemplatesRemoveCommand : CliktCommand( - name = "remove", help = """Remove VC Template. + name = "remove", help = """Remove VC template """ ) { diff --git a/src/main/kotlin/id/walt/cli/WaltCLI.kt b/src/main/kotlin/id/walt/cli/WaltCLI.kt index a906fc9c..c92c4615 100644 --- a/src/main/kotlin/id/walt/cli/WaltCLI.kt +++ b/src/main/kotlin/id/walt/cli/WaltCLI.kt @@ -16,7 +16,7 @@ data class CliConfig(var dataDir: String, val properties: MutableMap