@europeum-ebsi/cli 0.0.0 → 1.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +289 -289
- package/LICENSES.txt +538 -0
- package/README.md +1140 -98
- package/dist/api/client.d.ts +4 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +14 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/fetch.d.ts +13 -0
- package/dist/api/fetch.d.ts.map +1 -0
- package/dist/api/fetch.js +30 -0
- package/dist/api/fetch.js.map +1 -0
- package/dist/api/params.d.ts +4 -0
- package/dist/api/params.d.ts.map +1 -0
- package/dist/api/params.js +9 -0
- package/dist/api/params.js.map +1 -0
- package/dist/auth/dcql.d.ts +5 -0
- package/dist/auth/dcql.d.ts.map +1 -0
- package/dist/auth/dcql.js +41 -0
- package/dist/auth/dcql.js.map +1 -0
- package/dist/auth/presentation.d.ts +30 -0
- package/dist/auth/presentation.d.ts.map +1 -0
- package/dist/auth/presentation.js +99 -0
- package/dist/auth/presentation.js.map +1 -0
- package/dist/auth/token.d.ts +11 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +116 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +96 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +99 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +3 -0
- package/dist/commands/config-cmd.d.ts.map +1 -0
- package/dist/commands/config-cmd.js +86 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/contracts-registry.d.ts +3 -0
- package/dist/commands/contracts-registry.d.ts.map +1 -0
- package/dist/commands/contracts-registry.js +132 -0
- package/dist/commands/contracts-registry.js.map +1 -0
- package/dist/commands/did-registry.d.ts +3 -0
- package/dist/commands/did-registry.d.ts.map +1 -0
- package/dist/commands/did-registry.js +110 -0
- package/dist/commands/did-registry.js.map +1 -0
- package/dist/commands/faucet.d.ts +3 -0
- package/dist/commands/faucet.d.ts.map +1 -0
- package/dist/commands/faucet.js +78 -0
- package/dist/commands/faucet.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +20 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/issuers-registry.d.ts +3 -0
- package/dist/commands/issuers-registry.d.ts.map +1 -0
- package/dist/commands/issuers-registry.js +340 -0
- package/dist/commands/issuers-registry.js.map +1 -0
- package/dist/commands/ledger.d.ts +3 -0
- package/dist/commands/ledger.d.ts.map +1 -0
- package/dist/commands/ledger.js +549 -372
- package/dist/commands/ledger.js.map +1 -1
- package/dist/commands/onboarding.d.ts +3 -0
- package/dist/commands/onboarding.d.ts.map +1 -0
- package/dist/commands/onboarding.js +301 -0
- package/dist/commands/onboarding.js.map +1 -0
- package/dist/commands/openapi.d.ts +3 -0
- package/dist/commands/openapi.d.ts.map +1 -0
- package/dist/commands/openapi.js +37 -0
- package/dist/commands/openapi.js.map +1 -0
- package/dist/commands/policies-registry.d.ts +3 -0
- package/dist/commands/policies-registry.d.ts.map +1 -0
- package/dist/commands/policies-registry.js +198 -0
- package/dist/commands/policies-registry.js.map +1 -0
- package/dist/commands/registry.d.ts +27 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +62 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/schemas-registry.d.ts +3 -0
- package/dist/commands/schemas-registry.d.ts.map +1 -0
- package/dist/commands/schemas-registry.js +231 -0
- package/dist/commands/schemas-registry.js.map +1 -0
- package/dist/commands/shared/args.d.ts +2 -0
- package/dist/commands/shared/args.d.ts.map +1 -0
- package/dist/commands/shared/args.js +4 -0
- package/dist/commands/shared/args.js.map +1 -0
- package/dist/commands/shared/wallet-opts.d.ts +9 -0
- package/dist/commands/shared/wallet-opts.d.ts.map +1 -0
- package/dist/commands/shared/wallet-opts.js +44 -0
- package/dist/commands/shared/wallet-opts.js.map +1 -0
- package/dist/commands/timestamp.d.ts +3 -0
- package/dist/commands/timestamp.d.ts.map +1 -0
- package/dist/commands/timestamp.js +250 -0
- package/dist/commands/timestamp.js.map +1 -0
- package/dist/commands/track-and-trace.d.ts +3 -0
- package/dist/commands/track-and-trace.d.ts.map +1 -0
- package/dist/commands/track-and-trace.js +235 -0
- package/dist/commands/track-and-trace.js.map +1 -0
- package/dist/commands/wallet.d.ts +3 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +123 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/config/config.d.ts +45 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +111 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/ebsi-env.d.ts +4 -0
- package/dist/config/ebsi-env.d.ts.map +1 -0
- package/dist/config/ebsi-env.js +37 -0
- package/dist/config/ebsi-env.js.map +1 -0
- package/dist/crypto/wallet.d.ts +34 -0
- package/dist/crypto/wallet.d.ts.map +1 -0
- package/dist/crypto/wallet.js +100 -0
- package/dist/crypto/wallet.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/dist/ledger/read.d.ts +11 -0
- package/dist/ledger/read.d.ts.map +1 -0
- package/dist/ledger/read.js +24 -0
- package/dist/ledger/read.js.map +1 -0
- package/dist/ledger/registries.d.ts +25 -0
- package/dist/ledger/registries.d.ts.map +1 -0
- package/dist/ledger/registries.js +111 -0
- package/dist/ledger/registries.js.map +1 -0
- package/dist/ledger/write.d.ts +43 -0
- package/dist/ledger/write.d.ts.map +1 -0
- package/dist/ledger/write.js +119 -0
- package/dist/ledger/write.js.map +1 -0
- package/dist/onboarding/vc.d.ts +18 -0
- package/dist/onboarding/vc.d.ts.map +1 -0
- package/dist/onboarding/vc.js +72 -0
- package/dist/onboarding/vc.js.map +1 -0
- package/dist/output/format.d.ts +7 -0
- package/dist/output/format.d.ts.map +1 -0
- package/dist/output/format.js +94 -0
- package/dist/output/format.js.map +1 -0
- package/dist/tui/App.d.ts +3 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +99 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/CommandPalette.d.ts +8 -0
- package/dist/tui/CommandPalette.d.ts.map +1 -0
- package/dist/tui/CommandPalette.js +105 -0
- package/dist/tui/CommandPalette.js.map +1 -0
- package/package.json +66 -108
- package/src/api/client.ts +26 -0
- package/src/api/fetch.ts +53 -0
- package/src/api/params.ts +17 -0
- package/src/auth/dcql.ts +84 -0
- package/src/auth/presentation.ts +255 -0
- package/src/auth/token.ts +244 -0
- package/src/cli.ts +164 -0
- package/src/commands/auth.ts +119 -0
- package/src/commands/config-cmd.ts +122 -0
- package/src/commands/contracts-registry.ts +156 -0
- package/src/commands/did-registry.ts +126 -0
- package/src/commands/faucet.ts +112 -0
- package/src/commands/health.ts +21 -0
- package/src/commands/issuers-registry.ts +385 -0
- package/src/commands/ledger.ts +777 -0
- package/src/commands/onboarding.ts +411 -0
- package/src/commands/openapi.ts +42 -0
- package/src/commands/policies-registry.ts +218 -0
- package/src/commands/registry.ts +152 -0
- package/src/commands/schemas-registry.ts +255 -0
- package/src/commands/shared/args.ts +14 -0
- package/src/commands/shared/wallet-opts.ts +85 -0
- package/src/commands/timestamp.ts +272 -0
- package/src/commands/track-and-trace.ts +263 -0
- package/src/commands/wallet.ts +175 -0
- package/src/config/config.ts +275 -0
- package/src/config/ebsi-env.ts +67 -0
- package/src/crypto/wallet.ts +291 -0
- package/src/index.ts +24 -0
- package/src/ledger/read.ts +70 -0
- package/src/ledger/registries.ts +285 -0
- package/src/ledger/write.ts +381 -0
- package/src/onboarding/vc.ts +205 -0
- package/src/output/format.ts +157 -0
- package/src/tui/App.tsx +282 -0
- package/src/tui/CommandPalette.tsx +223 -0
- package/bin/cli.js +0 -13
- package/dist/abi/pilot/DidRegistry.js +0 -568
- package/dist/abi/pilot/DidRegistry.js.map +0 -1
- package/dist/abi/pilot/Ptr.js +0 -666
- package/dist/abi/pilot/Ptr.js.map +0 -1
- package/dist/abi/pilot/SchemaSCRegistry.js +0 -264
- package/dist/abi/pilot/SchemaSCRegistry.js.map +0 -1
- package/dist/abi/pilot/Tcr.js +0 -715
- package/dist/abi/pilot/Tcr.js.map +0 -1
- package/dist/abi/pilot/Timestamp.js +0 -658
- package/dist/abi/pilot/Timestamp.js.map +0 -1
- package/dist/abi/pilot/Tir.js +0 -428
- package/dist/abi/pilot/Tir.js.map +0 -1
- package/dist/abi/pilot/TnT.js +0 -842
- package/dist/abi/pilot/TnT.js.map +0 -1
- package/dist/abi/pilot/Tpr.js +0 -492
- package/dist/abi/pilot/Tpr.js.map +0 -1
- package/dist/abi/test/DidRegistry.js +0 -568
- package/dist/abi/test/DidRegistry.js.map +0 -1
- package/dist/abi/test/Ptr.js +0 -666
- package/dist/abi/test/Ptr.js.map +0 -1
- package/dist/abi/test/SchemaSCRegistry.js +0 -300
- package/dist/abi/test/SchemaSCRegistry.js.map +0 -1
- package/dist/abi/test/Tcr.js +0 -715
- package/dist/abi/test/Tcr.js.map +0 -1
- package/dist/abi/test/Timestamp.js +0 -658
- package/dist/abi/test/Timestamp.js.map +0 -1
- package/dist/abi/test/Tir.js +0 -428
- package/dist/abi/test/Tir.js.map +0 -1
- package/dist/abi/test/TnT.js +0 -842
- package/dist/abi/test/TnT.js.map +0 -1
- package/dist/abi/test/Tpr.js +0 -492
- package/dist/abi/test/Tpr.js.map +0 -1
- package/dist/app.js +0 -659
- package/dist/app.js.map +0 -1
- package/dist/buildParam/didr.js +0 -374
- package/dist/buildParam/didr.js.map +0 -1
- package/dist/buildParam/index.js +0 -53
- package/dist/buildParam/index.js.map +0 -1
- package/dist/buildParam/ptr.js +0 -80
- package/dist/buildParam/ptr.js.map +0 -1
- package/dist/buildParam/tcr.js +0 -36
- package/dist/buildParam/tcr.js.map +0 -1
- package/dist/buildParam/timestamp.js +0 -350
- package/dist/buildParam/timestamp.js.map +0 -1
- package/dist/buildParam/tir.js +0 -110
- package/dist/buildParam/tir.js.map +0 -1
- package/dist/buildParam/tnt.js +0 -214
- package/dist/buildParam/tnt.js.map +0 -1
- package/dist/buildParam/tpr.js +0 -91
- package/dist/buildParam/tpr.js.map +0 -1
- package/dist/buildParam/tsr.js +0 -115
- package/dist/buildParam/tsr.js.map +0 -1
- package/dist/commands/authorisation.js +0 -144
- package/dist/commands/authorisation.js.map +0 -1
- package/dist/commands/compute.js +0 -680
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/conformance.js +0 -813
- package/dist/commands/conformance.js.map +0 -1
- package/dist/commands/hardwarewallet.js +0 -41
- package/dist/commands/hardwarewallet.js.map +0 -1
- package/dist/commands/index.js +0 -8
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/ptr.js +0 -54
- package/dist/commands/ptr.js.map +0 -1
- package/dist/commands/tcr.js +0 -50
- package/dist/commands/tcr.js.map +0 -1
- package/dist/commands/tir.js +0 -64
- package/dist/commands/tir.js.map +0 -1
- package/dist/commands/tnl.js +0 -81
- package/dist/commands/tnl.js.map +0 -1
- package/dist/commands/tsr.js +0 -45
- package/dist/commands/tsr.js.map +0 -1
- package/dist/commands/view.js +0 -53
- package/dist/commands/view.js.map +0 -1
- package/dist/config.js +0 -497
- package/dist/config.js.map +0 -1
- package/dist/interfaces/context.js +0 -2
- package/dist/interfaces/context.js.map +0 -1
- package/dist/interfaces/contracts/ProxyFactory.js +0 -2
- package/dist/interfaces/contracts/ProxyFactory.js.map +0 -1
- package/dist/interfaces/contracts/ProxyTemplateRegistry.js +0 -2
- package/dist/interfaces/contracts/ProxyTemplateRegistry.js.map +0 -1
- package/dist/interfaces/contracts/SchemaSCRegistry.js +0 -2
- package/dist/interfaces/contracts/SchemaSCRegistry.js.map +0 -1
- package/dist/interfaces/contracts/common.js +0 -2
- package/dist/interfaces/contracts/common.js.map +0 -1
- package/dist/interfaces/index.js +0 -5
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/jsonrpc.interface.js +0 -2
- package/dist/interfaces/jsonrpc.interface.js.map +0 -1
- package/dist/interfaces/paginated-list.interface.js +0 -2
- package/dist/interfaces/paginated-list.interface.js.map +0 -1
- package/dist/interfaces/unsigned-transaction.interface.js +0 -2
- package/dist/interfaces/unsigned-transaction.interface.js.map +0 -1
- package/dist/interfaces/utils.interface.js +0 -2
- package/dist/interfaces/utils.interface.js.map +0 -1
- package/dist/programs/migrateDid.js +0 -159
- package/dist/programs/migrateDid.js.map +0 -1
- package/dist/programs/migrateDids.js +0 -232
- package/dist/programs/migrateDids.js.map +0 -1
- package/dist/programs/migrateTsr.js +0 -201
- package/dist/programs/migrateTsr.js.map +0 -1
- package/dist/scripts/accreditAndAuthorize/conformance/step1 +0 -34
- package/dist/scripts/accreditAndAuthorize/conformance/step2 +0 -18
- package/dist/scripts/accreditAndAuthorize/conformance/step3 +0 -9
- package/dist/scripts/accreditAndAuthorize/conformance/step4 +0 -27
- package/dist/scripts/accreditAndAuthorize/conformance/step5 +0 -13
- package/dist/scripts/accreditAndAuthorize/conformance/step6 +0 -14
- package/dist/scripts/accreditAndAuthorize/conformance/step7 +0 -7
- package/dist/scripts/accreditAndAuthorize/test/step1 +0 -34
- package/dist/scripts/accreditAndAuthorize/test/step2 +0 -18
- package/dist/scripts/accreditAndAuthorize/test/step3 +0 -9
- package/dist/scripts/accreditAndAuthorize/test/step4 +0 -27
- package/dist/scripts/accreditAndAuthorize/test/step5 +0 -13
- package/dist/scripts/accreditAndAuthorize/test/step6 +0 -14
- package/dist/scripts/accreditAndAuthorize/test/step7 +0 -7
- package/dist/scripts/accreditTI +0 -21
- package/dist/scripts/assets/Nodes.json +0 -27
- package/dist/scripts/assets/vcdm1.1/CTRevocableCredential.json +0 -30
- package/dist/scripts/assets/vcdm1.1/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
- package/dist/scripts/assets/vcdm1.1/Nodes.json +0 -27
- package/dist/scripts/assets/vcdm1.1/TrustedNodesList.json +0 -35
- package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAccredit.json +0 -35
- package/dist/scripts/assets/vcdm1.1/VerifiableAccreditationToAttest.json +0 -33
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationForTrustChain.json +0 -22
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToInvoke.json +0 -24
- package/dist/scripts/assets/vcdm1.1/VerifiableAuthorisationToOnboard.json +0 -24
- package/dist/scripts/assets/vcdm2.0/CredentialToAttestVerifiableAuthorisationForTrustChain.json +0 -29
- package/dist/scripts/assets/vcdm2.0/TrustedNodesList.json +0 -36
- package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAccredit.json +0 -40
- package/dist/scripts/assets/vcdm2.0/VerifiableAccreditationToAttest.json +0 -38
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationForTrustChain.json +0 -30
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToInvoke.json +0 -24
- package/dist/scripts/assets/vcdm2.0/VerifiableAuthorisationToOnboard.json +0 -23
- package/dist/scripts/bootstrap/0a-loadTPROperator +0 -5
- package/dist/scripts/bootstrap/0b-loadAdmin +0 -8
- package/dist/scripts/bootstrap/1-populateTPR +0 -92
- package/dist/scripts/bootstrap/2-populateDID +0 -6
- package/dist/scripts/bootstrap/3-populateTimestamp +0 -9
- package/dist/scripts/bootstrap/4-populateTIR +0 -8
- package/dist/scripts/bootstrap/5-populateTSR +0 -85
- package/dist/scripts/bootstrap/6-setupConformanceIssuer +0 -35
- package/dist/scripts/bootstrap/README.md +0 -218
- package/dist/scripts/issueVcInvoke +0 -10
- package/dist/scripts/issueVcOnboard +0 -9
- package/dist/scripts/issueVcRootTAO +0 -11
- package/dist/scripts/issueVcTAO +0 -12
- package/dist/scripts/issueVcTI +0 -12
- package/dist/scripts/issueVcTnl +0 -32
- package/dist/scripts/issue_CTRevocableCredential +0 -12
- package/dist/scripts/issue_SelfAttestationSupportOffice +0 -10
- package/dist/scripts/issue_VerifiableAccreditationToAccredit +0 -11
- package/dist/scripts/issue_VerifiableAccreditationToAttest +0 -11
- package/dist/scripts/issue_VerifiableAuthorisationForTrustChain +0 -10
- package/dist/scripts/issue_VerifiableAuthorisationToOnboard +0 -9
- package/dist/scripts/preregisterIssuer +0 -6
- package/dist/scripts/registerDidDocument +0 -15
- package/dist/scripts/registerIssuer +0 -6
- package/dist/scripts/updateVcRootTAO +0 -10
- package/dist/scripts/updateVcTAO +0 -11
- package/dist/scripts/updateVcTI +0 -11
- package/dist/scripts/vcdm2.0/issueSelfAttestationSupportOffice +0 -10
- package/dist/scripts/vcdm2.0/issueVcInvoke +0 -12
- package/dist/scripts/vcdm2.0/issueVcOnboard +0 -11
- package/dist/scripts/vcdm2.0/issueVcRootTAO +0 -14
- package/dist/scripts/vcdm2.0/issueVcTAO +0 -15
- package/dist/scripts/vcdm2.0/issueVcTI +0 -15
- package/dist/scripts/vcdm2.0/issueVcTnl +0 -34
- package/dist/scripts/vcdm2.0/registerDidDocument +0 -15
- package/dist/scripts/vcdm2.0/updateVcRootTAO +0 -13
- package/dist/scripts/vcdm2.0/updateVcTAO +0 -14
- package/dist/scripts/vcdm2.0/updateVcTI +0 -14
- package/dist/scripts/vcdm2.0/verifyVcTnl +0 -10
- package/dist/scripts/verifyVcTnl +0 -10
- package/dist/scripts/wct/accreditAndAuthorize +0 -133
- package/dist/scripts/wct/accreditAndAuthorize2 +0 -89
- package/dist/scripts/wct/holderWallet +0 -39
- package/dist/scripts/wct/holderWallet2 +0 -39
- package/dist/scripts/wct/issueToHolder +0 -38
- package/dist/scripts/wct/issueToHolder2 +0 -38
- package/dist/scripts/wct/pda1 +0 -3
- package/dist/scripts/wct/verifier +0 -8
- package/dist/scripts/wct/verifier2 +0 -7
- package/dist/utils/Client.js +0 -155
- package/dist/utils/Client.js.map +0 -1
- package/dist/utils/HardwareWallet.js +0 -326
- package/dist/utils/HardwareWallet.js.map +0 -1
- package/dist/utils/http.js +0 -132
- package/dist/utils/http.js.map +0 -1
- package/dist/utils/index.js +0 -8
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/jsonrpc.js +0 -38
- package/dist/utils/jsonrpc.js.map +0 -1
- package/dist/utils/print.js +0 -56
- package/dist/utils/print.js.map +0 -1
- package/dist/utils/utils.js +0 -427
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/vcdm.js +0 -47
- package/dist/utils/vcdm.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { KeyAlgorithm } from "../crypto/wallet.ts";
|
|
2
|
+
export type EbsiEnv = "local" | "pilot" | "preprod" | "prod" | "test";
|
|
3
|
+
export declare const EBSI_ENVS: EbsiEnv[];
|
|
4
|
+
export declare const ENV_BASE_URLS: Partial<Record<EbsiEnv, string>>;
|
|
5
|
+
export interface CliConfig {
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
did?: string;
|
|
8
|
+
env: EbsiEnv;
|
|
9
|
+
es256kPrivateKey?: string;
|
|
10
|
+
es256PrivateKey?: string;
|
|
11
|
+
output: OutputFormat;
|
|
12
|
+
signAlg?: KeyAlgorithm;
|
|
13
|
+
token?: string;
|
|
14
|
+
}
|
|
15
|
+
export type OutputFormat = "json" | "pretty" | "table";
|
|
16
|
+
export declare const OUTPUT_FORMATS: OutputFormat[];
|
|
17
|
+
export declare const SIGN_ALGS: KeyAlgorithm[];
|
|
18
|
+
interface PersistedConfig {
|
|
19
|
+
baseUrl?: string;
|
|
20
|
+
did?: string;
|
|
21
|
+
env?: EbsiEnv;
|
|
22
|
+
es256kPrivateKey?: string;
|
|
23
|
+
es256PrivateKey?: string;
|
|
24
|
+
output?: OutputFormat;
|
|
25
|
+
signAlg?: KeyAlgorithm;
|
|
26
|
+
token?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function getConfigFilePath(): string;
|
|
29
|
+
export declare function getPersistedConfigValue(key: keyof PersistedConfig): string | undefined;
|
|
30
|
+
export declare function resolveConfig(overrides: {
|
|
31
|
+
baseUrl?: string;
|
|
32
|
+
did?: string;
|
|
33
|
+
env?: string;
|
|
34
|
+
es256Key?: string;
|
|
35
|
+
es256kKey?: string;
|
|
36
|
+
output?: string;
|
|
37
|
+
signAlg?: string;
|
|
38
|
+
token?: string;
|
|
39
|
+
}, opts?: {
|
|
40
|
+
allowLegacyPrivateKey?: boolean;
|
|
41
|
+
}): CliConfig;
|
|
42
|
+
export declare function setPersistedConfigValue(key: keyof PersistedConfig, value: string): void;
|
|
43
|
+
export declare function writePersistedConfig(config: PersistedConfig): void;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAKtE,eAAO,MAAM,SAAS,EAAE,OAAO,EAM9B,CAAC;AAWF,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAI1D,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAIhB,GAAG,CAAC,EAAE,MAAM,CAAC;IAMb,GAAG,EAAE,OAAO,CAAC;IAMb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IAMrB,OAAO,CAAC,EAAE,YAAY,CAAC;IAIvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvD,eAAO,MAAM,cAAc,EAAE,YAAY,EAAgC,CAAC;AAE1E,eAAO,MAAM,SAAS,EAAE,YAAY,EAAwB,CAAC;AAK7D,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,eAAe,GACzB,MAAM,GAAG,SAAS,CAIpB;AAiBD,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,IAAI,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,SAAS,CA6DX;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAOlE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import envPaths from "env-paths";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export const EBSI_ENVS = [
|
|
5
|
+
"local",
|
|
6
|
+
"test",
|
|
7
|
+
"pilot",
|
|
8
|
+
"preprod",
|
|
9
|
+
"prod",
|
|
10
|
+
];
|
|
11
|
+
export const ENV_BASE_URLS = {
|
|
12
|
+
local: "http://localhost:3000/v1",
|
|
13
|
+
pilot: "https://api-pilot.ebsi.eu/v1",
|
|
14
|
+
test: "https://api-test.testnode02.ebsi.eu/v1",
|
|
15
|
+
};
|
|
16
|
+
export const OUTPUT_FORMATS = ["pretty", "json", "table"];
|
|
17
|
+
export const SIGN_ALGS = ["ES256", "ES256K"];
|
|
18
|
+
const APP_NAME = "ebsi-cli";
|
|
19
|
+
const paths = envPaths(APP_NAME, { suffix: "" });
|
|
20
|
+
const CONFIG_FILE = path.join(paths.config, "config.json");
|
|
21
|
+
export function getConfigFilePath() {
|
|
22
|
+
return CONFIG_FILE;
|
|
23
|
+
}
|
|
24
|
+
export function getPersistedConfigValue(key) {
|
|
25
|
+
const persisted = readPersistedConfig();
|
|
26
|
+
const value = persisted[key];
|
|
27
|
+
return value ?? undefined;
|
|
28
|
+
}
|
|
29
|
+
export function resolveConfig(overrides, opts = {}) {
|
|
30
|
+
const persisted = readPersistedConfig();
|
|
31
|
+
if (!opts.allowLegacyPrivateKey) {
|
|
32
|
+
assertNotLegacyPrivateKey(persisted);
|
|
33
|
+
}
|
|
34
|
+
const output = (overrides.output ??
|
|
35
|
+
process.env["EBSI_OUTPUT"] ??
|
|
36
|
+
persisted.output ??
|
|
37
|
+
"pretty");
|
|
38
|
+
const token = overrides.token ?? process.env["EBSI_ACCESS_TOKEN"] ?? persisted.token;
|
|
39
|
+
const es256kPrivateKey = overrides.es256kKey ??
|
|
40
|
+
process.env["EBSI_ES256K_PRIVATE_KEY"] ??
|
|
41
|
+
persisted.es256kPrivateKey;
|
|
42
|
+
const es256PrivateKey = overrides.es256Key ??
|
|
43
|
+
process.env["EBSI_ES256_PRIVATE_KEY"] ??
|
|
44
|
+
persisted.es256PrivateKey;
|
|
45
|
+
const signAlg = validateSignAlg(overrides.signAlg ?? process.env["EBSI_SIGN_ALG"] ?? persisted.signAlg);
|
|
46
|
+
const did = overrides.did ?? process.env["EBSI_DID"] ?? persisted.did;
|
|
47
|
+
const envName = overrides.env ?? process.env["EBSI_ENV"] ?? persisted.env;
|
|
48
|
+
const env = isEbsiEnv(envName) ? envName : "test";
|
|
49
|
+
const baseUrl = overrides.baseUrl ?? process.env["EBSI_API_BASE_URL"] ?? ENV_BASE_URLS[env];
|
|
50
|
+
if (baseUrl === undefined) {
|
|
51
|
+
throw new Error(`The "${env}" environment has no default API base URL: ` +
|
|
52
|
+
"pass --base-url <url> or set EBSI_API_BASE_URL.");
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
baseUrl,
|
|
56
|
+
env,
|
|
57
|
+
output,
|
|
58
|
+
...(token !== undefined && { token }),
|
|
59
|
+
...(es256kPrivateKey !== undefined && { es256kPrivateKey }),
|
|
60
|
+
...(es256PrivateKey !== undefined && { es256PrivateKey }),
|
|
61
|
+
...(signAlg !== undefined && { signAlg }),
|
|
62
|
+
...(did !== undefined && { did }),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function setPersistedConfigValue(key, value) {
|
|
66
|
+
const persisted = readPersistedConfig();
|
|
67
|
+
persisted[key] = value;
|
|
68
|
+
delete persisted.privateKey;
|
|
69
|
+
writePersistedConfig(persisted);
|
|
70
|
+
}
|
|
71
|
+
export function writePersistedConfig(config) {
|
|
72
|
+
mkdirSync(paths.config, { recursive: true });
|
|
73
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(config, undefined, 2) + "\n", "utf8");
|
|
74
|
+
}
|
|
75
|
+
function assertNotLegacyPrivateKey(persisted) {
|
|
76
|
+
if (process.env["EBSI_PRIVATE_KEY"] === undefined &&
|
|
77
|
+
persisted.privateKey === undefined) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
throw new Error("EBSI_PRIVATE_KEY has been renamed to EBSI_ES256K_PRIVATE_KEY. " +
|
|
81
|
+
"The CLI now takes a mandatory secp256k1 key (EBSI_ES256K_PRIVATE_KEY, " +
|
|
82
|
+
"signs Ethereum transactions) and an optional P-256 key " +
|
|
83
|
+
"(EBSI_ES256_PRIVATE_KEY, signs VCs/VPs). " +
|
|
84
|
+
"If a persisted config file still has a `privateKey` entry, run " +
|
|
85
|
+
"`ebsi config set es256kPrivateKey <hex>` to migrate it (allowed even " +
|
|
86
|
+
"while this error is otherwise showing) — it also clears the old entry. " +
|
|
87
|
+
"Otherwise, unset the EBSI_PRIVATE_KEY environment variable.");
|
|
88
|
+
}
|
|
89
|
+
function isEbsiEnv(value) {
|
|
90
|
+
return EBSI_ENVS.includes(value);
|
|
91
|
+
}
|
|
92
|
+
function readPersistedConfig() {
|
|
93
|
+
if (!existsSync(CONFIG_FILE))
|
|
94
|
+
return {};
|
|
95
|
+
try {
|
|
96
|
+
return JSON.parse(readFileSync(CONFIG_FILE, "utf8"));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function validateSignAlg(value) {
|
|
103
|
+
if (value === undefined)
|
|
104
|
+
return undefined;
|
|
105
|
+
const normalized = value.toUpperCase();
|
|
106
|
+
if (!SIGN_ALGS.includes(normalized)) {
|
|
107
|
+
throw new Error(`Invalid sign algorithm "${value}". Valid values: ${SIGN_ALGS.join(", ")}`);
|
|
108
|
+
}
|
|
109
|
+
return normalized;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ebsi-env.d.ts","sourceRoot":"","sources":["../../src/config/ebsi-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAqBtD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAkB1E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const EBSI_SERVICES = [
|
|
2
|
+
"did-registry",
|
|
3
|
+
"track-and-trace",
|
|
4
|
+
"contracts-registry",
|
|
5
|
+
"issuers-registry",
|
|
6
|
+
"policies-registry",
|
|
7
|
+
"schemas-registry",
|
|
8
|
+
];
|
|
9
|
+
export function buildEbsiEnvConfig(config) {
|
|
10
|
+
const url = new URL(config.baseUrl);
|
|
11
|
+
const version = (url.pathname.split("/").find(Boolean) ??
|
|
12
|
+
"v1");
|
|
13
|
+
return {
|
|
14
|
+
hosts: [url.hostname],
|
|
15
|
+
network: {
|
|
16
|
+
isOptional: config.env === "prod",
|
|
17
|
+
name: resolveNetworkName(config.env),
|
|
18
|
+
},
|
|
19
|
+
scheme: "ebsi",
|
|
20
|
+
services: [...EBSI_SERVICES],
|
|
21
|
+
version,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function resolveNetworkName(env) {
|
|
25
|
+
switch (env) {
|
|
26
|
+
case "local": {
|
|
27
|
+
return "test";
|
|
28
|
+
}
|
|
29
|
+
case "prod": {
|
|
30
|
+
return "production";
|
|
31
|
+
}
|
|
32
|
+
default: {
|
|
33
|
+
return env;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ebsi-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ebsi-env.js","sourceRoot":"","sources":["../../src/config/ebsi-env.ts"],"names":[],"mappings":"AAIA,MAAM,aAAa,GAAG;IACpB,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAYX,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACpD,IAAI,CAAiB,CAAC;IAExB,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QAGrB,OAAO,EAAE;YACP,UAAU,EAAE,MAAM,CAAC,GAAG,KAAK,MAAM;YACjC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC;SACrC;QACD,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAaD,SAAS,kBAAkB,CAAC,GAAY;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { EbsiIssuer } from "@europeum-ebsi/verifiable-credential";
|
|
2
|
+
import { ethers } from "ethers";
|
|
3
|
+
export interface DeriveWalletKeys {
|
|
4
|
+
es256kPrivateKey: string;
|
|
5
|
+
es256PrivateKey?: string;
|
|
6
|
+
signAlg?: KeyAlgorithm;
|
|
7
|
+
}
|
|
8
|
+
export type KeyAlgorithm = "ES256" | "ES256K";
|
|
9
|
+
export interface KeyMaterial {
|
|
10
|
+
alg: KeyAlgorithm;
|
|
11
|
+
issuer: EbsiIssuer;
|
|
12
|
+
kid: string;
|
|
13
|
+
publicKeyJwk: JwkEcKey;
|
|
14
|
+
thumbprint: string;
|
|
15
|
+
}
|
|
16
|
+
export interface WalletDetails {
|
|
17
|
+
address: string;
|
|
18
|
+
did: string;
|
|
19
|
+
es256?: KeyMaterial;
|
|
20
|
+
es256k: KeyMaterial;
|
|
21
|
+
signingKey(): KeyMaterial;
|
|
22
|
+
wallet: ethers.Wallet;
|
|
23
|
+
}
|
|
24
|
+
interface JwkEcKey {
|
|
25
|
+
crv: "P-256" | "secp256k1";
|
|
26
|
+
kty: "EC";
|
|
27
|
+
x: string;
|
|
28
|
+
y: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function deriveEs256Issuer(privateKeyHex: string, did: string): Promise<EbsiIssuer<"ES256">>;
|
|
31
|
+
export declare function deriveWallet(keys: DeriveWalletKeys, overrideDid?: string): Promise<WalletDetails>;
|
|
32
|
+
export declare function generatePrivateKey(algorithm?: KeyAlgorithm): string;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/crypto/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AASvE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,WAAW,gBAAgB;IAI/B,gBAAgB,EAAE,MAAM,CAAC;IAIzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAQD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAO9C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IAInB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,QAAQ,CAAC;IAMvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAK5B,OAAO,EAAE,MAAM,CAAC;IAIhB,GAAG,EAAE,MAAM,CAAC;IAMZ,KAAK,CAAC,EAAE,WAAW,CAAC;IAKpB,MAAM,EAAE,WAAW,CAAC;IAWpB,UAAU,IAAI,WAAW,CAAC;IAK1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CACvB;AAOD,UAAU,QAAQ;IAChB,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAUD,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAG9B;AAgBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAwCxB;AAOD,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,YAAuB,GAAG,MAAM,CAM7E"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { bytesToBase64url, ES256KSigner, ES256Signer, hexToBytes, } from "@europeum-ebsi/did-jwt";
|
|
2
|
+
import { EbsiWallet } from "@europeum-ebsi/wallet";
|
|
3
|
+
import { ethers } from "ethers";
|
|
4
|
+
import { calculateJwkThumbprint } from "jose";
|
|
5
|
+
export async function deriveEs256Issuer(privateKeyHex, did) {
|
|
6
|
+
const { issuer } = await deriveEs256KeyMaterial(privateKeyHex, did);
|
|
7
|
+
return issuer;
|
|
8
|
+
}
|
|
9
|
+
export async function deriveWallet(keys, overrideDid) {
|
|
10
|
+
const { es256kPrivateKey, es256PrivateKey, signAlg } = keys;
|
|
11
|
+
new EbsiWallet({
|
|
12
|
+
ES256KPrivateKey: es256kPrivateKey,
|
|
13
|
+
...(es256PrivateKey !== undefined && {
|
|
14
|
+
ES256PrivateKey: es256PrivateKey,
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
const { publicKeyJwk, wallet } = deriveEs256kPublicMaterial(es256kPrivateKey);
|
|
18
|
+
const thumbprint = await calculateJwkThumbprint(publicKeyJwk);
|
|
19
|
+
const did = overrideDid ?? EbsiWallet.createDid();
|
|
20
|
+
const kid = `${did}#${thumbprint}`;
|
|
21
|
+
const pkBytes = hexToBytes(wallet.privateKey);
|
|
22
|
+
const es256k = {
|
|
23
|
+
alg: "ES256K",
|
|
24
|
+
issuer: { alg: "ES256K", did, kid, signer: ES256KSigner(pkBytes) },
|
|
25
|
+
kid,
|
|
26
|
+
publicKeyJwk,
|
|
27
|
+
thumbprint,
|
|
28
|
+
};
|
|
29
|
+
const es256 = es256PrivateKey === undefined
|
|
30
|
+
? undefined
|
|
31
|
+
: await deriveEs256KeyMaterial(es256PrivateKey, did);
|
|
32
|
+
return {
|
|
33
|
+
address: wallet.address,
|
|
34
|
+
did,
|
|
35
|
+
...(es256 !== undefined && { es256 }),
|
|
36
|
+
es256k,
|
|
37
|
+
signingKey: () => pickSigningKey(es256k, es256, signAlg),
|
|
38
|
+
wallet,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function generatePrivateKey(algorithm = "ES256K") {
|
|
42
|
+
if (algorithm === "ES256") {
|
|
43
|
+
const { privateKey } = EbsiWallet.generateKeyPair({ algorithm: "ES256" });
|
|
44
|
+
return addPrefix(privateKey);
|
|
45
|
+
}
|
|
46
|
+
return ethers.Wallet.createRandom().privateKey;
|
|
47
|
+
}
|
|
48
|
+
function addPrefix(hex) {
|
|
49
|
+
return hex.startsWith("0x") ? hex : `0x${hex}`;
|
|
50
|
+
}
|
|
51
|
+
async function deriveEs256KeyMaterial(privateKeyHex, did) {
|
|
52
|
+
const publicKeyHex = EbsiWallet.getPublicKeyHex(privateKeyHex, "ES256");
|
|
53
|
+
const publicKeyJwk = EbsiWallet.formatPublicKey(publicKeyHex, "jwk", "ES256");
|
|
54
|
+
const thumbprint = await calculateJwkThumbprint(publicKeyJwk, "sha256");
|
|
55
|
+
const kid = `${did}#${thumbprint}`;
|
|
56
|
+
return {
|
|
57
|
+
alg: "ES256",
|
|
58
|
+
issuer: {
|
|
59
|
+
alg: "ES256",
|
|
60
|
+
did,
|
|
61
|
+
kid,
|
|
62
|
+
signer: ES256Signer(hexToBytes(privateKeyHex)),
|
|
63
|
+
},
|
|
64
|
+
kid,
|
|
65
|
+
publicKeyJwk,
|
|
66
|
+
thumbprint,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function deriveEs256kPublicMaterial(privateKeyHex) {
|
|
70
|
+
const wallet = new ethers.Wallet(privateKeyHex);
|
|
71
|
+
const uncompressed = ethers.SigningKey.computePublicKey(wallet.signingKey.publicKey, false);
|
|
72
|
+
const xHex = uncompressed.slice(4, 68);
|
|
73
|
+
const yHex = uncompressed.slice(68);
|
|
74
|
+
const publicKeyJwk = {
|
|
75
|
+
crv: "secp256k1",
|
|
76
|
+
kty: "EC",
|
|
77
|
+
x: bytesToBase64url(hexToBytes(xHex)),
|
|
78
|
+
y: bytesToBase64url(hexToBytes(yHex)),
|
|
79
|
+
};
|
|
80
|
+
return { publicKeyJwk, wallet };
|
|
81
|
+
}
|
|
82
|
+
function pickSigningKey(es256k, es256, signAlg) {
|
|
83
|
+
if (signAlg === "ES256") {
|
|
84
|
+
if (!es256) {
|
|
85
|
+
throw new Error("No P-256 key configured. Pass --es256-key <hex>, set " +
|
|
86
|
+
"EBSI_ES256_PRIVATE_KEY, or run `ebsi config set es256PrivateKey <hex>`.");
|
|
87
|
+
}
|
|
88
|
+
return es256;
|
|
89
|
+
}
|
|
90
|
+
if (signAlg === "ES256K") {
|
|
91
|
+
return es256k;
|
|
92
|
+
}
|
|
93
|
+
if (!es256) {
|
|
94
|
+
return es256k;
|
|
95
|
+
}
|
|
96
|
+
throw new Error("Two signing keys are configured (ES256K and ES256). Choose which one " +
|
|
97
|
+
"signs VCs/VPs with --sign-alg <ES256|ES256K>, EBSI_SIGN_ALG, or " +
|
|
98
|
+
"`ebsi config set signAlg <alg>`.");
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/crypto/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const args = process.argv.slice(2);
|
|
3
|
+
const isInteractive = args.length === 0 || args[0] === "--interactive";
|
|
4
|
+
if (isInteractive) {
|
|
5
|
+
const { render } = await import("ink");
|
|
6
|
+
const React = (await import("react")).default;
|
|
7
|
+
const { App } = await import("./tui/App.js");
|
|
8
|
+
render(React.createElement(App, {}));
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
const { buildProgram } = await import("./cli.js");
|
|
12
|
+
const program = buildProgram();
|
|
13
|
+
await program.parseAsync(process.argv);
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
7
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;AAEvE,IAAI,aAAa,EAAE,CAAC;IAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,cAAe,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;KAAM,CAAC;IAEN,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CliConfig } from "../config/config.ts";
|
|
2
|
+
import type { RegistryEntry } from "./registries.ts";
|
|
3
|
+
export interface ReadOptions {
|
|
4
|
+
config: CliConfig;
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
functionArgs: unknown[];
|
|
7
|
+
functionName: string;
|
|
8
|
+
registry: RegistryEntry;
|
|
9
|
+
}
|
|
10
|
+
export declare function readFromRegistry(opts: ReadOptions): Promise<unknown>;
|
|
11
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/ledger/read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,WAAW;IAI1B,MAAM,EAAE,SAAS,CAAC;IAIlB,eAAe,EAAE,MAAM,CAAC;IAIxB,YAAY,EAAE,OAAO,EAAE,CAAC;IAIxB,YAAY,EAAE,MAAM,CAAC;IAIrB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAYD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB1E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
export async function readFromRegistry(opts) {
|
|
3
|
+
const { config, contractAddress, functionArgs, functionName, registry } = opts;
|
|
4
|
+
const iface = registry.getInterface();
|
|
5
|
+
let data;
|
|
6
|
+
try {
|
|
7
|
+
data = iface.encodeFunctionData(functionName, functionArgs);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
11
|
+
throw new Error(`Failed to encode function data for "${functionName}": ${message}. ` +
|
|
12
|
+
"Check the function name and argument types.", { cause: error });
|
|
13
|
+
}
|
|
14
|
+
const provider = new ethers.JsonRpcProvider(`${config.baseUrl}/ledger`);
|
|
15
|
+
const result = await provider.call({ data, to: contractAddress });
|
|
16
|
+
const decoded = iface.decodeFunctionResult(functionName, result);
|
|
17
|
+
return toJsonSafe(decoded);
|
|
18
|
+
}
|
|
19
|
+
function toJsonSafe(value) {
|
|
20
|
+
if (typeof value === "bigint")
|
|
21
|
+
return value.toString();
|
|
22
|
+
return Array.isArray(value) ? value.map((item) => toJsonSafe(item)) : value;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/ledger/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAsChC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAiB;IACtD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,GACrE,IAAI,CAAC;IAEP,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IACtC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,MAAM,OAAO,IAAI;YAClE,6CAA6C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEjE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAMD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
export interface RegistryEntry {
|
|
3
|
+
addressEnvKey: string;
|
|
4
|
+
defaultScope: string;
|
|
5
|
+
getInterface(): ethers.Interface;
|
|
6
|
+
}
|
|
7
|
+
export declare const REGISTRIES: Record<string, RegistryEntry | undefined>;
|
|
8
|
+
export declare const REGISTRY_NAMES: string[];
|
|
9
|
+
export interface ContractAddressOption {
|
|
10
|
+
option: {
|
|
11
|
+
description: string;
|
|
12
|
+
flags: string;
|
|
13
|
+
};
|
|
14
|
+
resolve: (opts: Record<string, string>) => string | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface RegistryTarget {
|
|
17
|
+
functionName?: string;
|
|
18
|
+
registryName: string;
|
|
19
|
+
to: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function contractAddressOption(envKey: string, description: string): ContractAddressOption;
|
|
22
|
+
export declare function contractAddressOptionFor(registryName: string): ContractAddressOption;
|
|
23
|
+
export declare function defaultScopeFor(registryName: string, functionName: string | undefined, registry: RegistryEntry): string;
|
|
24
|
+
export declare function deriveScopeForRegistries(targets: RegistryTarget[]): string;
|
|
25
|
+
//# sourceMappingURL=registries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/ledger/registries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,WAAW,aAAa;IAa5B,aAAa,EAAE,MAAM,CAAC;IAItB,YAAY,EAAE,MAAM,CAAC;IAIrB,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;CAClC;AA8BD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CA6DhE,CAAC;AAKF,eAAO,MAAM,cAAc,UAA0B,CAAC;AAKtD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/D;AAQD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AASD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,qBAAqB,CAKvB;AAOD,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,GACnB,qBAAqB,CAWvB;AA+BD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,aAAa,GACtB,MAAM,CAWR;AAiBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CA0B1E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
const req = createRequire(import.meta.url);
|
|
4
|
+
function loadInterface(pkg, factoryName) {
|
|
5
|
+
const mod = req(pkg);
|
|
6
|
+
const factory = mod[factoryName];
|
|
7
|
+
if (!factory) {
|
|
8
|
+
throw new Error(`Factory class "${factoryName}" not found in package "${pkg}"`);
|
|
9
|
+
}
|
|
10
|
+
return factory.createInterface();
|
|
11
|
+
}
|
|
12
|
+
export const REGISTRIES = {
|
|
13
|
+
"did-registry": {
|
|
14
|
+
addressEnvKey: "DID_REGISTRY_CONTRACT_ADDRESS",
|
|
15
|
+
defaultScope: "did-registry:write",
|
|
16
|
+
getInterface() {
|
|
17
|
+
return loadInterface("@europeum-ebsi/did-registry-contract", "DidRegistry__factory");
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
"issuers-registry": {
|
|
21
|
+
addressEnvKey: "ISSUERS_REGISTRY_CONTRACT_ADDRESS",
|
|
22
|
+
defaultScope: "issuers-registry:write",
|
|
23
|
+
getInterface() {
|
|
24
|
+
return loadInterface("@europeum-ebsi/issuers-registry-contract", "IssuersRegistry__factory");
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
"policies-registry": {
|
|
28
|
+
addressEnvKey: "POLICIES_REGISTRY_CONTRACT_ADDRESS",
|
|
29
|
+
defaultScope: "policies-registry:write",
|
|
30
|
+
getInterface() {
|
|
31
|
+
return loadInterface("@europeum-ebsi/policies-registry-contract", "PoliciesRegistry__factory");
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
"schemas-registry": {
|
|
35
|
+
addressEnvKey: "SCHEMAS_REGISTRY_CONTRACT_ADDRESS",
|
|
36
|
+
defaultScope: "schemas-registry:write",
|
|
37
|
+
getInterface() {
|
|
38
|
+
return loadInterface("@europeum-ebsi/schemas-registry-contract", "SchemasRegistry__factory");
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
timestamp: {
|
|
42
|
+
addressEnvKey: "TIMESTAMP_CONTRACT_ADDRESS",
|
|
43
|
+
defaultScope: "timestamp:write",
|
|
44
|
+
getInterface() {
|
|
45
|
+
return loadInterface("@europeum-ebsi/timestamp-contract", "Timestamp__factory");
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
"track-and-trace": {
|
|
49
|
+
addressEnvKey: "TRACK_AND_TRACE_CONTRACT_ADDRESS",
|
|
50
|
+
defaultScope: "track-and-trace:write",
|
|
51
|
+
getInterface() {
|
|
52
|
+
return loadInterface("@europeum-ebsi/track-and-trace-contract", "TrackAndTrace__factory");
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
export const REGISTRY_NAMES = Object.keys(REGISTRIES);
|
|
57
|
+
export function contractAddressOption(envKey, description) {
|
|
58
|
+
return {
|
|
59
|
+
option: { description, flags: "--contract-address <address>" },
|
|
60
|
+
resolve: (opts) => resolveContractAddress(opts, envKey),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function contractAddressOptionFor(registryName) {
|
|
64
|
+
const registry = REGISTRIES[registryName];
|
|
65
|
+
if (!registry) {
|
|
66
|
+
throw new Error(`Unknown registry "${registryName}". Known registries: ${REGISTRY_NAMES.join(", ")}`);
|
|
67
|
+
}
|
|
68
|
+
return contractAddressOption(registry.addressEnvKey, `Contract address to query. Defaults to $${registry.addressEnvKey} if set (the same address "ledger write" signs against), otherwise the API's configured default.`);
|
|
69
|
+
}
|
|
70
|
+
const TRACK_AND_TRACE_FUNCTION_SCOPE = {
|
|
71
|
+
authoriseDid: "track-and-trace:authorise",
|
|
72
|
+
commitCreateDocument: "track-and-trace:create",
|
|
73
|
+
createDocument: "track-and-trace:create",
|
|
74
|
+
};
|
|
75
|
+
export function defaultScopeFor(registryName, functionName, registry) {
|
|
76
|
+
if (registryName === "did-registry" && functionName === "insertDidDocument") {
|
|
77
|
+
return "did-registry:invite";
|
|
78
|
+
}
|
|
79
|
+
if (registryName === "track-and-trace" && functionName !== undefined) {
|
|
80
|
+
const scope = TRACK_AND_TRACE_FUNCTION_SCOPE[functionName];
|
|
81
|
+
if (scope) {
|
|
82
|
+
return scope;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return registry.defaultScope;
|
|
86
|
+
}
|
|
87
|
+
export function deriveScopeForRegistries(targets) {
|
|
88
|
+
const addressByFamily = new Map();
|
|
89
|
+
for (const { functionName, registryName, to } of targets) {
|
|
90
|
+
const registry = REGISTRIES[registryName];
|
|
91
|
+
if (!registry) {
|
|
92
|
+
throw new Error(`Unknown registry "${registryName}". Known registries: ${REGISTRY_NAMES.join(", ")}`);
|
|
93
|
+
}
|
|
94
|
+
const family = defaultScopeFor(registryName, functionName, registry);
|
|
95
|
+
const existingAddress = addressByFamily.get(family);
|
|
96
|
+
if (existingAddress !== undefined && existingAddress !== to) {
|
|
97
|
+
throw new Error(`Batch targets two different "${family}" contract instances (${existingAddress} and ${to}) ` +
|
|
98
|
+
"in a single --auto-token request. A single access token can only target one instance " +
|
|
99
|
+
"per scope family — split the batch, or provide --token/--scope explicitly.");
|
|
100
|
+
}
|
|
101
|
+
addressByFamily.set(family, to);
|
|
102
|
+
}
|
|
103
|
+
return [...addressByFamily]
|
|
104
|
+
.map(([family, address]) => `${family}:${address}`)
|
|
105
|
+
.toSorted((a, b) => a.localeCompare(b))
|
|
106
|
+
.join(" ");
|
|
107
|
+
}
|
|
108
|
+
function resolveContractAddress(opts, envKey) {
|
|
109
|
+
return opts["contractAddress"] ?? process.env[envKey];
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=registries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/ledger/registries.ts"],"names":[],"mappings":"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"}
|