@mocanetwork/privado-js-sdk 1.0.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/README.md +75 -0
- package/dist/browser/esm/index.js +14901 -0
- package/dist/browser/esm/index.js.map +1 -0
- package/dist/browser/umd/index.global.js +678 -0
- package/dist/browser/umd/index.global.js.map +1 -0
- package/dist/node/cjs/index.cjs +15418 -0
- package/dist/node/cjs/index.cjs.map +1 -0
- package/dist/node/esm/index.js +14901 -0
- package/dist/node/esm/index.js.map +1 -0
- package/dist/types/blockchain/index.d.ts +2 -0
- package/dist/types/blockchain/index.d.ts.map +1 -0
- package/dist/types/blockchain/transaction-service.d.ts +81 -0
- package/dist/types/blockchain/transaction-service.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-mtp-v2-on-chain.d.ts +70 -0
- package/dist/types/circuits/atomic-query-mtp-v2-on-chain.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-mtp-v2.d.ts +63 -0
- package/dist/types/circuits/atomic-query-mtp-v2.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-sig-v2-on-chain.d.ts +137 -0
- package/dist/types/circuits/atomic-query-sig-v2-on-chain.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-sig-v2.d.ts +64 -0
- package/dist/types/circuits/atomic-query-sig-v2.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-v3-on-chain.d.ts +141 -0
- package/dist/types/circuits/atomic-query-v3-on-chain.d.ts.map +1 -0
- package/dist/types/circuits/atomic-query-v3.d.ts +121 -0
- package/dist/types/circuits/atomic-query-v3.d.ts.map +1 -0
- package/dist/types/circuits/auth-v2.d.ts +46 -0
- package/dist/types/circuits/auth-v2.d.ts.map +1 -0
- package/dist/types/circuits/common.d.ts +153 -0
- package/dist/types/circuits/common.d.ts.map +1 -0
- package/dist/types/circuits/comparer.d.ts +122 -0
- package/dist/types/circuits/comparer.d.ts.map +1 -0
- package/dist/types/circuits/index.d.ts +13 -0
- package/dist/types/circuits/index.d.ts.map +1 -0
- package/dist/types/circuits/linked-multi-query.d.ts +38 -0
- package/dist/types/circuits/linked-multi-query.d.ts.map +1 -0
- package/dist/types/circuits/models.d.ts +189 -0
- package/dist/types/circuits/models.d.ts.map +1 -0
- package/dist/types/circuits/state-transition.d.ts +49 -0
- package/dist/types/circuits/state-transition.d.ts.map +1 -0
- package/dist/types/credentials/credential-wallet.d.ts +200 -0
- package/dist/types/credentials/credential-wallet.d.ts.map +1 -0
- package/dist/types/credentials/index.d.ts +12 -0
- package/dist/types/credentials/index.d.ts.map +1 -0
- package/dist/types/credentials/models.d.ts +84 -0
- package/dist/types/credentials/models.d.ts.map +1 -0
- package/dist/types/credentials/rhs.d.ts +38 -0
- package/dist/types/credentials/rhs.d.ts.map +1 -0
- package/dist/types/credentials/status/agent-revocation.d.ts +20 -0
- package/dist/types/credentials/status/agent-revocation.d.ts.map +1 -0
- package/dist/types/credentials/status/credential-status-publisher.d.ts +73 -0
- package/dist/types/credentials/status/credential-status-publisher.d.ts.map +1 -0
- package/dist/types/credentials/status/did-resolver-revocation.d.ts +8 -0
- package/dist/types/credentials/status/did-resolver-revocation.d.ts.map +1 -0
- package/dist/types/credentials/status/on-chain-revocation.d.ts +58 -0
- package/dist/types/credentials/status/on-chain-revocation.d.ts.map +1 -0
- package/dist/types/credentials/status/resolver.d.ts +69 -0
- package/dist/types/credentials/status/resolver.d.ts.map +1 -0
- package/dist/types/credentials/status/reverse-sparse-merkle-tree.d.ts +126 -0
- package/dist/types/credentials/status/reverse-sparse-merkle-tree.d.ts.map +1 -0
- package/dist/types/credentials/status/sparse-merkle-tree.d.ts +38 -0
- package/dist/types/credentials/status/sparse-merkle-tree.d.ts.map +1 -0
- package/dist/types/credentials/utils.d.ts +15 -0
- package/dist/types/credentials/utils.d.ts.map +1 -0
- package/dist/types/iden3comm/constants.d.ts +61 -0
- package/dist/types/iden3comm/constants.d.ts.map +1 -0
- package/dist/types/iden3comm/errors.d.ts +10 -0
- package/dist/types/iden3comm/errors.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/auth.d.ts +157 -0
- package/dist/types/iden3comm/handlers/auth.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/common.d.ts +72 -0
- package/dist/types/iden3comm/handlers/common.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/contract-request.d.ts +96 -0
- package/dist/types/iden3comm/handlers/contract-request.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/credential-proposal.d.ts +120 -0
- package/dist/types/iden3comm/handlers/credential-proposal.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/discovery-protocol.d.ts +101 -0
- package/dist/types/iden3comm/handlers/discovery-protocol.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/fetch.d.ts +130 -0
- package/dist/types/iden3comm/handlers/fetch.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/index.d.ts +12 -0
- package/dist/types/iden3comm/handlers/index.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/message-handler.d.ts +93 -0
- package/dist/types/iden3comm/handlers/message-handler.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/payment.d.ts +167 -0
- package/dist/types/iden3comm/handlers/payment.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/problem-report.d.ts +18 -0
- package/dist/types/iden3comm/handlers/problem-report.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/refresh.d.ts +57 -0
- package/dist/types/iden3comm/handlers/refresh.d.ts.map +1 -0
- package/dist/types/iden3comm/handlers/revocation-status.d.ts +76 -0
- package/dist/types/iden3comm/handlers/revocation-status.d.ts.map +1 -0
- package/dist/types/iden3comm/index.d.ts +9 -0
- package/dist/types/iden3comm/index.d.ts.map +1 -0
- package/dist/types/iden3comm/packageManager.d.ts +47 -0
- package/dist/types/iden3comm/packageManager.d.ts.map +1 -0
- package/dist/types/iden3comm/packers/index.d.ts +4 -0
- package/dist/types/iden3comm/packers/index.d.ts.map +1 -0
- package/dist/types/iden3comm/packers/jws.d.ts +56 -0
- package/dist/types/iden3comm/packers/jws.d.ts.map +1 -0
- package/dist/types/iden3comm/packers/plain.d.ts +47 -0
- package/dist/types/iden3comm/packers/plain.d.ts.map +1 -0
- package/dist/types/iden3comm/packers/zkp.d.ts +98 -0
- package/dist/types/iden3comm/packers/zkp.d.ts.map +1 -0
- package/dist/types/iden3comm/types/index.d.ts +17 -0
- package/dist/types/iden3comm/types/index.d.ts.map +1 -0
- package/dist/types/iden3comm/types/models.d.ts +7 -0
- package/dist/types/iden3comm/types/models.d.ts.map +1 -0
- package/dist/types/iden3comm/types/packageManager.d.ts +100 -0
- package/dist/types/iden3comm/types/packageManager.d.ts.map +1 -0
- package/dist/types/iden3comm/types/packer.d.ts +158 -0
- package/dist/types/iden3comm/types/packer.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/accept-profile.d.ts +8 -0
- package/dist/types/iden3comm/types/protocol/accept-profile.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/attachment.d.ts +11 -0
- package/dist/types/iden3comm/types/protocol/attachment.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/auth.d.ts +90 -0
- package/dist/types/iden3comm/types/protocol/auth.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/common.d.ts +11 -0
- package/dist/types/iden3comm/types/protocol/common.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/contract-request.d.ts +62 -0
- package/dist/types/iden3comm/types/protocol/contract-request.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/credentials.d.ts +82 -0
- package/dist/types/iden3comm/types/protocol/credentials.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/discovery-protocol.d.ts +42 -0
- package/dist/types/iden3comm/types/protocol/discovery-protocol.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/messages.d.ts +12 -0
- package/dist/types/iden3comm/types/protocol/messages.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/payment.d.ts +178 -0
- package/dist/types/iden3comm/types/protocol/payment.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/problem-report.d.ts +17 -0
- package/dist/types/iden3comm/types/protocol/problem-report.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/proof.d.ts +22 -0
- package/dist/types/iden3comm/types/protocol/proof.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/proposal-request.d.ts +33 -0
- package/dist/types/iden3comm/types/protocol/proposal-request.d.ts.map +1 -0
- package/dist/types/iden3comm/types/protocol/revocation.d.ts +20 -0
- package/dist/types/iden3comm/types/protocol/revocation.d.ts.map +1 -0
- package/dist/types/iden3comm/utils/accept-profile.d.ts +4 -0
- package/dist/types/iden3comm/utils/accept-profile.d.ts.map +1 -0
- package/dist/types/iden3comm/utils/did.d.ts +8 -0
- package/dist/types/iden3comm/utils/did.d.ts.map +1 -0
- package/dist/types/iden3comm/utils/envelope.d.ts +32 -0
- package/dist/types/iden3comm/utils/envelope.d.ts.map +1 -0
- package/dist/types/iden3comm/utils/index.d.ts +5 -0
- package/dist/types/iden3comm/utils/index.d.ts.map +1 -0
- package/dist/types/iden3comm/utils/message.d.ts +20 -0
- package/dist/types/iden3comm/utils/message.d.ts.map +1 -0
- package/dist/types/identity/common.d.ts +27 -0
- package/dist/types/identity/common.d.ts.map +1 -0
- package/dist/types/identity/identity-wallet.d.ts +472 -0
- package/dist/types/identity/identity-wallet.d.ts.map +1 -0
- package/dist/types/identity/index.d.ts +3 -0
- package/dist/types/identity/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/kms/index.d.ts +5 -0
- package/dist/types/kms/index.d.ts.map +1 -0
- package/dist/types/kms/key-providers/bjj-provider.d.ts +54 -0
- package/dist/types/kms/key-providers/bjj-provider.d.ts.map +1 -0
- package/dist/types/kms/key-providers/ed25519-provider.d.ts +61 -0
- package/dist/types/kms/key-providers/ed25519-provider.d.ts.map +1 -0
- package/dist/types/kms/key-providers/index.d.ts +4 -0
- package/dist/types/kms/key-providers/index.d.ts.map +1 -0
- package/dist/types/kms/key-providers/secp256k1-provider.d.ts +62 -0
- package/dist/types/kms/key-providers/secp256k1-provider.d.ts.map +1 -0
- package/dist/types/kms/kms.d.ts +120 -0
- package/dist/types/kms/kms.d.ts.map +1 -0
- package/dist/types/kms/provider-helpers.d.ts +10 -0
- package/dist/types/kms/provider-helpers.d.ts.map +1 -0
- package/dist/types/kms/store/abstract-key-store.d.ts +41 -0
- package/dist/types/kms/store/abstract-key-store.d.ts.map +1 -0
- package/dist/types/kms/store/index.d.ts +6 -0
- package/dist/types/kms/store/index.d.ts.map +1 -0
- package/dist/types/kms/store/indexed-db-key-store.d.ts +44 -0
- package/dist/types/kms/store/indexed-db-key-store.d.ts.map +1 -0
- package/dist/types/kms/store/local-storage-key-store.d.ts +42 -0
- package/dist/types/kms/store/local-storage-key-store.d.ts.map +1 -0
- package/dist/types/kms/store/memory-key-store.d.ts +24 -0
- package/dist/types/kms/store/memory-key-store.d.ts.map +1 -0
- package/dist/types/kms/store/types.d.ts +21 -0
- package/dist/types/kms/store/types.d.ts.map +1 -0
- package/dist/types/proof/common.d.ts +49 -0
- package/dist/types/proof/common.d.ts.map +1 -0
- package/dist/types/proof/index.d.ts +5 -0
- package/dist/types/proof/index.d.ts.map +1 -0
- package/dist/types/proof/proof-service.d.ts +169 -0
- package/dist/types/proof/proof-service.d.ts.map +1 -0
- package/dist/types/proof/provers/index.d.ts +4 -0
- package/dist/types/proof/provers/index.d.ts.map +1 -0
- package/dist/types/proof/provers/inputs-generator.d.ts +57 -0
- package/dist/types/proof/provers/inputs-generator.d.ts.map +1 -0
- package/dist/types/proof/provers/prover.d.ts +56 -0
- package/dist/types/proof/provers/prover.d.ts.map +1 -0
- package/dist/types/proof/provers/witness_calculator.d.ts +17 -0
- package/dist/types/proof/provers/witness_calculator.d.ts.map +1 -0
- package/dist/types/proof/verifiers/index.d.ts +4 -0
- package/dist/types/proof/verifiers/index.d.ts.map +1 -0
- package/dist/types/proof/verifiers/pub-signals-verifier.d.ts +60 -0
- package/dist/types/proof/verifiers/pub-signals-verifier.d.ts.map +1 -0
- package/dist/types/proof/verifiers/query-hash.d.ts +4 -0
- package/dist/types/proof/verifiers/query-hash.d.ts.map +1 -0
- package/dist/types/proof/verifiers/query.d.ts +43 -0
- package/dist/types/proof/verifiers/query.d.ts.map +1 -0
- package/dist/types/schema-processor/index.d.ts +4 -0
- package/dist/types/schema-processor/index.d.ts.map +1 -0
- package/dist/types/schema-processor/json/index.d.ts +3 -0
- package/dist/types/schema-processor/json/index.d.ts.map +1 -0
- package/dist/types/schema-processor/json/parser.d.ts +141 -0
- package/dist/types/schema-processor/json/parser.d.ts.map +1 -0
- package/dist/types/schema-processor/json/validator.d.ts +26 -0
- package/dist/types/schema-processor/json/validator.d.ts.map +1 -0
- package/dist/types/schema-processor/jsonld/cache.d.ts +3 -0
- package/dist/types/schema-processor/jsonld/cache.d.ts.map +1 -0
- package/dist/types/schema-processor/jsonld/index.d.ts +3 -0
- package/dist/types/schema-processor/jsonld/index.d.ts.map +1 -0
- package/dist/types/schema-processor/jsonld/parser.d.ts +30 -0
- package/dist/types/schema-processor/jsonld/parser.d.ts.map +1 -0
- package/dist/types/schema-processor/utils.d.ts +54 -0
- package/dist/types/schema-processor/utils.d.ts.map +1 -0
- package/dist/types/storage/blockchain/common.d.ts +8 -0
- package/dist/types/storage/blockchain/common.d.ts.map +1 -0
- package/dist/types/storage/blockchain/did-resolver-readonly-storage.d.ts +17 -0
- package/dist/types/storage/blockchain/did-resolver-readonly-storage.d.ts.map +1 -0
- package/dist/types/storage/blockchain/erc20-helper.d.ts +20 -0
- package/dist/types/storage/blockchain/erc20-helper.d.ts.map +1 -0
- package/dist/types/storage/blockchain/errors.d.ts +4 -0
- package/dist/types/storage/blockchain/errors.d.ts.map +1 -0
- package/dist/types/storage/blockchain/index.d.ts +8 -0
- package/dist/types/storage/blockchain/index.d.ts.map +1 -0
- package/dist/types/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.d.ts +67 -0
- package/dist/types/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.d.ts.map +1 -0
- package/dist/types/storage/blockchain/onchain-issuer.d.ts +41 -0
- package/dist/types/storage/blockchain/onchain-issuer.d.ts.map +1 -0
- package/dist/types/storage/blockchain/onchain-revocation.d.ts +41 -0
- package/dist/types/storage/blockchain/onchain-revocation.d.ts.map +1 -0
- package/dist/types/storage/blockchain/onchain-zkp-verifier.d.ts +116 -0
- package/dist/types/storage/blockchain/onchain-zkp-verifier.d.ts.map +1 -0
- package/dist/types/storage/blockchain/state.d.ts +127 -0
- package/dist/types/storage/blockchain/state.d.ts.map +1 -0
- package/dist/types/storage/entities/circuitData.d.ts +8 -0
- package/dist/types/storage/entities/circuitData.d.ts.map +1 -0
- package/dist/types/storage/entities/identity.d.ts +17 -0
- package/dist/types/storage/entities/identity.d.ts.map +1 -0
- package/dist/types/storage/entities/index.d.ts +5 -0
- package/dist/types/storage/entities/index.d.ts.map +1 -0
- package/dist/types/storage/entities/mt.d.ts +22 -0
- package/dist/types/storage/entities/mt.d.ts.map +1 -0
- package/dist/types/storage/entities/state.d.ts +92 -0
- package/dist/types/storage/entities/state.d.ts.map +1 -0
- package/dist/types/storage/errors.d.ts +9 -0
- package/dist/types/storage/errors.d.ts.map +1 -0
- package/dist/types/storage/filters/index.d.ts +2 -0
- package/dist/types/storage/filters/index.d.ts.map +1 -0
- package/dist/types/storage/filters/jsonQuery.d.ts +83 -0
- package/dist/types/storage/filters/jsonQuery.d.ts.map +1 -0
- package/dist/types/storage/fs/circuits-storage.d.ts +64 -0
- package/dist/types/storage/fs/circuits-storage.d.ts.map +1 -0
- package/dist/types/storage/fs/index.d.ts +2 -0
- package/dist/types/storage/fs/index.d.ts.map +1 -0
- package/dist/types/storage/index.d.ts +10 -0
- package/dist/types/storage/index.d.ts.map +1 -0
- package/dist/types/storage/indexed-db/data-source.d.ts +44 -0
- package/dist/types/storage/indexed-db/data-source.d.ts.map +1 -0
- package/dist/types/storage/indexed-db/index.d.ts +3 -0
- package/dist/types/storage/indexed-db/index.d.ts.map +1 -0
- package/dist/types/storage/indexed-db/merkletree.d.ts +43 -0
- package/dist/types/storage/indexed-db/merkletree.d.ts.map +1 -0
- package/dist/types/storage/interfaces/circuits.d.ts +26 -0
- package/dist/types/storage/interfaces/circuits.d.ts.map +1 -0
- package/dist/types/storage/interfaces/credentials.d.ts +53 -0
- package/dist/types/storage/interfaces/credentials.d.ts.map +1 -0
- package/dist/types/storage/interfaces/data-source.d.ts +39 -0
- package/dist/types/storage/interfaces/data-source.d.ts.map +1 -0
- package/dist/types/storage/interfaces/data-storage.d.ts +17 -0
- package/dist/types/storage/interfaces/data-storage.d.ts.map +1 -0
- package/dist/types/storage/interfaces/identity.d.ts +70 -0
- package/dist/types/storage/interfaces/identity.d.ts.map +1 -0
- package/dist/types/storage/interfaces/index.d.ts +11 -0
- package/dist/types/storage/interfaces/index.d.ts.map +1 -0
- package/dist/types/storage/interfaces/merkletree.d.ts +44 -0
- package/dist/types/storage/interfaces/merkletree.d.ts.map +1 -0
- package/dist/types/storage/interfaces/onchain-issuer.d.ts +13 -0
- package/dist/types/storage/interfaces/onchain-issuer.d.ts.map +1 -0
- package/dist/types/storage/interfaces/onchain-revocation.d.ts +19 -0
- package/dist/types/storage/interfaces/onchain-revocation.d.ts.map +1 -0
- package/dist/types/storage/interfaces/onchain-zkp-verifier.d.ts +63 -0
- package/dist/types/storage/interfaces/onchain-zkp-verifier.d.ts.map +1 -0
- package/dist/types/storage/interfaces/state.d.ts +74 -0
- package/dist/types/storage/interfaces/state.d.ts.map +1 -0
- package/dist/types/storage/local-storage/data-source.d.ts +41 -0
- package/dist/types/storage/local-storage/data-source.d.ts.map +1 -0
- package/dist/types/storage/local-storage/index.d.ts +3 -0
- package/dist/types/storage/local-storage/index.d.ts.map +1 -0
- package/dist/types/storage/local-storage/merkletree.d.ts +41 -0
- package/dist/types/storage/local-storage/merkletree.d.ts.map +1 -0
- package/dist/types/storage/memory/cache-lru.d.ts +11 -0
- package/dist/types/storage/memory/cache-lru.d.ts.map +1 -0
- package/dist/types/storage/memory/data-source.d.ts +20 -0
- package/dist/types/storage/memory/data-source.d.ts.map +1 -0
- package/dist/types/storage/memory/index.d.ts +4 -0
- package/dist/types/storage/memory/index.d.ts.map +1 -0
- package/dist/types/storage/memory/merkletree.d.ts +48 -0
- package/dist/types/storage/memory/merkletree.d.ts.map +1 -0
- package/dist/types/storage/shared/circuit-storage.d.ts +39 -0
- package/dist/types/storage/shared/circuit-storage.d.ts.map +1 -0
- package/dist/types/storage/shared/credential-storage.d.ts +39 -0
- package/dist/types/storage/shared/credential-storage.d.ts.map +1 -0
- package/dist/types/storage/shared/identity-storage.d.ts +45 -0
- package/dist/types/storage/shared/identity-storage.d.ts.map +1 -0
- package/dist/types/storage/shared/index.d.ts +4 -0
- package/dist/types/storage/shared/index.d.ts.map +1 -0
- package/dist/types/storage/utils.d.ts +4 -0
- package/dist/types/storage/utils.d.ts.map +1 -0
- package/dist/types/utils/compare-func.d.ts +2 -0
- package/dist/types/utils/compare-func.d.ts.map +1 -0
- package/dist/types/utils/did-helper.d.ts +38 -0
- package/dist/types/utils/did-helper.d.ts.map +1 -0
- package/dist/types/utils/encoding.d.ts +25 -0
- package/dist/types/utils/encoding.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +8 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/message-bus.d.ts +63 -0
- package/dist/types/utils/message-bus.d.ts.map +1 -0
- package/dist/types/utils/object.d.ts +10 -0
- package/dist/types/utils/object.d.ts.map +1 -0
- package/dist/types/utils/payments/evm.d.ts +19 -0
- package/dist/types/utils/payments/evm.d.ts.map +1 -0
- package/dist/types/utils/payments/solana.d.ts +88 -0
- package/dist/types/utils/payments/solana.d.ts.map +1 -0
- package/dist/types/verifiable/constants.d.ts +188 -0
- package/dist/types/verifiable/constants.d.ts.map +1 -0
- package/dist/types/verifiable/core-utils.d.ts +87 -0
- package/dist/types/verifiable/core-utils.d.ts.map +1 -0
- package/dist/types/verifiable/credential.d.ts +150 -0
- package/dist/types/verifiable/credential.d.ts.map +1 -0
- package/dist/types/verifiable/index.d.ts +7 -0
- package/dist/types/verifiable/index.d.ts.map +1 -0
- package/dist/types/verifiable/presentation.d.ts +11 -0
- package/dist/types/verifiable/presentation.d.ts.map +1 -0
- package/dist/types/verifiable/proof.d.ts +211 -0
- package/dist/types/verifiable/proof.d.ts.map +1 -0
- package/dist/types/verifiable/schema.d.ts +3 -0
- package/dist/types/verifiable/schema.d.ts.map +1 -0
- package/package.json +104 -0
- package/src/blockchain/index.ts +1 -0
- package/src/blockchain/transaction-service.ts +121 -0
- package/src/circuits/atomic-query-mtp-v2-on-chain.ts +338 -0
- package/src/circuits/atomic-query-mtp-v2.ts +283 -0
- package/src/circuits/atomic-query-sig-v2-on-chain.ts +411 -0
- package/src/circuits/atomic-query-sig-v2.ts +340 -0
- package/src/circuits/atomic-query-v3-on-chain.ts +531 -0
- package/src/circuits/atomic-query-v3.ts +461 -0
- package/src/circuits/auth-v2.ts +159 -0
- package/src/circuits/common.ts +261 -0
- package/src/circuits/comparer.ts +227 -0
- package/src/circuits/index.ts +12 -0
- package/src/circuits/linked-multi-query.ts +180 -0
- package/src/circuits/models.ts +263 -0
- package/src/circuits/state-transition.ts +139 -0
- package/src/credentials/credential-wallet.ts +353 -0
- package/src/credentials/index.ts +11 -0
- package/src/credentials/models.ts +93 -0
- package/src/credentials/rhs.ts +176 -0
- package/src/credentials/status/agent-revocation.ts +69 -0
- package/src/credentials/status/credential-status-publisher.ts +143 -0
- package/src/credentials/status/did-resolver-revocation.ts +24 -0
- package/src/credentials/status/on-chain-revocation.ts +174 -0
- package/src/credentials/status/resolver.ts +81 -0
- package/src/credentials/status/reverse-sparse-merkle-tree.ts +366 -0
- package/src/credentials/status/sparse-merkle-tree.ts +50 -0
- package/src/credentials/utils.ts +36 -0
- package/src/iden3comm/constants.ts +119 -0
- package/src/iden3comm/errors.ts +14 -0
- package/src/iden3comm/handlers/auth.ts +520 -0
- package/src/iden3comm/handlers/common.ts +324 -0
- package/src/iden3comm/handlers/contract-request.ts +367 -0
- package/src/iden3comm/handlers/credential-proposal.ts +371 -0
- package/src/iden3comm/handlers/discovery-protocol.ts +277 -0
- package/src/iden3comm/handlers/fetch.ts +450 -0
- package/src/iden3comm/handlers/index.ts +11 -0
- package/src/iden3comm/handlers/message-handler.ts +165 -0
- package/src/iden3comm/handlers/payment.ts +698 -0
- package/src/iden3comm/handlers/problem-report.ts +41 -0
- package/src/iden3comm/handlers/refresh.ts +138 -0
- package/src/iden3comm/handlers/revocation-status.ts +228 -0
- package/src/iden3comm/index.ts +9 -0
- package/src/iden3comm/packageManager.ts +143 -0
- package/src/iden3comm/packers/index.ts +3 -0
- package/src/iden3comm/packers/jws.ts +225 -0
- package/src/iden3comm/packers/plain.ts +86 -0
- package/src/iden3comm/packers/zkp.ts +243 -0
- package/src/iden3comm/types/index.ts +17 -0
- package/src/iden3comm/types/models.ts +7 -0
- package/src/iden3comm/types/packageManager.ts +112 -0
- package/src/iden3comm/types/packer.ts +190 -0
- package/src/iden3comm/types/protocol/accept-profile.ts +14 -0
- package/src/iden3comm/types/protocol/attachment.ts +12 -0
- package/src/iden3comm/types/protocol/auth.ts +104 -0
- package/src/iden3comm/types/protocol/common.ts +10 -0
- package/src/iden3comm/types/protocol/contract-request.ts +76 -0
- package/src/iden3comm/types/protocol/credentials.ts +96 -0
- package/src/iden3comm/types/protocol/discovery-protocol.ts +49 -0
- package/src/iden3comm/types/protocol/messages.ts +13 -0
- package/src/iden3comm/types/protocol/payment.ts +231 -0
- package/src/iden3comm/types/protocol/problem-report.ts +18 -0
- package/src/iden3comm/types/protocol/proof.ts +25 -0
- package/src/iden3comm/types/protocol/proposal-request.ts +38 -0
- package/src/iden3comm/types/protocol/revocation.ts +23 -0
- package/src/iden3comm/utils/accept-profile.ts +121 -0
- package/src/iden3comm/utils/did.ts +71 -0
- package/src/iden3comm/utils/envelope.ts +101 -0
- package/src/iden3comm/utils/index.ts +4 -0
- package/src/iden3comm/utils/message.ts +41 -0
- package/src/identity/common.ts +69 -0
- package/src/identity/identity-wallet.ts +1592 -0
- package/src/identity/index.ts +2 -0
- package/src/index.ts +16 -0
- package/src/kms/index.ts +4 -0
- package/src/kms/key-providers/bjj-provider.ts +118 -0
- package/src/kms/key-providers/ed25519-provider.ts +105 -0
- package/src/kms/key-providers/index.ts +3 -0
- package/src/kms/key-providers/secp256k1-provider.ts +125 -0
- package/src/kms/kms.ts +173 -0
- package/src/kms/provider-helpers.ts +13 -0
- package/src/kms/store/abstract-key-store.ts +34 -0
- package/src/kms/store/index.ts +5 -0
- package/src/kms/store/indexed-db-key-store.ts +60 -0
- package/src/kms/store/local-storage-key-store.ts +69 -0
- package/src/kms/store/memory-key-store.ts +29 -0
- package/src/kms/store/types.ts +21 -0
- package/src/proof/common.ts +273 -0
- package/src/proof/index.ts +4 -0
- package/src/proof/proof-service.ts +623 -0
- package/src/proof/provers/index.ts +3 -0
- package/src/proof/provers/inputs-generator.ts +627 -0
- package/src/proof/provers/prover.ts +104 -0
- package/src/proof/provers/witness_calculator.ts +315 -0
- package/src/proof/verifiers/index.ts +3 -0
- package/src/proof/verifiers/pub-signals-verifier.ts +730 -0
- package/src/proof/verifiers/query-hash.ts +57 -0
- package/src/proof/verifiers/query.ts +340 -0
- package/src/schema-processor/index.ts +3 -0
- package/src/schema-processor/json/index.ts +2 -0
- package/src/schema-processor/json/parser.ts +256 -0
- package/src/schema-processor/json/validator.ts +67 -0
- package/src/schema-processor/jsonld/cache.ts +49 -0
- package/src/schema-processor/jsonld/index.ts +2 -0
- package/src/schema-processor/jsonld/parser.ts +93 -0
- package/src/schema-processor/utils.ts +84 -0
- package/src/storage/blockchain/abi/CredentialStatusResolver.json +1 -0
- package/src/storage/blockchain/abi/ERC20.json +1 -0
- package/src/storage/blockchain/abi/ERC20Permit.json +1 -0
- package/src/storage/blockchain/abi/IdentityBase.json +1 -0
- package/src/storage/blockchain/abi/State.json +1 -0
- package/src/storage/blockchain/abi/ZkpVerifier.json +789 -0
- package/src/storage/blockchain/common.ts +20 -0
- package/src/storage/blockchain/did-resolver-readonly-storage.ts +90 -0
- package/src/storage/blockchain/erc20-helper.ts +66 -0
- package/src/storage/blockchain/errors.ts +46 -0
- package/src/storage/blockchain/index.ts +7 -0
- package/src/storage/blockchain/onchain-issuer-adapter/non-merklized/version/v0.0.1/onchain-non-merklized-issuer-adapter.ts +327 -0
- package/src/storage/blockchain/onchain-issuer.ts +104 -0
- package/src/storage/blockchain/onchain-revocation.ts +143 -0
- package/src/storage/blockchain/onchain-zkp-verifier.ts +704 -0
- package/src/storage/blockchain/state.ts +471 -0
- package/src/storage/entities/circuitData.ts +7 -0
- package/src/storage/entities/identity.ts +18 -0
- package/src/storage/entities/index.ts +4 -0
- package/src/storage/entities/mt.ts +25 -0
- package/src/storage/entities/state.ts +97 -0
- package/src/storage/errors.ts +8 -0
- package/src/storage/filters/index.ts +1 -0
- package/src/storage/filters/jsonQuery.ts +368 -0
- package/src/storage/fs/circuits-storage.ts +149 -0
- package/src/storage/fs/index.ts +1 -0
- package/src/storage/index.ts +9 -0
- package/src/storage/indexed-db/data-source.ts +58 -0
- package/src/storage/indexed-db/index.ts +2 -0
- package/src/storage/indexed-db/merkletree.ts +140 -0
- package/src/storage/interfaces/circuits.ts +27 -0
- package/src/storage/interfaces/credentials.ts +53 -0
- package/src/storage/interfaces/data-source.ts +41 -0
- package/src/storage/interfaces/data-storage.ts +17 -0
- package/src/storage/interfaces/identity.ts +73 -0
- package/src/storage/interfaces/index.ts +10 -0
- package/src/storage/interfaces/merkletree.ts +52 -0
- package/src/storage/interfaces/onchain-issuer.ts +13 -0
- package/src/storage/interfaces/onchain-revocation.ts +22 -0
- package/src/storage/interfaces/onchain-zkp-verifier.ts +94 -0
- package/src/storage/interfaces/state.ts +81 -0
- package/src/storage/local-storage/data-source.ts +87 -0
- package/src/storage/local-storage/index.ts +2 -0
- package/src/storage/local-storage/merkletree.ts +137 -0
- package/src/storage/memory/cache-lru.ts +30 -0
- package/src/storage/memory/data-source.ts +45 -0
- package/src/storage/memory/index.ts +3 -0
- package/src/storage/memory/merkletree.ts +116 -0
- package/src/storage/shared/circuit-storage.ts +49 -0
- package/src/storage/shared/credential-storage.ts +70 -0
- package/src/storage/shared/identity-storage.ts +82 -0
- package/src/storage/shared/index.ts +3 -0
- package/src/storage/utils.ts +19 -0
- package/src/utils/compare-func.ts +5 -0
- package/src/utils/did-helper.ts +157 -0
- package/src/utils/encoding.ts +47 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/message-bus.ts +88 -0
- package/src/utils/object.ts +52 -0
- package/src/utils/payments/evm.ts +152 -0
- package/src/utils/payments/solana.ts +360 -0
- package/src/verifiable/constants.ts +239 -0
- package/src/verifiable/core-utils.ts +307 -0
- package/src/verifiable/credential.ts +649 -0
- package/src/verifiable/index.ts +6 -0
- package/src/verifiable/presentation.ts +97 -0
- package/src/verifiable/proof.ts +277 -0
- package/src/verifiable/schema.ts +241 -0
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import {
|
|
3
|
+
BJJSignatureProof2021,
|
|
4
|
+
Iden3SparseMerkleTreeProof,
|
|
5
|
+
CredentialStatus,
|
|
6
|
+
RefreshService,
|
|
7
|
+
DisplayMethod
|
|
8
|
+
} from './proof';
|
|
9
|
+
import {
|
|
10
|
+
Claim,
|
|
11
|
+
DID,
|
|
12
|
+
MerklizedRootPosition as MerklizedRootPositionCore,
|
|
13
|
+
IdPosition,
|
|
14
|
+
ClaimOptions,
|
|
15
|
+
getChainId
|
|
16
|
+
} from '@mocanetwork/moca-iden3';
|
|
17
|
+
import { Proof, Hash, rootFromProof, verifyProof } from '@iden3/js-merkletree';
|
|
18
|
+
import { Merklizer, Options } from '@iden3/js-jsonld-merklization';
|
|
19
|
+
import { PublicKey, poseidon } from '@iden3/js-crypto';
|
|
20
|
+
import { CredentialRequest, CredentialStatusResolverRegistry } from '../credentials';
|
|
21
|
+
import { getUserDIDFromCredential } from '../credentials/utils';
|
|
22
|
+
import { byteEncoder, validateDIDDocumentAuth } from '../utils';
|
|
23
|
+
import {
|
|
24
|
+
CredentialStatusType,
|
|
25
|
+
MerklizedRootPosition,
|
|
26
|
+
ProofType,
|
|
27
|
+
SubjectPosition,
|
|
28
|
+
VerifiableConstants
|
|
29
|
+
} from './constants';
|
|
30
|
+
import {
|
|
31
|
+
calculateCoreSchemaHash,
|
|
32
|
+
CoreClaimCreationOptions,
|
|
33
|
+
findCredentialType,
|
|
34
|
+
parseCoreClaimSlots
|
|
35
|
+
} from './core-utils';
|
|
36
|
+
|
|
37
|
+
import { JsonDocumentObject } from '../iden3comm';
|
|
38
|
+
import jsonld from 'jsonld';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* W3C Verifiable credential
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
* @export
|
|
45
|
+
* @class W3CCredential
|
|
46
|
+
*/
|
|
47
|
+
export class W3CCredential {
|
|
48
|
+
id = '';
|
|
49
|
+
'@context': string[] = [];
|
|
50
|
+
type: string[] = [];
|
|
51
|
+
expirationDate?: string;
|
|
52
|
+
refreshService?: RefreshService;
|
|
53
|
+
displayMethod?: DisplayMethod;
|
|
54
|
+
issuanceDate?: string;
|
|
55
|
+
credentialSubject: JsonDocumentObject = {};
|
|
56
|
+
credentialStatus!: CredentialStatus;
|
|
57
|
+
issuer = '';
|
|
58
|
+
credentialSchema!: CredentialSchema;
|
|
59
|
+
proof?: object | unknown[];
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @param issuer - DID of the issuer
|
|
64
|
+
* @param request - Credential request
|
|
65
|
+
* @returns - W3C Credential
|
|
66
|
+
*/
|
|
67
|
+
static fromCredentialRequest(issuer: DID, request: CredentialRequest): W3CCredential {
|
|
68
|
+
if (!request.id) {
|
|
69
|
+
throw new Error('Credential id is required');
|
|
70
|
+
}
|
|
71
|
+
if (!request.context) {
|
|
72
|
+
throw new Error('Credential context is required');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const context = [
|
|
76
|
+
VerifiableConstants.JSONLD_SCHEMA.W3C_CREDENTIAL_2018,
|
|
77
|
+
VerifiableConstants.JSONLD_SCHEMA.IDEN3_CREDENTIAL,
|
|
78
|
+
...request.context
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
const credentialType = [
|
|
82
|
+
VerifiableConstants.CREDENTIAL_TYPE.W3C_VERIFIABLE_CREDENTIAL,
|
|
83
|
+
request.type
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const credentialSubject = request.credentialSubject;
|
|
87
|
+
credentialSubject['type'] = request.type;
|
|
88
|
+
|
|
89
|
+
const cr = new W3CCredential();
|
|
90
|
+
cr.id = request.id;
|
|
91
|
+
cr['@context'] = context;
|
|
92
|
+
cr.type = credentialType;
|
|
93
|
+
cr.credentialSubject = credentialSubject;
|
|
94
|
+
cr.issuer = issuer.string();
|
|
95
|
+
cr.credentialSchema = {
|
|
96
|
+
id: request.credentialSchema,
|
|
97
|
+
type: VerifiableConstants.JSON_SCHEMA_VALIDATOR
|
|
98
|
+
};
|
|
99
|
+
cr.credentialStatus = W3CCredential.buildCredentialStatus(request, issuer);
|
|
100
|
+
|
|
101
|
+
request.expiration && (cr.expirationDate = new Date(request.expiration).toISOString());
|
|
102
|
+
request.refreshService && (cr.refreshService = request.refreshService);
|
|
103
|
+
request.displayMethod && (cr.displayMethod = request.displayMethod);
|
|
104
|
+
request.issuanceDate && (cr.issuanceDate = new Date(request.issuanceDate).toISOString());
|
|
105
|
+
|
|
106
|
+
return cr;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Builds credential status
|
|
111
|
+
* @param {CredentialRequest} request
|
|
112
|
+
* @returns `CredentialStatus`
|
|
113
|
+
*/
|
|
114
|
+
private static buildCredentialStatus(request: CredentialRequest, issuer: DID): CredentialStatus {
|
|
115
|
+
const credentialStatus: CredentialStatus = {
|
|
116
|
+
id: request.revocationOpts.id,
|
|
117
|
+
type: request.revocationOpts.type,
|
|
118
|
+
revocationNonce: request.revocationOpts.nonce
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
switch (request.revocationOpts.type) {
|
|
122
|
+
case CredentialStatusType.SparseMerkleTreeProof:
|
|
123
|
+
return {
|
|
124
|
+
...credentialStatus,
|
|
125
|
+
id: `${credentialStatus.id.replace(/\/$/, '')}/${credentialStatus.revocationNonce}`
|
|
126
|
+
};
|
|
127
|
+
case CredentialStatusType.Iden3ReverseSparseMerkleTreeProof:
|
|
128
|
+
return {
|
|
129
|
+
...credentialStatus,
|
|
130
|
+
id: request.revocationOpts.issuerState
|
|
131
|
+
? `${credentialStatus.id.replace(/\/$/, '')}/node?state=${
|
|
132
|
+
request.revocationOpts.issuerState
|
|
133
|
+
}`
|
|
134
|
+
: `${credentialStatus.id.replace(/\/$/, '')}`
|
|
135
|
+
};
|
|
136
|
+
case CredentialStatusType.Iden3OnchainSparseMerkleTreeProof2023: {
|
|
137
|
+
const issuerId = DID.idFromDID(issuer);
|
|
138
|
+
const chainId = getChainId(DID.blockchainFromId(issuerId), DID.networkIdFromId(issuerId));
|
|
139
|
+
const searchParams = [
|
|
140
|
+
['revocationNonce', request.revocationOpts.nonce?.toString() || ''],
|
|
141
|
+
['contractAddress', `${chainId}:${request.revocationOpts.id}`],
|
|
142
|
+
['state', request.revocationOpts.issuerState || '']
|
|
143
|
+
]
|
|
144
|
+
.filter(([, value]) => Boolean(value))
|
|
145
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
146
|
+
.join('&');
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
...credentialStatus,
|
|
150
|
+
// `[did]:[methodid]:[chain]:[network]:[id]/credentialStatus?(revocationNonce=value)&[contractAddress=[chainID]:[contractAddress]]&(state=issuerState)`
|
|
151
|
+
id: `${issuer.string()}/credentialStatus?${searchParams}`
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
default:
|
|
155
|
+
return credentialStatus;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
toJSON() {
|
|
160
|
+
return {
|
|
161
|
+
...this,
|
|
162
|
+
proof: Array.isArray(this.proof)
|
|
163
|
+
? this.proof.map(this.proofToJSON)
|
|
164
|
+
: this.proofToJSON(this.proof)
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
private proofToJSON(p: any) {
|
|
169
|
+
if (!p) {
|
|
170
|
+
return p;
|
|
171
|
+
}
|
|
172
|
+
if (!p['type']) {
|
|
173
|
+
throw new Error('proof must have type property');
|
|
174
|
+
}
|
|
175
|
+
switch (p.type) {
|
|
176
|
+
case ProofType.Iden3SparseMerkleTreeProof:
|
|
177
|
+
case ProofType.BJJSignature:
|
|
178
|
+
return p.toJSON();
|
|
179
|
+
default:
|
|
180
|
+
return p;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
private static proofFromJSON = (p: any) => {
|
|
185
|
+
if (!p) {
|
|
186
|
+
return p;
|
|
187
|
+
}
|
|
188
|
+
if (!p['type']) {
|
|
189
|
+
throw new Error('proof must have type property');
|
|
190
|
+
}
|
|
191
|
+
switch (p.type) {
|
|
192
|
+
case ProofType.Iden3SparseMerkleTreeProof:
|
|
193
|
+
return Iden3SparseMerkleTreeProof.fromJSON(p);
|
|
194
|
+
case ProofType.BJJSignature:
|
|
195
|
+
return BJJSignatureProof2021.fromJSON(p);
|
|
196
|
+
default:
|
|
197
|
+
return p;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
static fromJSON(obj: any): W3CCredential {
|
|
202
|
+
const w = new W3CCredential();
|
|
203
|
+
Object.assign(w, structuredClone(obj));
|
|
204
|
+
w.proof = Array.isArray(w.proof)
|
|
205
|
+
? w.proof.map(W3CCredential.proofFromJSON)
|
|
206
|
+
: W3CCredential.proofFromJSON(w.proof);
|
|
207
|
+
|
|
208
|
+
return w;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* merklization of the verifiable credential
|
|
212
|
+
*
|
|
213
|
+
* @returns `Promise<Merklizer>`
|
|
214
|
+
*/
|
|
215
|
+
async merklize(opts?: Options): Promise<Merklizer> {
|
|
216
|
+
const credential = { ...this };
|
|
217
|
+
delete credential.proof;
|
|
218
|
+
return await Merklizer.merklizeJSONLD(JSON.stringify(credential), opts);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* gets core claim representation from credential proof
|
|
223
|
+
*
|
|
224
|
+
* @param {ProofType} proofType
|
|
225
|
+
* @returns {*} {(Claim | undefined)}
|
|
226
|
+
*/
|
|
227
|
+
getCoreClaimFromProof(proofType: ProofType): Claim | undefined {
|
|
228
|
+
if (Array.isArray(this.proof)) {
|
|
229
|
+
for (const proof of this.proof) {
|
|
230
|
+
const { claim, proofType: extractedProofType } = extractProof(proof);
|
|
231
|
+
if (proofType === extractedProofType) {
|
|
232
|
+
return claim;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
} else if (typeof this.proof === 'object') {
|
|
236
|
+
const { claim, proofType: extractedProofType } = extractProof(this.proof);
|
|
237
|
+
if (extractedProofType == proofType) {
|
|
238
|
+
return claim;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* gets core claim representation from W3CCredential
|
|
246
|
+
*
|
|
247
|
+
* @param {CoreClaimParsingOptions} [opts] - options to create core claim
|
|
248
|
+
* @returns {*} {(Promise<Claim>)}
|
|
249
|
+
*/
|
|
250
|
+
async toCoreClaim(opts?: CoreClaimCreationOptions): Promise<Claim> {
|
|
251
|
+
if (!opts) {
|
|
252
|
+
opts = {
|
|
253
|
+
revNonce: 0,
|
|
254
|
+
version: 0,
|
|
255
|
+
subjectPosition: SubjectPosition.Index,
|
|
256
|
+
merklizedRootPosition: MerklizedRootPosition.None,
|
|
257
|
+
updatable: false,
|
|
258
|
+
merklizeOpts: {}
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const mz = await this.merklize(opts.merklizeOpts);
|
|
263
|
+
|
|
264
|
+
const credentialType = findCredentialType(mz);
|
|
265
|
+
|
|
266
|
+
const subjectId = this.credentialSubject['id'];
|
|
267
|
+
|
|
268
|
+
const ldCtx = await jsonld.processContext(
|
|
269
|
+
await jsonld.processContext(null, null, {}),
|
|
270
|
+
this['@context'] as jsonld.JsonLdDocument,
|
|
271
|
+
mz.options
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
const { slots, nonMerklized } = await parseCoreClaimSlots(
|
|
275
|
+
ldCtx as unknown as { mappings: Map<string, Record<string, unknown>> },
|
|
276
|
+
mz,
|
|
277
|
+
credentialType
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
// if schema is for non merklized credential, root position must be set to none ('')
|
|
281
|
+
// otherwise default position for merklized position is index.
|
|
282
|
+
if (nonMerklized && opts.merklizedRootPosition !== MerklizedRootPosition.None) {
|
|
283
|
+
throw new Error('merklized root position is not supported for non-merklized claims');
|
|
284
|
+
}
|
|
285
|
+
if (!nonMerklized && opts.merklizedRootPosition === MerklizedRootPosition.None) {
|
|
286
|
+
opts.merklizedRootPosition = MerklizedRootPosition.Index;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const schemaHash = calculateCoreSchemaHash(byteEncoder.encode(credentialType));
|
|
290
|
+
const claim = Claim.newClaim(
|
|
291
|
+
schemaHash,
|
|
292
|
+
ClaimOptions.withIndexDataBytes(slots.indexA, slots.indexB),
|
|
293
|
+
ClaimOptions.withValueDataBytes(slots.valueA, slots.valueB),
|
|
294
|
+
ClaimOptions.withRevocationNonce(BigInt(opts.revNonce)),
|
|
295
|
+
ClaimOptions.withVersion(opts.version)
|
|
296
|
+
);
|
|
297
|
+
|
|
298
|
+
if (opts.updatable) {
|
|
299
|
+
claim.setFlagUpdatable(opts.updatable);
|
|
300
|
+
}
|
|
301
|
+
if (this.expirationDate) {
|
|
302
|
+
claim.setExpirationDate(new Date(this.expirationDate));
|
|
303
|
+
}
|
|
304
|
+
if (subjectId) {
|
|
305
|
+
const did = DID.parse(subjectId.toString());
|
|
306
|
+
const id = DID.idFromDID(did);
|
|
307
|
+
|
|
308
|
+
switch (opts.subjectPosition) {
|
|
309
|
+
case '':
|
|
310
|
+
case SubjectPosition.Index:
|
|
311
|
+
claim.setIndexId(id);
|
|
312
|
+
break;
|
|
313
|
+
case SubjectPosition.Value:
|
|
314
|
+
claim.setValueId(id);
|
|
315
|
+
break;
|
|
316
|
+
default:
|
|
317
|
+
throw new Error('unknown subject position');
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
switch (opts.merklizedRootPosition) {
|
|
322
|
+
case MerklizedRootPosition.Index: {
|
|
323
|
+
const mk = await this.merklize(opts.merklizeOpts);
|
|
324
|
+
claim.setIndexMerklizedRoot((await mk.root()).bigInt());
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case MerklizedRootPosition.Value: {
|
|
328
|
+
const mk = await this.merklize(opts.merklizeOpts);
|
|
329
|
+
claim.setValueMerklizedRoot((await mk.root()).bigInt());
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
case MerklizedRootPosition.None:
|
|
333
|
+
break;
|
|
334
|
+
default:
|
|
335
|
+
throw new Error('unknown merklized root position');
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
return claim;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* checks BJJSignatureProof2021 in W3C VC
|
|
343
|
+
*
|
|
344
|
+
* @returns BJJSignatureProof2021 | undefined
|
|
345
|
+
*/
|
|
346
|
+
getBJJSignature2021Proof(): BJJSignatureProof2021 | undefined {
|
|
347
|
+
const proof = this.getProofByType(ProofType.BJJSignature);
|
|
348
|
+
if (proof) {
|
|
349
|
+
return proof as BJJSignatureProof2021;
|
|
350
|
+
}
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* checks Iden3SparseMerkleTreeProof in W3C VC
|
|
356
|
+
*
|
|
357
|
+
* @returns {*} {(Iden3SparseMerkleTreeProof | undefined)}
|
|
358
|
+
*/
|
|
359
|
+
getIden3SparseMerkleTreeProof(): Iden3SparseMerkleTreeProof | undefined {
|
|
360
|
+
const proof = this.getProofByType(ProofType.Iden3SparseMerkleTreeProof);
|
|
361
|
+
if (proof) {
|
|
362
|
+
return proof as Iden3SparseMerkleTreeProof;
|
|
363
|
+
}
|
|
364
|
+
return undefined;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Verify credential proof
|
|
369
|
+
*
|
|
370
|
+
* @returns {*} {(boolean)}
|
|
371
|
+
*/
|
|
372
|
+
async verifyProof(
|
|
373
|
+
proofType: ProofType,
|
|
374
|
+
resolverURL: string,
|
|
375
|
+
opts?: W3CProofVerificationOptions
|
|
376
|
+
): Promise<boolean> {
|
|
377
|
+
const proof = this.getProofByType(proofType);
|
|
378
|
+
if (!proof) {
|
|
379
|
+
throw new Error('proof not found');
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
const coreClaim = this.getCoreClaimFromProof(proofType);
|
|
383
|
+
if (!coreClaim) {
|
|
384
|
+
throw new Error(`can't get core claim`);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
await this.verifyCoreClaimMatch(coreClaim, opts?.merklizeOptions);
|
|
388
|
+
|
|
389
|
+
switch (proofType) {
|
|
390
|
+
case ProofType.BJJSignature: {
|
|
391
|
+
if (!opts?.credStatusResolverRegistry) {
|
|
392
|
+
throw new Error('please provide credential status resolver registry');
|
|
393
|
+
}
|
|
394
|
+
const bjjProof = proof as BJJSignatureProof2021;
|
|
395
|
+
const userDID = getUserDIDFromCredential(bjjProof.issuerData.id, this);
|
|
396
|
+
return this.verifyBJJSignatureProof(
|
|
397
|
+
bjjProof,
|
|
398
|
+
coreClaim,
|
|
399
|
+
resolverURL,
|
|
400
|
+
userDID,
|
|
401
|
+
opts.credStatusResolverRegistry
|
|
402
|
+
);
|
|
403
|
+
}
|
|
404
|
+
case ProofType.Iden3SparseMerkleTreeProof: {
|
|
405
|
+
return this.verifyIden3SparseMerkleTreeProof(
|
|
406
|
+
proof as Iden3SparseMerkleTreeProof,
|
|
407
|
+
coreClaim,
|
|
408
|
+
resolverURL
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
default: {
|
|
412
|
+
throw new Error('invalid proof type');
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
private async verifyCoreClaimMatch(coreClaim: Claim, merklizeOpts?: Options) {
|
|
418
|
+
let merklizedRootPosition = '';
|
|
419
|
+
|
|
420
|
+
const merklizedPosition = coreClaim.getMerklizedPosition();
|
|
421
|
+
switch (merklizedPosition) {
|
|
422
|
+
case MerklizedRootPositionCore.None:
|
|
423
|
+
merklizedRootPosition = MerklizedRootPosition.None;
|
|
424
|
+
break;
|
|
425
|
+
case MerklizedRootPositionCore.Index:
|
|
426
|
+
merklizedRootPosition = MerklizedRootPosition.Index;
|
|
427
|
+
break;
|
|
428
|
+
case MerklizedRootPositionCore.Value:
|
|
429
|
+
merklizedRootPosition = MerklizedRootPosition.Value;
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
let subjectPosition = '';
|
|
434
|
+
const idPosition = coreClaim.getIdPosition();
|
|
435
|
+
switch (idPosition) {
|
|
436
|
+
case IdPosition.None:
|
|
437
|
+
subjectPosition = SubjectPosition.None;
|
|
438
|
+
break;
|
|
439
|
+
case IdPosition.Index:
|
|
440
|
+
subjectPosition = SubjectPosition.Index;
|
|
441
|
+
break;
|
|
442
|
+
case IdPosition.Value:
|
|
443
|
+
subjectPosition = SubjectPosition.Value;
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
const coreClaimOpts: CoreClaimCreationOptions = {
|
|
448
|
+
revNonce: Number(coreClaim.getRevocationNonce()),
|
|
449
|
+
version: coreClaim.getVersion(),
|
|
450
|
+
merklizedRootPosition,
|
|
451
|
+
subjectPosition,
|
|
452
|
+
updatable: coreClaim.getFlagUpdatable(),
|
|
453
|
+
merklizeOpts: merklizeOpts
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
const credentialCoreClaim = await this.toCoreClaim(coreClaimOpts);
|
|
457
|
+
if (coreClaim.hex() != credentialCoreClaim.hex()) {
|
|
458
|
+
throw new Error('proof generated for another credential');
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
private async verifyBJJSignatureProof(
|
|
463
|
+
proof: BJJSignatureProof2021,
|
|
464
|
+
coreClaim: Claim,
|
|
465
|
+
resolverURL: string,
|
|
466
|
+
userDID: DID,
|
|
467
|
+
credStatusResolverRegistry: CredentialStatusResolverRegistry
|
|
468
|
+
): Promise<boolean> {
|
|
469
|
+
// issuer auth claim
|
|
470
|
+
const authClaim = proof.issuerData.authCoreClaim;
|
|
471
|
+
const rawSlotsInt = authClaim.rawSlotsAsInts();
|
|
472
|
+
const pubKey = new PublicKey([rawSlotsInt[2], rawSlotsInt[3]]);
|
|
473
|
+
|
|
474
|
+
// core claim hash
|
|
475
|
+
const { hi, hv } = coreClaim.hiHv();
|
|
476
|
+
const claimHash = poseidon.hash([hi, hv]);
|
|
477
|
+
const bjjValid = pubKey.verifyPoseidon(claimHash, proof.signature);
|
|
478
|
+
|
|
479
|
+
if (!bjjValid) {
|
|
480
|
+
throw new Error('signature is not valid');
|
|
481
|
+
}
|
|
482
|
+
await validateDIDDocumentAuth(proof.issuerData.id, resolverURL, proof.issuerData.state.value);
|
|
483
|
+
|
|
484
|
+
const credStatusType = proof.issuerData.credentialStatus.type;
|
|
485
|
+
const credStatusResolver = await credStatusResolverRegistry.get(credStatusType);
|
|
486
|
+
if (!credStatusResolver) {
|
|
487
|
+
throw new Error(`please register credential status resolver for ${credStatusType} type`);
|
|
488
|
+
}
|
|
489
|
+
const credStatus = await credStatusResolver.resolve(proof.issuerData.credentialStatus, {
|
|
490
|
+
issuerDID: proof.issuerData.id,
|
|
491
|
+
userDID: userDID
|
|
492
|
+
});
|
|
493
|
+
const stateValid = validateTreeState(credStatus.issuer);
|
|
494
|
+
if (!stateValid) {
|
|
495
|
+
throw new Error(
|
|
496
|
+
'signature proof: invalid tree state of the issuer while checking credential status of singing key'
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
const revocationNonce = BigInt(proof.issuerData.credentialStatus.revocationNonce || 0);
|
|
501
|
+
if (revocationNonce !== proof.issuerData.authCoreClaim.getRevocationNonce()) {
|
|
502
|
+
throw new Error(
|
|
503
|
+
`revocation nonce mismatch: revocation nonce from core representation of auth credential is not the same as in its credential`
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
const proofValid = await verifyProof(
|
|
507
|
+
Hash.fromHex(credStatus.issuer.revocationTreeRoot),
|
|
508
|
+
credStatus.mtp,
|
|
509
|
+
revocationNonce,
|
|
510
|
+
BigInt(0)
|
|
511
|
+
);
|
|
512
|
+
if (!proofValid) {
|
|
513
|
+
throw new Error(`proof validation failed. revNonce=${revocationNonce}`);
|
|
514
|
+
}
|
|
515
|
+
if (credStatus.mtp.existence) {
|
|
516
|
+
throw new Error('signature proof: singing key of the issuer is revoked');
|
|
517
|
+
}
|
|
518
|
+
return true;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
private async verifyIden3SparseMerkleTreeProof(
|
|
522
|
+
proof: Iden3SparseMerkleTreeProof,
|
|
523
|
+
coreClaim: Claim,
|
|
524
|
+
resolverURL: string
|
|
525
|
+
): Promise<boolean> {
|
|
526
|
+
await validateDIDDocumentAuth(proof.issuerData.id, resolverURL, proof.issuerData.state.value);
|
|
527
|
+
// root from proof == issuerData.state.claimsTreeRoot
|
|
528
|
+
const { hi, hv } = coreClaim.hiHv();
|
|
529
|
+
const rootFromProofValue = await rootFromProof(proof.mtp, hi, hv);
|
|
530
|
+
if (!rootFromProofValue.equals(proof.issuerData.state.claimsTreeRoot)) {
|
|
531
|
+
throw new Error(
|
|
532
|
+
'verifyIden3SparseMerkleTreeProof: root from proof not equal to issuer data claims tree root'
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
return true;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
private getProofByType(proofType: ProofType): unknown | undefined {
|
|
539
|
+
if (Array.isArray(this.proof)) {
|
|
540
|
+
for (const proof of this.proof) {
|
|
541
|
+
if ((proof as { [k: string]: ProofType })?.type === proofType) {
|
|
542
|
+
return proof;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
} else if ((this.proof as { [k: string]: ProofType })?.type == proofType) {
|
|
546
|
+
return this.proof;
|
|
547
|
+
}
|
|
548
|
+
return undefined;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/**
|
|
553
|
+
* extracts core claim from Proof and returns Proof Type
|
|
554
|
+
*
|
|
555
|
+
* @param {object} proof - proof of vc
|
|
556
|
+
* @returns {*} {{ claim: Claim; proofType: ProofType }}
|
|
557
|
+
*/
|
|
558
|
+
export function extractProof(proof: object): { claim: Claim; proofType: ProofType } {
|
|
559
|
+
if (proof instanceof Iden3SparseMerkleTreeProof) {
|
|
560
|
+
return {
|
|
561
|
+
claim: proof.coreClaim,
|
|
562
|
+
proofType: ProofType.Iden3SparseMerkleTreeProof
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
if (proof instanceof BJJSignatureProof2021) {
|
|
566
|
+
return { claim: proof.coreClaim, proofType: ProofType.BJJSignature };
|
|
567
|
+
}
|
|
568
|
+
if (typeof proof === 'object') {
|
|
569
|
+
const p = proof as { type: ProofType; coreClaim: string | Claim };
|
|
570
|
+
const defaultProofType: ProofType = p.type;
|
|
571
|
+
if (!defaultProofType) {
|
|
572
|
+
throw new Error('proof type is not specified');
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (!p.coreClaim) {
|
|
576
|
+
throw new Error(`coreClaim field is not defined in proof type ${defaultProofType}`);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
const coreClaim = p.coreClaim instanceof Claim ? p.coreClaim : new Claim().fromHex(p.coreClaim);
|
|
580
|
+
|
|
581
|
+
return { claim: coreClaim, proofType: defaultProofType as ProofType };
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
throw new Error('proof format is not supported');
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* validate tree state by recalculating poseidon hash of roots and comparing with state
|
|
589
|
+
*
|
|
590
|
+
* @param {Issuer} treeState - issuer struct
|
|
591
|
+
* @returns {boolean}
|
|
592
|
+
*/
|
|
593
|
+
export function validateTreeState(treeState: Issuer) {
|
|
594
|
+
const ctrHash = treeState.claimsTreeRoot ? Hash.fromHex(treeState.claimsTreeRoot) : new Hash();
|
|
595
|
+
const rtrHash = treeState.revocationTreeRoot
|
|
596
|
+
? Hash.fromHex(treeState.revocationTreeRoot)
|
|
597
|
+
: new Hash();
|
|
598
|
+
const rorHash = treeState.rootOfRoots ? Hash.fromHex(treeState.rootOfRoots) : new Hash();
|
|
599
|
+
const wantState = poseidon.hash([ctrHash.bigInt(), rtrHash.bigInt(), rorHash.bigInt()]);
|
|
600
|
+
|
|
601
|
+
const stateHash = treeState.state ? Hash.fromHex(treeState.state) : new Hash();
|
|
602
|
+
return wantState === stateHash.bigInt();
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Credential schema vc
|
|
607
|
+
*
|
|
608
|
+
* @public
|
|
609
|
+
* @interface CredentialSchema
|
|
610
|
+
*/
|
|
611
|
+
export interface CredentialSchema {
|
|
612
|
+
id: string;
|
|
613
|
+
type: string;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Issuer tree information
|
|
618
|
+
*
|
|
619
|
+
* @public
|
|
620
|
+
* @interface Issuer
|
|
621
|
+
*/
|
|
622
|
+
export interface Issuer {
|
|
623
|
+
state?: string;
|
|
624
|
+
rootOfRoots?: string;
|
|
625
|
+
claimsTreeRoot?: string;
|
|
626
|
+
revocationTreeRoot?: string;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
*
|
|
631
|
+
* RevocationStatus status of revocation nonce. Info required to check revocation state of claim in circuits
|
|
632
|
+
* @public
|
|
633
|
+
* @interface RevocationStatus
|
|
634
|
+
*/
|
|
635
|
+
export interface RevocationStatus {
|
|
636
|
+
mtp: Proof;
|
|
637
|
+
issuer: Issuer;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
*
|
|
642
|
+
* Proof verification options
|
|
643
|
+
* @public
|
|
644
|
+
* @interface W3CProofVerificationOptions
|
|
645
|
+
*/
|
|
646
|
+
export interface W3CProofVerificationOptions {
|
|
647
|
+
credStatusResolverRegistry?: CredentialStatusResolverRegistry;
|
|
648
|
+
merklizeOptions?: Options;
|
|
649
|
+
}
|