From 2c792fe2013d48bcb27c2550d3ffa1377638a479 Mon Sep 17 00:00:00 2001 From: Martin Auer Date: Thu, 2 Mar 2023 14:29:05 +0100 Subject: [PATCH] refactor!: remove getKeyDidMappingByVerificationMethod (#1350) Signed-off-by: martin auer --- packages/core/src/agent/MessageSender.ts | 3 +-- packages/core/src/crypto/WalletKeyPair.ts | 3 +-- .../core/src/modules/connections/DidExchangeProtocol.ts | 3 +-- packages/core/src/modules/dids/domain/DidDocument.ts | 3 +-- packages/core/src/modules/dids/domain/key-type/index.ts | 2 +- .../core/src/modules/dids/domain/key-type/keyDidMapping.ts | 4 ++-- .../core/src/modules/dids/methods/peer/peerDidNumAlgo2.ts | 3 +-- packages/core/src/modules/vc/W3cCredentialService.ts | 7 +++---- .../src/anoncreds/services/IndySdkAnonCredsRegistry.ts | 4 +--- packages/indy-sdk/src/dids/IndySdkSovDidRegistrar.ts | 3 +-- .../indy-vdr/src/anoncreds/IndyVdrAnonCredsRegistry.ts | 4 +--- packages/openid4vc-client/src/OpenId4VcClientService.ts | 3 +-- 12 files changed, 15 insertions(+), 27 deletions(-) diff --git a/packages/core/src/agent/MessageSender.ts b/packages/core/src/agent/MessageSender.ts index 796da85243..a481521e8c 100644 --- a/packages/core/src/agent/MessageSender.ts +++ b/packages/core/src/agent/MessageSender.ts @@ -15,7 +15,7 @@ import { ReturnRouteTypes } from '../decorators/transport/TransportDecorator' import { AriesFrameworkError, MessageSendingError } from '../error' import { Logger } from '../logger' import { DidCommDocumentService } from '../modules/didcomm' -import { getKeyDidMappingByVerificationMethod } from '../modules/dids/domain/key-type' +import { getKeyFromVerificationMethod } from '../modules/dids/domain/key-type' import { didKeyToInstanceOfKey } from '../modules/dids/helpers' import { DidResolverService } from '../modules/dids/services/DidResolverService' import { inject, injectable } from '../plugins' @@ -508,7 +508,6 @@ function getAuthenticationKeys(didDocument: DidDocument) { didDocument.authentication?.map((authentication) => { const verificationMethod = typeof authentication === 'string' ? didDocument.dereferenceVerificationMethod(authentication) : authentication - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) return key }) ?? [] diff --git a/packages/core/src/crypto/WalletKeyPair.ts b/packages/core/src/crypto/WalletKeyPair.ts index 7df8cbb6ad..97c8db0a56 100644 --- a/packages/core/src/crypto/WalletKeyPair.ts +++ b/packages/core/src/crypto/WalletKeyPair.ts @@ -3,7 +3,7 @@ import type { LdKeyPairOptions } from '../modules/vc/models/LdKeyPair' import type { Wallet } from '../wallet' import { VerificationMethod } from '../modules/dids' -import { getKeyDidMappingByVerificationMethod } from '../modules/dids/domain/key-type/keyDidMapping' +import { getKeyFromVerificationMethod } from '../modules/dids/domain/key-type/keyDidMapping' import { LdKeyPair } from '../modules/vc/models/LdKeyPair' import { JsonTransformer } from '../utils' import { MessageValidator } from '../utils/MessageValidator' @@ -43,7 +43,6 @@ export function createWalletKeyPairClass(wallet: Wallet) { public static async from(verificationMethod: VerificationMethod): Promise { const vMethod = JsonTransformer.fromJSON(verificationMethod, VerificationMethod) MessageValidator.validateSync(vMethod) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(vMethod) const key = getKeyFromVerificationMethod(vMethod) return new WalletKeyPair({ diff --git a/packages/core/src/modules/connections/DidExchangeProtocol.ts b/packages/core/src/modules/connections/DidExchangeProtocol.ts index d337a818de..5f83ab1a73 100644 --- a/packages/core/src/modules/connections/DidExchangeProtocol.ts +++ b/packages/core/src/modules/connections/DidExchangeProtocol.ts @@ -25,7 +25,7 @@ import { getNumAlgoFromPeerDid, PeerDidNumAlgo, } from '../dids' -import { getKeyDidMappingByVerificationMethod } from '../dids/domain/key-type' +import { getKeyFromVerificationMethod } from '../dids/domain/key-type' import { didKeyToInstanceOfKey } from '../dids/helpers' import { DidRecord, DidRepository } from '../dids/repository' import { OutOfBandRole } from '../oob/domain/OutOfBandRole' @@ -523,7 +523,6 @@ export class DidExchangeProtocol { typeof authentication === 'string' ? didDocument.dereferenceVerificationMethod(authentication) : authentication - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) return key.publicKeyBase58 }) diff --git a/packages/core/src/modules/dids/domain/DidDocument.ts b/packages/core/src/modules/dids/domain/DidDocument.ts index 5316933952..b4d4525e36 100644 --- a/packages/core/src/modules/dids/domain/DidDocument.ts +++ b/packages/core/src/modules/dids/domain/DidDocument.ts @@ -7,7 +7,7 @@ import { KeyType, Key } from '../../../crypto' import { JsonTransformer } from '../../../utils/JsonTransformer' import { IsStringOrStringArray } from '../../../utils/transformers' -import { getKeyDidMappingByVerificationMethod } from './key-type' +import { getKeyFromVerificationMethod } from './key-type' import { IndyAgentService, ServiceTransformer, DidCommV1Service } from './service' import { VerificationMethodTransformer, VerificationMethod, IsStringOrVerificationMethod } from './verificationMethod' @@ -210,7 +210,6 @@ export function keyReferenceToKey(didDocument: DidDocument, keyId: string) { // for didcomm. In the future we should update this to only be allowed for IndyAgent and DidCommV1 services // as didcomm v2 doesn't have this issue anymore const verificationMethod = didDocument.dereferenceKey(keyId, ['authentication', 'keyAgreement']) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) return key diff --git a/packages/core/src/modules/dids/domain/key-type/index.ts b/packages/core/src/modules/dids/domain/key-type/index.ts index edb319be90..29a61e8d0d 100644 --- a/packages/core/src/modules/dids/domain/key-type/index.ts +++ b/packages/core/src/modules/dids/domain/key-type/index.ts @@ -1,4 +1,4 @@ -export { getKeyDidMappingByKeyType, getKeyDidMappingByVerificationMethod } from './keyDidMapping' +export { getKeyDidMappingByKeyType, getKeyFromVerificationMethod } from './keyDidMapping' export * from './bls12381g2' export * from './bls12381g1' diff --git a/packages/core/src/modules/dids/domain/key-type/keyDidMapping.ts b/packages/core/src/modules/dids/domain/key-type/keyDidMapping.ts index 713817d1bb..bb788c8532 100644 --- a/packages/core/src/modules/dids/domain/key-type/keyDidMapping.ts +++ b/packages/core/src/modules/dids/domain/key-type/keyDidMapping.ts @@ -60,12 +60,12 @@ export function getKeyDidMappingByKeyType(keyType: KeyType) { return keyDid } -export function getKeyDidMappingByVerificationMethod(verificationMethod: VerificationMethod) { +export function getKeyFromVerificationMethod(verificationMethod: VerificationMethod) { const keyDid = verificationMethodKeyDidMapping[verificationMethod.type] if (!keyDid) { throw new Error(`Unsupported key did from verification method type '${verificationMethod.type}'`) } - return keyDid + return keyDid.getKeyFromVerificationMethod(verificationMethod) } diff --git a/packages/core/src/modules/dids/methods/peer/peerDidNumAlgo2.ts b/packages/core/src/modules/dids/methods/peer/peerDidNumAlgo2.ts index 4b26cd5efa..eee20933ed 100644 --- a/packages/core/src/modules/dids/methods/peer/peerDidNumAlgo2.ts +++ b/packages/core/src/modules/dids/methods/peer/peerDidNumAlgo2.ts @@ -6,7 +6,7 @@ import { Key } from '../../../../crypto' import { JsonEncoder, JsonTransformer } from '../../../../utils' import { DidCommV1Service, DidDocumentService } from '../../domain' import { DidDocumentBuilder } from '../../domain/DidDocumentBuilder' -import { getKeyDidMappingByKeyType, getKeyDidMappingByVerificationMethod } from '../../domain/key-type' +import { getKeyFromVerificationMethod, getKeyDidMappingByKeyType } from '../../domain/key-type' import { parseDid } from '../../domain/parse' import { DidKey } from '../key' @@ -116,7 +116,6 @@ export function didDocumentToNumAlgo2Did(didDocument: DidDocument) { // Transform als verification methods into a fingerprint (multibase, multicodec) const encoded = dereferenced.map((entry) => { - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(entry) const key = getKeyFromVerificationMethod(entry) // Encode as '.PurposeFingerprint' diff --git a/packages/core/src/modules/vc/W3cCredentialService.ts b/packages/core/src/modules/vc/W3cCredentialService.ts index c2f2092610..53a57a8717 100644 --- a/packages/core/src/modules/vc/W3cCredentialService.ts +++ b/packages/core/src/modules/vc/W3cCredentialService.ts @@ -18,7 +18,7 @@ import { AriesFrameworkError } from '../../error' import { injectable } from '../../plugins' import { JsonTransformer } from '../../utils' import { VerificationMethod } from '../dids' -import { getKeyDidMappingByVerificationMethod } from '../dids/domain/key-type' +import { getKeyFromVerificationMethod } from '../dids/domain/key-type' import { SignatureSuiteRegistry } from './SignatureSuiteRegistry' import { W3cVcModuleConfig } from './W3cVcModuleConfig' @@ -297,9 +297,8 @@ export class W3cCredentialService { const verificationMethodObject = await documentLoader(verificationMethod) const verificationMethodClass = JsonTransformer.fromJSON(verificationMethodObject.document, VerificationMethod) - const key = getKeyDidMappingByVerificationMethod(verificationMethodClass) - - return key.getKeyFromVerificationMethod(verificationMethodClass) + const key = getKeyFromVerificationMethod(verificationMethodClass) + return key } /** diff --git a/packages/indy-sdk/src/anoncreds/services/IndySdkAnonCredsRegistry.ts b/packages/indy-sdk/src/anoncreds/services/IndySdkAnonCredsRegistry.ts index 8e97b63748..2dbf79cd53 100644 --- a/packages/indy-sdk/src/anoncreds/services/IndySdkAnonCredsRegistry.ts +++ b/packages/indy-sdk/src/anoncreds/services/IndySdkAnonCredsRegistry.ts @@ -13,7 +13,7 @@ import type { import type { AgentContext } from '@aries-framework/core' import type { Schema as IndySdkSchema } from 'indy-sdk' -import { DidsApi, getKeyDidMappingByVerificationMethod } from '@aries-framework/core' +import { DidsApi, getKeyFromVerificationMethod } from '@aries-framework/core' import { IndySdkError, isIndyError } from '../../error' import { IndySdkPoolService } from '../../ledger' @@ -159,7 +159,6 @@ export class IndySdkAnonCredsRegistry implements AnonCredsRegistry { } const verificationMethod = didResult.didDocument.dereferenceKey(`did:sov:${options.schema.issuerId}#key-1`) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const submitterKey = getKeyFromVerificationMethod(verificationMethod) const response = await indySdkPoolService.submitWriteRequest(agentContext, pool, request, submitterKey) @@ -373,7 +372,6 @@ export class IndySdkAnonCredsRegistry implements AnonCredsRegistry { const verificationMethod = didResult.didDocument.dereferenceKey( `did:sov:${options.credentialDefinition.issuerId}#key-1` ) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const submitterKey = getKeyFromVerificationMethod(verificationMethod) const response = await indySdkPoolService.submitWriteRequest(agentContext, pool, request, submitterKey) diff --git a/packages/indy-sdk/src/dids/IndySdkSovDidRegistrar.ts b/packages/indy-sdk/src/dids/IndySdkSovDidRegistrar.ts index c85cf7c0e0..86fb440e67 100644 --- a/packages/indy-sdk/src/dids/IndySdkSovDidRegistrar.ts +++ b/packages/indy-sdk/src/dids/IndySdkSovDidRegistrar.ts @@ -15,12 +15,12 @@ import type { NymRole } from 'indy-sdk' import { DidsApi, - getKeyDidMappingByVerificationMethod, KeyType, isValidPrivateKey, DidDocumentRole, DidRecord, DidRepository, + getKeyFromVerificationMethod, } from '@aries-framework/core' import { IndySdkError } from '../error' @@ -89,7 +89,6 @@ export class IndySdkSovDidRegistrar implements DidRegistrar { } const verificationMethod = didResult.didDocument.dereferenceKey(submitterVerificationMethod) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const submitterSigningKey = getKeyFromVerificationMethod(verificationMethod) const qualifiedSovDid = `did:sov:${unqualifiedIndyDid}` diff --git a/packages/indy-vdr/src/anoncreds/IndyVdrAnonCredsRegistry.ts b/packages/indy-vdr/src/anoncreds/IndyVdrAnonCredsRegistry.ts index 0f492edcb2..4b787414b6 100644 --- a/packages/indy-vdr/src/anoncreds/IndyVdrAnonCredsRegistry.ts +++ b/packages/indy-vdr/src/anoncreds/IndyVdrAnonCredsRegistry.ts @@ -11,7 +11,7 @@ import type { } from '@aries-framework/anoncreds' import type { AgentContext } from '@aries-framework/core' -import { DidsApi, getKeyDidMappingByVerificationMethod } from '@aries-framework/core' +import { getKeyFromVerificationMethod, DidsApi } from '@aries-framework/core' import { GetSchemaRequest, SchemaRequest, @@ -154,7 +154,6 @@ export class IndyVdrAnonCredsRegistry implements AnonCredsRegistry { } const verificationMethod = didResult.didDocument.dereferenceKey(`did:sov:${options.schema.issuerId}#key-1`) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) const response = await pool.submitWriteRequest(agentContext, schemaRequest, key) @@ -348,7 +347,6 @@ export class IndyVdrAnonCredsRegistry implements AnonCredsRegistry { const verificationMethod = didResult.didDocument.dereferenceKey( `did:sov:${options.credentialDefinition.issuerId}#key-1` ) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) const response = await pool.submitWriteRequest(agentContext, credentialDefinitionRequest, key) diff --git a/packages/openid4vc-client/src/OpenId4VcClientService.ts b/packages/openid4vc-client/src/OpenId4VcClientService.ts index 9193b9d219..b2cfdfbafa 100644 --- a/packages/openid4vc-client/src/OpenId4VcClientService.ts +++ b/packages/openid4vc-client/src/OpenId4VcClientService.ts @@ -2,12 +2,12 @@ import type { AgentContext, W3cCredentialRecord } from '@aries-framework/core' import type { EndpointMetadata, Jwt } from '@sphereon/openid4vci-client' import { + getKeyFromVerificationMethod, inject, InjectionSymbols, isJwtAlgorithm, Logger, DidsApi, - getKeyDidMappingByVerificationMethod, AriesFrameworkError, injectable, JsonEncoder, @@ -85,7 +85,6 @@ export class OpenId4VcClientService { // TODO: which purposes are allowed? const verificationMethod = didResult.didDocument.dereferenceKey(kid, ['authentication']) - const { getKeyFromVerificationMethod } = getKeyDidMappingByVerificationMethod(verificationMethod) const key = getKeyFromVerificationMethod(verificationMethod) const payload = JsonEncoder.toBuffer(jwt.payload)