From ba9e8724fa43792420479c2c8ca1c4dc84260618 Mon Sep 17 00:00:00 2001 From: Oleg Date: Mon, 27 Jan 2025 19:19:06 +0400 Subject: [PATCH] Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` --- examples/CHANGELOG.md | 13 +++++ examples/package.json | 8 +-- packages/cheqd-blockchain-api/CHANGELOG.md | 11 ++++ packages/cheqd-blockchain-api/package.json | 4 +- .../cheqd-blockchain-modules/CHANGELOG.md | 11 ++++ .../cheqd-blockchain-modules/package.json | 6 +-- packages/credential-sdk/CHANGELOG.md | 6 +++ packages/credential-sdk/package.json | 2 +- .../common/CustomLinkedDataSignature.js | 54 +++++++++++++++++++ .../vc/crypto/common/DockCryptoSignature.js | 54 ------------------- packages/dock-blockchain-api/CHANGELOG.md | 11 ++++ packages/dock-blockchain-api/package.json | 4 +- packages/dock-blockchain-modules/CHANGELOG.md | 11 ++++ packages/dock-blockchain-modules/package.json | 6 +-- 14 files changed, 132 insertions(+), 69 deletions(-) diff --git a/examples/CHANGELOG.md b/examples/CHANGELOG.md index 5b9df5778..75915fa9c 100644 --- a/examples/CHANGELOG.md +++ b/examples/CHANGELOG.md @@ -1,5 +1,18 @@ # @docknetwork/sdk-examples +## 0.15.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + +### Patch Changes + +- Updated dependencies + - @docknetwork/dock-blockchain-modules@0.21.0 + - @docknetwork/dock-blockchain-api@0.17.0 + - @docknetwork/credential-sdk@0.32.0 + ## 0.14.0 ### Minor Changes diff --git a/examples/package.json b/examples/package.json index c554d07ca..df5b0e497 100644 --- a/examples/package.json +++ b/examples/package.json @@ -2,7 +2,7 @@ "name": "@docknetwork/sdk-examples", "private": true, "type": "module", - "version": "0.14.0", + "version": "0.15.0", "scripts": { "bbs-dock-example": "babel-node ./bbs-dock.js", "claim-deduction-example": "babel-node ./claim-deduction.js", @@ -19,9 +19,9 @@ "lint": "eslint \"*.js\"" }, "dependencies": { - "@docknetwork/credential-sdk": "0.31.0", - "@docknetwork/dock-blockchain-api": "0.16.0", - "@docknetwork/dock-blockchain-modules": "0.20.0" + "@docknetwork/credential-sdk": "0.32.0", + "@docknetwork/dock-blockchain-api": "0.17.0", + "@docknetwork/dock-blockchain-modules": "0.21.0" }, "devDependencies": { "babel-eslint": "^10.1.0", diff --git a/packages/cheqd-blockchain-api/CHANGELOG.md b/packages/cheqd-blockchain-api/CHANGELOG.md index 83bdcb703..bbea82319 100644 --- a/packages/cheqd-blockchain-api/CHANGELOG.md +++ b/packages/cheqd-blockchain-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @docknetwork/cheqd-blockchain-api +## 0.26.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + +### Patch Changes + +- Updated dependencies + - @docknetwork/credential-sdk@0.32.0 + ## 0.25.0 ### Minor Changes diff --git a/packages/cheqd-blockchain-api/package.json b/packages/cheqd-blockchain-api/package.json index 7f9316f6e..d907ee4ec 100644 --- a/packages/cheqd-blockchain-api/package.json +++ b/packages/cheqd-blockchain-api/package.json @@ -1,6 +1,6 @@ { "name": "@docknetwork/cheqd-blockchain-api", - "version": "0.25.0", + "version": "0.26.0", "license": "MIT", "main": "./dist/esm/index.js", "type": "module", @@ -34,7 +34,7 @@ }, "dependencies": { "@cheqd/sdk": "cjs", - "@docknetwork/credential-sdk": "0.31.0" + "@docknetwork/credential-sdk": "0.32.0" }, "devDependencies": { "@babel/cli": "^7.24.1", diff --git a/packages/cheqd-blockchain-modules/CHANGELOG.md b/packages/cheqd-blockchain-modules/CHANGELOG.md index d9d2b3a40..7baf6923b 100644 --- a/packages/cheqd-blockchain-modules/CHANGELOG.md +++ b/packages/cheqd-blockchain-modules/CHANGELOG.md @@ -1,5 +1,16 @@ # @docknetwork/cheqd-blockchain-modules +## 0.23.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + +### Patch Changes + +- Updated dependencies + - @docknetwork/credential-sdk@0.32.0 + ## 0.22.0 ### Minor Changes diff --git a/packages/cheqd-blockchain-modules/package.json b/packages/cheqd-blockchain-modules/package.json index 9600d7aa7..6c3af3002 100644 --- a/packages/cheqd-blockchain-modules/package.json +++ b/packages/cheqd-blockchain-modules/package.json @@ -1,6 +1,6 @@ { "name": "@docknetwork/cheqd-blockchain-modules", - "version": "0.22.0", + "version": "0.23.0", "type": "module", "license": "MIT", "main": "./dist/esm/index.js", @@ -33,7 +33,7 @@ "node": ">=18.0.0" }, "dependencies": { - "@docknetwork/credential-sdk": "0.31.0" + "@docknetwork/credential-sdk": "0.32.0" }, "devDependencies": { "@babel/cli": "^7.24.1", @@ -42,7 +42,7 @@ "@babel/plugin-syntax-import-attributes": "^7.25.6", "@babel/plugin-transform-modules-commonjs": "^7.24.1", "@babel/preset-env": "^7.24.3", - "@docknetwork/cheqd-blockchain-api": "0.25.0", + "@docknetwork/cheqd-blockchain-api": "0.26.0", "@rollup/plugin-alias": "^4.0.2", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^24.0.0", diff --git a/packages/credential-sdk/CHANGELOG.md b/packages/credential-sdk/CHANGELOG.md index 1f6e27568..3d0924707 100644 --- a/packages/credential-sdk/CHANGELOG.md +++ b/packages/credential-sdk/CHANGELOG.md @@ -1,5 +1,11 @@ # @docknetwork/credential-sdk +## 0.32.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + ## 0.31.0 ### Minor Changes diff --git a/packages/credential-sdk/package.json b/packages/credential-sdk/package.json index 5daa04594..586b8d6cc 100644 --- a/packages/credential-sdk/package.json +++ b/packages/credential-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@docknetwork/credential-sdk", - "version": "0.31.0", + "version": "0.32.0", "license": "MIT", "type": "module", "files": [ diff --git a/packages/credential-sdk/src/vc/crypto/common/CustomLinkedDataSignature.js b/packages/credential-sdk/src/vc/crypto/common/CustomLinkedDataSignature.js index 0e19b1340..3ee9ecd96 100644 --- a/packages/credential-sdk/src/vc/crypto/common/CustomLinkedDataSignature.js +++ b/packages/credential-sdk/src/vc/crypto/common/CustomLinkedDataSignature.js @@ -1,6 +1,8 @@ import jsigs from 'jsonld-signatures'; import base58btc from 'bs58'; import base64url from 'base64url'; +import jsonld from 'jsonld'; +import { possibleVerificationMethodRefs } from '../../../types/did/document/verification-method-ref'; import { createJws } from '../../jws'; const MULTIBASE_BASE58BTC_HEADER = 'z'; @@ -27,6 +29,58 @@ export default class CustomLinkedDataSignature extends jsigs.suites this.useProofValue = config.useProofValue || false; } + /** + * @param document {object} to be signed. + * @param proof {object} + * @param documentLoader {function} + */ + static async getVerificationMethod({ proof, documentLoader }) { + let { verificationMethod } = proof; + if (typeof verificationMethod === 'object') { + verificationMethod = verificationMethod.id; + } + if (!verificationMethod) { + throw new Error('No "verificationMethod" found in proof.'); + } + + // Note: `expansionMap` is intentionally not passed; we can safely drop + // properties here and must allow for it + const result = await jsonld.frame( + verificationMethod, + { + '@context': jsigs.SECURITY_CONTEXT_URL, + '@embed': '@always', + id: possibleVerificationMethodRefs(verificationMethod), + }, + { + documentLoader, + compactToRelative: false, + expandContext: jsigs.SECURITY_CONTEXT_URL, + }, + ); + + if (!result) { + throw new Error(`Verification method ${verificationMethod} not found.`); + } + // ensure verification method has not been revoked + if (result.revoked !== undefined) { + throw new Error('The verification method has been revoked.'); + } + return result; + } + + /** + * @param document {object} to be signed. + * @param proof {object} + * @param documentLoader {function} + */ + async getVerificationMethod({ proof, documentLoader }) { + return this.constructor.getVerificationMethod({ + proof, + documentLoader, + }); + } + /** * Verifies the proof signature against the given data. * diff --git a/packages/credential-sdk/src/vc/crypto/common/DockCryptoSignature.js b/packages/credential-sdk/src/vc/crypto/common/DockCryptoSignature.js index bd532bd9d..98b2741b1 100644 --- a/packages/credential-sdk/src/vc/crypto/common/DockCryptoSignature.js +++ b/packages/credential-sdk/src/vc/crypto/common/DockCryptoSignature.js @@ -4,7 +4,6 @@ import { DefaultSchemaParsingOpts, } from '@docknetwork/crypto-wasm-ts'; -import jsonld from 'jsonld'; import jsigs from 'jsonld-signatures'; import stringify from 'json-stringify-deterministic'; @@ -13,7 +12,6 @@ import { u8aToU8a } from '../../../utils/bytes'; import { withExtendedStaticProperties } from '../../../utils/inheritance'; import CustomLinkedDataSignature from './CustomLinkedDataSignature'; import { deepClone } from '../../../utils/misc'; -import { possibleVerificationMethodRefs } from '../../../types/did/document/verification-method-ref'; const SUITE_CONTEXT_URL = 'https://www.w3.org/2018/credentials/v1'; @@ -531,58 +529,6 @@ export default withExtendedStaticProperties( return newSchemaJson; } - /** - * @param document {object} to be signed. - * @param proof {object} - * @param documentLoader {function} - */ - static async getVerificationMethod({ proof, documentLoader }) { - let { verificationMethod } = proof; - if (typeof verificationMethod === 'object') { - verificationMethod = verificationMethod.id; - } - if (!verificationMethod) { - throw new Error('No "verificationMethod" found in proof.'); - } - - // Note: `expansionMap` is intentionally not passed; we can safely drop - // properties here and must allow for it - const result = await jsonld.frame( - verificationMethod, - { - '@context': jsigs.SECURITY_CONTEXT_URL, - '@embed': '@always', - id: possibleVerificationMethodRefs(verificationMethod), - }, - { - documentLoader, - compactToRelative: false, - expandContext: jsigs.SECURITY_CONTEXT_URL, - }, - ); - - if (!result) { - throw new Error(`Verification method ${verificationMethod} not found.`); - } - // ensure verification method has not been revoked - if (result.revoked !== undefined) { - throw new Error('The verification method has been revoked.'); - } - return result; - } - - /** - * @param document {object} to be signed. - * @param proof {object} - * @param documentLoader {function} - */ - async getVerificationMethod({ proof, documentLoader }) { - return this.constructor.getVerificationMethod({ - proof, - documentLoader, - }); - } - /** * Generate object with `sign` method * @param keypair diff --git a/packages/dock-blockchain-api/CHANGELOG.md b/packages/dock-blockchain-api/CHANGELOG.md index eda4fb82a..4ce052676 100644 --- a/packages/dock-blockchain-api/CHANGELOG.md +++ b/packages/dock-blockchain-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @docknetwork/dock-blockchain-api +## 0.17.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + +### Patch Changes + +- Updated dependencies + - @docknetwork/credential-sdk@0.32.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/dock-blockchain-api/package.json b/packages/dock-blockchain-api/package.json index 8dd044085..fe1b27178 100644 --- a/packages/dock-blockchain-api/package.json +++ b/packages/dock-blockchain-api/package.json @@ -1,6 +1,6 @@ { "name": "@docknetwork/dock-blockchain-api", - "version": "0.16.0", + "version": "0.17.0", "license": "MIT", "main": "./dist/esm/index.js", "type": "module", @@ -89,7 +89,7 @@ "@polkadot/api": "10.12.4" }, "dependencies": { - "@docknetwork/credential-sdk": "0.31.0", + "@docknetwork/credential-sdk": "0.32.0", "@docknetwork/node-types": "^0.17.0", "@juanelas/base64": "^1.0.5", "@polkadot/api": "10.12.4", diff --git a/packages/dock-blockchain-modules/CHANGELOG.md b/packages/dock-blockchain-modules/CHANGELOG.md index d32489990..d8d6ef96f 100644 --- a/packages/dock-blockchain-modules/CHANGELOG.md +++ b/packages/dock-blockchain-modules/CHANGELOG.md @@ -1,5 +1,16 @@ # @docknetwork/dock-blockchain-modules +## 0.21.0 + +### Minor Changes + +- Move `getVerificationMethod` logic to the `CustomLinkedDataSignature` + +### Patch Changes + +- Updated dependencies + - @docknetwork/credential-sdk@0.32.0 + ## 0.20.0 ### Minor Changes diff --git a/packages/dock-blockchain-modules/package.json b/packages/dock-blockchain-modules/package.json index a516dd5a5..0416c35dd 100644 --- a/packages/dock-blockchain-modules/package.json +++ b/packages/dock-blockchain-modules/package.json @@ -1,6 +1,6 @@ { "name": "@docknetwork/dock-blockchain-modules", - "version": "0.20.0", + "version": "0.21.0", "license": "MIT", "type": "module", "main": "./dist/esm/index.js", @@ -33,7 +33,7 @@ "node": ">=18.0.0" }, "dependencies": { - "@docknetwork/credential-sdk": "0.31.0" + "@docknetwork/credential-sdk": "0.32.0" }, "devDependencies": { "@babel/cli": "^7.24.1", @@ -42,7 +42,7 @@ "@babel/plugin-syntax-import-attributes": "^7.25.6", "@babel/plugin-transform-modules-commonjs": "^7.24.1", "@babel/preset-env": "^7.24.3", - "@docknetwork/dock-blockchain-api": "0.16.0", + "@docknetwork/dock-blockchain-api": "0.17.0", "@rollup/plugin-alias": "^4.0.2", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^24.0.0",