@sphereon/ssi-sdk-ext.did-provider-key 0.34.1-next.91 → 0.36.1-feat.SSISDK.83.11

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/dist/index.cjs CHANGED
@@ -44,6 +44,7 @@ var import_multibase = __toESM(require("multibase"), 1);
44
44
  var import_multicodec = __toESM(require("multicodec"), 1);
45
45
  var u8a = __toESM(require("uint8arrays"), 1);
46
46
  var { fromString, toString } = u8a;
47
+ var PROVIDER_NAME = "Sphereon Key DID Provider";
47
48
  var debug = (0, import_debug.default)("did-provider-key");
48
49
  var keyCodecs = {
49
50
  RSA: "rsa-pub",
@@ -67,6 +68,7 @@ var SphereonKeyDidProvider = class extends import_did_manager.AbstractIdentifier
67
68
  let codecName = options?.codecName?.toUpperCase() === "EBSI" ? import_ssi_sdk_ext.JWK_JCS_PUB_NAME : options?.codecName;
68
69
  const keyType = options?.type ?? options?.key?.type ?? (codecName === import_ssi_sdk_ext.JWK_JCS_PUB_NAME ? "Secp256r1" : "Secp256k1");
69
70
  const key = await (0, import_ssi_sdk_ext.importProvidedOrGeneratedKey)({
71
+ providerName: PROVIDER_NAME,
70
72
  // @ts-ignore
71
73
  kms: kms ?? this.kms,
72
74
  alias,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/SphereonKeyDidProvider.ts","../src/KeyDidResolver.ts"],"sourcesContent":["export { SphereonKeyDidProvider } from './SphereonKeyDidProvider'\nexport { getDidKeyResolver } from './KeyDidResolver'\n","import {\n importProvidedOrGeneratedKey,\n JWK_JCS_PUB_NAME,\n JWK_JCS_PUB_PREFIX,\n jwkJcsEncode,\n JwkKeyUse,\n TKeyType,\n toJwk,\n toRawCompressedHexPublicKey,\n} from '@sphereon/ssi-sdk-ext.key-utils'\nimport { IAgentContext, IIdentifier, IKey, IKeyManager, IService } from '@veramo/core'\nimport { AbstractIdentifierProvider } from '@veramo/did-manager'\nimport Debug from 'debug'\nimport Multibase from 'multibase'\nimport Multicodec from 'multicodec'\n// @ts-ignore\nimport * as u8a from 'uint8arrays'\nconst { fromString, toString } = u8a\n\nconst debug = Debug('did-provider-key')\n\ntype IContext = IAgentContext<IKeyManager>\n\nconst keyCodecs = {\n RSA: 'rsa-pub',\n Ed25519: 'ed25519-pub',\n X25519: 'x25519-pub',\n Secp256k1: 'secp256k1-pub',\n Secp256r1: 'p256-pub',\n Bls12381G1: 'bls12_381-g1-pub',\n Bls12381G2: 'bls12_381-g2-pub',\n} as const\n\nexport class SphereonKeyDidProvider extends AbstractIdentifierProvider {\n private readonly kms?: string\n\n constructor(options: { defaultKms?: string }) {\n super()\n this.kms = options.defaultKms\n }\n\n async createIdentifier(\n {\n kms,\n alias,\n options,\n }: {\n kms?: string\n alias?: string\n options?: {\n type?: TKeyType\n codecName?: 'EBSI' | 'jwk_jcs-pub' | Multicodec.CodecName\n key?: {\n type?: Exclude<TKeyType, 'Secp384r1' | 'Secp521r1'>\n privateKeyHex: string\n }\n }\n },\n context: IContext\n ): Promise<Omit<IIdentifier, 'provider'>> {\n let codecName = (options?.codecName?.toUpperCase() === 'EBSI' ? (JWK_JCS_PUB_NAME as Multicodec.CodecName) : options?.codecName) as\n | CodeNameType\n | undefined\n const keyType = (options?.type ?? options?.key?.type ?? (codecName === JWK_JCS_PUB_NAME ? 'Secp256r1' : 'Secp256k1')) as Exclude<\n TKeyType,\n 'Secp384r1' | 'Secp521r1'\n >\n // console.log(`keytype: ${keyType}, codecName: ${codecName}`)\n\n const key = await importProvidedOrGeneratedKey(\n {\n // @ts-ignore\n kms: kms ?? this.kms,\n alias: alias,\n options: { ...options, type: keyType },\n },\n context\n )\n\n let methodSpecificId: string | undefined\n\n // did:key uses compressed pub keys\n const compressedPublicKeyHex = toRawCompressedHexPublicKey(fromString(key.publicKeyHex, 'hex'), key.type)\n if (codecName === JWK_JCS_PUB_NAME) {\n const jwk = toJwk(key.publicKeyHex, keyType, { use: JwkKeyUse.Signature, key, noKidThumbprint: true })\n // console.log(`FIXME JWK: ${JSON.stringify(toJwk(privateKeyHex, keyType, { use: JwkKeyUse.Signature, key, isPrivateKey: true }), null, 2)}`)\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk)))\n )\n } else if (codecName) {\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))\n )\n } else {\n codecName = keyCodecs[keyType]\n\n if (codecName) {\n // methodSpecificId = bytesToMultibase({bytes: u8a.fromString(key.publicKeyHex, 'hex'), codecName})\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))\n ).toString()\n }\n }\n if (!methodSpecificId) {\n throw Error(`Key type ${keyType}, codec ${codecName} is not supported currently for did:key`)\n }\n const identifier: Omit<IIdentifier, 'provider'> = {\n did: `did:key:${methodSpecificId}`,\n controllerKeyId: key.kid,\n keys: [key],\n services: [],\n }\n debug('Created', identifier.did)\n return identifier\n }\n\n async updateIdentifier(\n args: { did: string; kms?: string | undefined; alias?: string | undefined; options?: any },\n context: IAgentContext<IKeyManager>\n ): Promise<IIdentifier> {\n throw new Error('KeyDIDProvider updateIdentifier not supported yet.')\n }\n\n async deleteIdentifier(identifier: IIdentifier, context: IContext): Promise<boolean> {\n for (const { kid } of identifier.keys) {\n await context.agent.keyManagerDelete({ kid })\n }\n return true\n }\n\n async addKey({ identifier, key, options }: { identifier: IIdentifier; key: IKey; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addKey not supported')\n }\n\n async addService({ identifier, service, options }: { identifier: IIdentifier; service: IService; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addService not supported')\n }\n\n async removeKey(args: { identifier: IIdentifier; kid: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeKey not supported')\n }\n\n async removeService(args: { identifier: IIdentifier; id: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeService not supported')\n }\n}\n\ntype CodeNameType = Multicodec.CodecName | 'rsa-pub' | 'jwk_jcs-pub'\n","import { DIDResolutionOptions, DIDResolutionResult, DIDResolver, ParsedDID, Resolvable, Resolver } from 'did-resolver'\nimport { getResolver } from '@sphereon/ssi-sdk-ext.did-resolver-key'\n\nconst resolveDidKey: DIDResolver = async (\n didUrl: string,\n _parsed: ParsedDID,\n _resolver: Resolvable,\n options: DIDResolutionOptions\n): Promise<DIDResolutionResult> => {\n const resolver = new Resolver({ ...getResolver() })\n return resolver.resolve(didUrl, options)\n}\n\nexport function getDidKeyResolver() {\n return { key: resolveDidKey }\n}\n"],"mappings":"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","names":["fromString","toString","u8a","debug","Debug","keyCodecs","RSA","Ed25519","X25519","Secp256k1","Secp256r1","Bls12381G1","Bls12381G2","SphereonKeyDidProvider","AbstractIdentifierProvider","kms","options","defaultKms","createIdentifier","alias","context","codecName","toUpperCase","JWK_JCS_PUB_NAME","keyType","type","key","importProvidedOrGeneratedKey","methodSpecificId","compressedPublicKeyHex","toRawCompressedHexPublicKey","publicKeyHex","jwk","toJwk","use","JwkKeyUse","Signature","noKidThumbprint","Multibase","encode","Multicodec","addPrefix","JWK_JCS_PUB_PREFIX","valueOf","jwkJcsEncode","Error","identifier","did","controllerKeyId","kid","keys","services","updateIdentifier","args","deleteIdentifier","agent","keyManagerDelete","addKey","addService","service","removeKey","removeService","import_ssi_sdk_ext","resolveDidKey","didUrl","_parsed","_resolver","options","resolver","Resolver","getResolver","resolve","getDidKeyResolver","key"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/SphereonKeyDidProvider.ts","../src/KeyDidResolver.ts"],"sourcesContent":["export { SphereonKeyDidProvider } from './SphereonKeyDidProvider'\nexport { getDidKeyResolver } from './KeyDidResolver'\n","import {\n importProvidedOrGeneratedKey,\n JWK_JCS_PUB_NAME,\n JWK_JCS_PUB_PREFIX,\n jwkJcsEncode,\n JwkKeyUse,\n TKeyType,\n toJwk,\n toRawCompressedHexPublicKey,\n} from '@sphereon/ssi-sdk-ext.key-utils'\nimport { IAgentContext, IIdentifier, IKey, IKeyManager, IService } from '@veramo/core'\nimport { AbstractIdentifierProvider } from '@veramo/did-manager'\nimport Debug from 'debug'\nimport Multibase from 'multibase'\nimport Multicodec from 'multicodec'\n// @ts-ignore\nimport * as u8a from 'uint8arrays'\nconst { fromString, toString } = u8a\n\nconst PROVIDER_NAME = 'Sphereon Key DID Provider'\n\nconst debug = Debug('did-provider-key')\n\ntype IContext = IAgentContext<IKeyManager>\n\nconst keyCodecs = {\n RSA: 'rsa-pub',\n Ed25519: 'ed25519-pub',\n X25519: 'x25519-pub',\n Secp256k1: 'secp256k1-pub',\n Secp256r1: 'p256-pub',\n Bls12381G1: 'bls12_381-g1-pub',\n Bls12381G2: 'bls12_381-g2-pub',\n} as const\n\nexport class SphereonKeyDidProvider extends AbstractIdentifierProvider {\n private readonly kms?: string\n\n constructor(options: { defaultKms?: string }) {\n super()\n this.kms = options.defaultKms\n }\n\n async createIdentifier(\n {\n kms,\n alias,\n options,\n }: {\n kms?: string\n alias?: string\n options?: {\n type?: TKeyType\n codecName?: 'EBSI' | 'jwk_jcs-pub' | Multicodec.CodecName\n key?: {\n type?: Exclude<TKeyType, 'Secp384r1' | 'Secp521r1'>\n privateKeyHex: string\n }\n }\n },\n context: IContext,\n ): Promise<Omit<IIdentifier, 'provider'>> {\n let codecName = (options?.codecName?.toUpperCase() === 'EBSI' ? (JWK_JCS_PUB_NAME as Multicodec.CodecName) : options?.codecName) as\n | CodeNameType\n | undefined\n const keyType = (options?.type ?? options?.key?.type ?? (codecName === JWK_JCS_PUB_NAME ? 'Secp256r1' : 'Secp256k1')) as Exclude<\n TKeyType,\n 'Secp384r1' | 'Secp521r1'\n >\n // console.log(`keytype: ${keyType}, codecName: ${codecName}`)\n\n const key = await importProvidedOrGeneratedKey(\n {\n providerName: PROVIDER_NAME,\n // @ts-ignore\n kms: kms ?? this.kms,\n alias: alias,\n options: { ...options, type: keyType },\n },\n context,\n )\n\n let methodSpecificId: string | undefined\n\n // did:key uses compressed pub keys\n const compressedPublicKeyHex = toRawCompressedHexPublicKey(fromString(key.publicKeyHex, 'hex'), key.type)\n if (codecName === JWK_JCS_PUB_NAME) {\n const jwk = toJwk(key.publicKeyHex, keyType, { use: JwkKeyUse.Signature, key, noKidThumbprint: true })\n // console.log(`FIXME JWK: ${JSON.stringify(toJwk(privateKeyHex, keyType, { use: JwkKeyUse.Signature, key, isPrivateKey: true }), null, 2)}`)\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk))),\n )\n } else if (codecName) {\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),\n )\n } else {\n codecName = keyCodecs[keyType]\n\n if (codecName) {\n // methodSpecificId = bytesToMultibase({bytes: u8a.fromString(key.publicKeyHex, 'hex'), codecName})\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),\n ).toString()\n }\n }\n if (!methodSpecificId) {\n throw Error(`Key type ${keyType}, codec ${codecName} is not supported currently for did:key`)\n }\n const identifier: Omit<IIdentifier, 'provider'> = {\n did: `did:key:${methodSpecificId}`,\n controllerKeyId: key.kid,\n keys: [key],\n services: [],\n }\n debug('Created', identifier.did)\n return identifier\n }\n\n async updateIdentifier(\n args: { did: string; kms?: string | undefined; alias?: string | undefined; options?: any },\n context: IAgentContext<IKeyManager>,\n ): Promise<IIdentifier> {\n throw new Error('KeyDIDProvider updateIdentifier not supported yet.')\n }\n\n async deleteIdentifier(identifier: IIdentifier, context: IContext): Promise<boolean> {\n for (const { kid } of identifier.keys) {\n await context.agent.keyManagerDelete({ kid })\n }\n return true\n }\n\n async addKey({ identifier, key, options }: { identifier: IIdentifier; key: IKey; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addKey not supported')\n }\n\n async addService({ identifier, service, options }: { identifier: IIdentifier; service: IService; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addService not supported')\n }\n\n async removeKey(args: { identifier: IIdentifier; kid: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeKey not supported')\n }\n\n async removeService(args: { identifier: IIdentifier; id: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeService not supported')\n }\n}\n\ntype CodeNameType = Multicodec.CodecName | 'rsa-pub' | 'jwk_jcs-pub'\n","import { DIDResolutionOptions, DIDResolutionResult, DIDResolver, ParsedDID, Resolvable, Resolver } from 'did-resolver'\nimport { getResolver } from '@sphereon/ssi-sdk-ext.did-resolver-key'\n\nconst resolveDidKey: DIDResolver = async (\n didUrl: string,\n _parsed: ParsedDID,\n _resolver: Resolvable,\n options: DIDResolutionOptions,\n): Promise<DIDResolutionResult> => {\n const resolver = new Resolver({ ...getResolver() })\n return resolver.resolve(didUrl, options)\n}\n\nexport function getDidKeyResolver() {\n return { key: resolveDidKey }\n}\n"],"mappings":"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","names":["fromString","toString","u8a","PROVIDER_NAME","debug","Debug","keyCodecs","RSA","Ed25519","X25519","Secp256k1","Secp256r1","Bls12381G1","Bls12381G2","SphereonKeyDidProvider","AbstractIdentifierProvider","kms","options","defaultKms","createIdentifier","alias","context","codecName","toUpperCase","JWK_JCS_PUB_NAME","keyType","type","key","importProvidedOrGeneratedKey","providerName","methodSpecificId","compressedPublicKeyHex","toRawCompressedHexPublicKey","publicKeyHex","jwk","toJwk","use","JwkKeyUse","Signature","noKidThumbprint","Multibase","encode","Multicodec","addPrefix","JWK_JCS_PUB_PREFIX","valueOf","jwkJcsEncode","Error","identifier","did","controllerKeyId","kid","keys","services","updateIdentifier","args","deleteIdentifier","agent","keyManagerDelete","addKey","addService","service","removeKey","removeService","import_ssi_sdk_ext","resolveDidKey","didUrl","_parsed","_resolver","options","resolver","Resolver","getResolver","resolve","getDidKeyResolver","key"]}
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ import Multibase from "multibase";
9
9
  import Multicodec from "multicodec";
10
10
  import * as u8a from "uint8arrays";
11
11
  var { fromString, toString } = u8a;
12
+ var PROVIDER_NAME = "Sphereon Key DID Provider";
12
13
  var debug = Debug("did-provider-key");
13
14
  var keyCodecs = {
14
15
  RSA: "rsa-pub",
@@ -32,6 +33,7 @@ var SphereonKeyDidProvider = class extends AbstractIdentifierProvider {
32
33
  let codecName = options?.codecName?.toUpperCase() === "EBSI" ? JWK_JCS_PUB_NAME : options?.codecName;
33
34
  const keyType = options?.type ?? options?.key?.type ?? (codecName === JWK_JCS_PUB_NAME ? "Secp256r1" : "Secp256k1");
34
35
  const key = await importProvidedOrGeneratedKey({
36
+ providerName: PROVIDER_NAME,
35
37
  // @ts-ignore
36
38
  kms: kms ?? this.kms,
37
39
  alias,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/SphereonKeyDidProvider.ts","../src/KeyDidResolver.ts"],"sourcesContent":["import {\n importProvidedOrGeneratedKey,\n JWK_JCS_PUB_NAME,\n JWK_JCS_PUB_PREFIX,\n jwkJcsEncode,\n JwkKeyUse,\n TKeyType,\n toJwk,\n toRawCompressedHexPublicKey,\n} from '@sphereon/ssi-sdk-ext.key-utils'\nimport { IAgentContext, IIdentifier, IKey, IKeyManager, IService } from '@veramo/core'\nimport { AbstractIdentifierProvider } from '@veramo/did-manager'\nimport Debug from 'debug'\nimport Multibase from 'multibase'\nimport Multicodec from 'multicodec'\n// @ts-ignore\nimport * as u8a from 'uint8arrays'\nconst { fromString, toString } = u8a\n\nconst debug = Debug('did-provider-key')\n\ntype IContext = IAgentContext<IKeyManager>\n\nconst keyCodecs = {\n RSA: 'rsa-pub',\n Ed25519: 'ed25519-pub',\n X25519: 'x25519-pub',\n Secp256k1: 'secp256k1-pub',\n Secp256r1: 'p256-pub',\n Bls12381G1: 'bls12_381-g1-pub',\n Bls12381G2: 'bls12_381-g2-pub',\n} as const\n\nexport class SphereonKeyDidProvider extends AbstractIdentifierProvider {\n private readonly kms?: string\n\n constructor(options: { defaultKms?: string }) {\n super()\n this.kms = options.defaultKms\n }\n\n async createIdentifier(\n {\n kms,\n alias,\n options,\n }: {\n kms?: string\n alias?: string\n options?: {\n type?: TKeyType\n codecName?: 'EBSI' | 'jwk_jcs-pub' | Multicodec.CodecName\n key?: {\n type?: Exclude<TKeyType, 'Secp384r1' | 'Secp521r1'>\n privateKeyHex: string\n }\n }\n },\n context: IContext\n ): Promise<Omit<IIdentifier, 'provider'>> {\n let codecName = (options?.codecName?.toUpperCase() === 'EBSI' ? (JWK_JCS_PUB_NAME as Multicodec.CodecName) : options?.codecName) as\n | CodeNameType\n | undefined\n const keyType = (options?.type ?? options?.key?.type ?? (codecName === JWK_JCS_PUB_NAME ? 'Secp256r1' : 'Secp256k1')) as Exclude<\n TKeyType,\n 'Secp384r1' | 'Secp521r1'\n >\n // console.log(`keytype: ${keyType}, codecName: ${codecName}`)\n\n const key = await importProvidedOrGeneratedKey(\n {\n // @ts-ignore\n kms: kms ?? this.kms,\n alias: alias,\n options: { ...options, type: keyType },\n },\n context\n )\n\n let methodSpecificId: string | undefined\n\n // did:key uses compressed pub keys\n const compressedPublicKeyHex = toRawCompressedHexPublicKey(fromString(key.publicKeyHex, 'hex'), key.type)\n if (codecName === JWK_JCS_PUB_NAME) {\n const jwk = toJwk(key.publicKeyHex, keyType, { use: JwkKeyUse.Signature, key, noKidThumbprint: true })\n // console.log(`FIXME JWK: ${JSON.stringify(toJwk(privateKeyHex, keyType, { use: JwkKeyUse.Signature, key, isPrivateKey: true }), null, 2)}`)\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk)))\n )\n } else if (codecName) {\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))\n )\n } else {\n codecName = keyCodecs[keyType]\n\n if (codecName) {\n // methodSpecificId = bytesToMultibase({bytes: u8a.fromString(key.publicKeyHex, 'hex'), codecName})\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))\n ).toString()\n }\n }\n if (!methodSpecificId) {\n throw Error(`Key type ${keyType}, codec ${codecName} is not supported currently for did:key`)\n }\n const identifier: Omit<IIdentifier, 'provider'> = {\n did: `did:key:${methodSpecificId}`,\n controllerKeyId: key.kid,\n keys: [key],\n services: [],\n }\n debug('Created', identifier.did)\n return identifier\n }\n\n async updateIdentifier(\n args: { did: string; kms?: string | undefined; alias?: string | undefined; options?: any },\n context: IAgentContext<IKeyManager>\n ): Promise<IIdentifier> {\n throw new Error('KeyDIDProvider updateIdentifier not supported yet.')\n }\n\n async deleteIdentifier(identifier: IIdentifier, context: IContext): Promise<boolean> {\n for (const { kid } of identifier.keys) {\n await context.agent.keyManagerDelete({ kid })\n }\n return true\n }\n\n async addKey({ identifier, key, options }: { identifier: IIdentifier; key: IKey; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addKey not supported')\n }\n\n async addService({ identifier, service, options }: { identifier: IIdentifier; service: IService; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addService not supported')\n }\n\n async removeKey(args: { identifier: IIdentifier; kid: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeKey not supported')\n }\n\n async removeService(args: { identifier: IIdentifier; id: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeService not supported')\n }\n}\n\ntype CodeNameType = Multicodec.CodecName | 'rsa-pub' | 'jwk_jcs-pub'\n","import { DIDResolutionOptions, DIDResolutionResult, DIDResolver, ParsedDID, Resolvable, Resolver } from 'did-resolver'\nimport { getResolver } from '@sphereon/ssi-sdk-ext.did-resolver-key'\n\nconst resolveDidKey: DIDResolver = async (\n didUrl: string,\n _parsed: ParsedDID,\n _resolver: Resolvable,\n options: DIDResolutionOptions\n): Promise<DIDResolutionResult> => {\n const resolver = new Resolver({ ...getResolver() })\n return resolver.resolve(didUrl, options)\n}\n\nexport function getDidKeyResolver() {\n return { key: resolveDidKey }\n}\n"],"mappings":"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","names":["importProvidedOrGeneratedKey","JWK_JCS_PUB_NAME","JWK_JCS_PUB_PREFIX","jwkJcsEncode","JwkKeyUse","toJwk","toRawCompressedHexPublicKey","AbstractIdentifierProvider","Debug","Multibase","Multicodec","u8a","fromString","toString","u8a","debug","Debug","keyCodecs","RSA","Ed25519","X25519","Secp256k1","Secp256r1","Bls12381G1","Bls12381G2","SphereonKeyDidProvider","AbstractIdentifierProvider","kms","options","defaultKms","createIdentifier","alias","context","codecName","toUpperCase","JWK_JCS_PUB_NAME","keyType","type","key","importProvidedOrGeneratedKey","methodSpecificId","compressedPublicKeyHex","toRawCompressedHexPublicKey","publicKeyHex","jwk","toJwk","use","JwkKeyUse","Signature","noKidThumbprint","Multibase","encode","Multicodec","addPrefix","JWK_JCS_PUB_PREFIX","valueOf","jwkJcsEncode","Error","identifier","did","controllerKeyId","kid","keys","services","updateIdentifier","args","deleteIdentifier","agent","keyManagerDelete","addKey","addService","service","removeKey","removeService","Resolver","getResolver","resolveDidKey","didUrl","_parsed","_resolver","options","resolver","Resolver","getResolver","resolve","getDidKeyResolver","key"]}
1
+ {"version":3,"sources":["../src/SphereonKeyDidProvider.ts","../src/KeyDidResolver.ts"],"sourcesContent":["import {\n importProvidedOrGeneratedKey,\n JWK_JCS_PUB_NAME,\n JWK_JCS_PUB_PREFIX,\n jwkJcsEncode,\n JwkKeyUse,\n TKeyType,\n toJwk,\n toRawCompressedHexPublicKey,\n} from '@sphereon/ssi-sdk-ext.key-utils'\nimport { IAgentContext, IIdentifier, IKey, IKeyManager, IService } from '@veramo/core'\nimport { AbstractIdentifierProvider } from '@veramo/did-manager'\nimport Debug from 'debug'\nimport Multibase from 'multibase'\nimport Multicodec from 'multicodec'\n// @ts-ignore\nimport * as u8a from 'uint8arrays'\nconst { fromString, toString } = u8a\n\nconst PROVIDER_NAME = 'Sphereon Key DID Provider'\n\nconst debug = Debug('did-provider-key')\n\ntype IContext = IAgentContext<IKeyManager>\n\nconst keyCodecs = {\n RSA: 'rsa-pub',\n Ed25519: 'ed25519-pub',\n X25519: 'x25519-pub',\n Secp256k1: 'secp256k1-pub',\n Secp256r1: 'p256-pub',\n Bls12381G1: 'bls12_381-g1-pub',\n Bls12381G2: 'bls12_381-g2-pub',\n} as const\n\nexport class SphereonKeyDidProvider extends AbstractIdentifierProvider {\n private readonly kms?: string\n\n constructor(options: { defaultKms?: string }) {\n super()\n this.kms = options.defaultKms\n }\n\n async createIdentifier(\n {\n kms,\n alias,\n options,\n }: {\n kms?: string\n alias?: string\n options?: {\n type?: TKeyType\n codecName?: 'EBSI' | 'jwk_jcs-pub' | Multicodec.CodecName\n key?: {\n type?: Exclude<TKeyType, 'Secp384r1' | 'Secp521r1'>\n privateKeyHex: string\n }\n }\n },\n context: IContext,\n ): Promise<Omit<IIdentifier, 'provider'>> {\n let codecName = (options?.codecName?.toUpperCase() === 'EBSI' ? (JWK_JCS_PUB_NAME as Multicodec.CodecName) : options?.codecName) as\n | CodeNameType\n | undefined\n const keyType = (options?.type ?? options?.key?.type ?? (codecName === JWK_JCS_PUB_NAME ? 'Secp256r1' : 'Secp256k1')) as Exclude<\n TKeyType,\n 'Secp384r1' | 'Secp521r1'\n >\n // console.log(`keytype: ${keyType}, codecName: ${codecName}`)\n\n const key = await importProvidedOrGeneratedKey(\n {\n providerName: PROVIDER_NAME,\n // @ts-ignore\n kms: kms ?? this.kms,\n alias: alias,\n options: { ...options, type: keyType },\n },\n context,\n )\n\n let methodSpecificId: string | undefined\n\n // did:key uses compressed pub keys\n const compressedPublicKeyHex = toRawCompressedHexPublicKey(fromString(key.publicKeyHex, 'hex'), key.type)\n if (codecName === JWK_JCS_PUB_NAME) {\n const jwk = toJwk(key.publicKeyHex, keyType, { use: JwkKeyUse.Signature, key, noKidThumbprint: true })\n // console.log(`FIXME JWK: ${JSON.stringify(toJwk(privateKeyHex, keyType, { use: JwkKeyUse.Signature, key, isPrivateKey: true }), null, 2)}`)\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk))),\n )\n } else if (codecName) {\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),\n )\n } else {\n codecName = keyCodecs[keyType]\n\n if (codecName) {\n // methodSpecificId = bytesToMultibase({bytes: u8a.fromString(key.publicKeyHex, 'hex'), codecName})\n methodSpecificId = toString(\n Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),\n ).toString()\n }\n }\n if (!methodSpecificId) {\n throw Error(`Key type ${keyType}, codec ${codecName} is not supported currently for did:key`)\n }\n const identifier: Omit<IIdentifier, 'provider'> = {\n did: `did:key:${methodSpecificId}`,\n controllerKeyId: key.kid,\n keys: [key],\n services: [],\n }\n debug('Created', identifier.did)\n return identifier\n }\n\n async updateIdentifier(\n args: { did: string; kms?: string | undefined; alias?: string | undefined; options?: any },\n context: IAgentContext<IKeyManager>,\n ): Promise<IIdentifier> {\n throw new Error('KeyDIDProvider updateIdentifier not supported yet.')\n }\n\n async deleteIdentifier(identifier: IIdentifier, context: IContext): Promise<boolean> {\n for (const { kid } of identifier.keys) {\n await context.agent.keyManagerDelete({ kid })\n }\n return true\n }\n\n async addKey({ identifier, key, options }: { identifier: IIdentifier; key: IKey; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addKey not supported')\n }\n\n async addService({ identifier, service, options }: { identifier: IIdentifier; service: IService; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider addService not supported')\n }\n\n async removeKey(args: { identifier: IIdentifier; kid: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeKey not supported')\n }\n\n async removeService(args: { identifier: IIdentifier; id: string; options?: any }, context: IContext): Promise<any> {\n throw Error('KeyDIDProvider removeService not supported')\n }\n}\n\ntype CodeNameType = Multicodec.CodecName | 'rsa-pub' | 'jwk_jcs-pub'\n","import { DIDResolutionOptions, DIDResolutionResult, DIDResolver, ParsedDID, Resolvable, Resolver } from 'did-resolver'\nimport { getResolver } from '@sphereon/ssi-sdk-ext.did-resolver-key'\n\nconst resolveDidKey: DIDResolver = async (\n didUrl: string,\n _parsed: ParsedDID,\n _resolver: Resolvable,\n options: DIDResolutionOptions,\n): Promise<DIDResolutionResult> => {\n const resolver = new Resolver({ ...getResolver() })\n return resolver.resolve(didUrl, options)\n}\n\nexport function getDidKeyResolver() {\n return { key: resolveDidKey }\n}\n"],"mappings":"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","names":["importProvidedOrGeneratedKey","JWK_JCS_PUB_NAME","JWK_JCS_PUB_PREFIX","jwkJcsEncode","JwkKeyUse","toJwk","toRawCompressedHexPublicKey","AbstractIdentifierProvider","Debug","Multibase","Multicodec","u8a","fromString","toString","u8a","PROVIDER_NAME","debug","Debug","keyCodecs","RSA","Ed25519","X25519","Secp256k1","Secp256r1","Bls12381G1","Bls12381G2","SphereonKeyDidProvider","AbstractIdentifierProvider","kms","options","defaultKms","createIdentifier","alias","context","codecName","toUpperCase","JWK_JCS_PUB_NAME","keyType","type","key","importProvidedOrGeneratedKey","providerName","methodSpecificId","compressedPublicKeyHex","toRawCompressedHexPublicKey","publicKeyHex","jwk","toJwk","use","JwkKeyUse","Signature","noKidThumbprint","Multibase","encode","Multicodec","addPrefix","JWK_JCS_PUB_PREFIX","valueOf","jwkJcsEncode","Error","identifier","did","controllerKeyId","kid","keys","services","updateIdentifier","args","deleteIdentifier","agent","keyManagerDelete","addKey","addService","service","removeKey","removeService","Resolver","getResolver","resolveDidKey","didUrl","_parsed","_resolver","options","resolver","Resolver","getResolver","resolve","getDidKeyResolver","key"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk-ext.did-provider-key",
3
3
  "description": "Sphereon SSI-SDK plugin for management of did:key identifiers.",
4
- "version": "0.34.1-next.91+3c949810",
4
+ "version": "0.36.1-feat.SSISDK.83.11+15665c90",
5
5
  "source": "./src/index.ts",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",
@@ -23,8 +23,8 @@
23
23
  "extract-api": "sphereon dev extract-api"
24
24
  },
25
25
  "dependencies": {
26
- "@sphereon/ssi-sdk-ext.did-resolver-key": "0.34.1-next.91+3c949810",
27
- "@sphereon/ssi-sdk-ext.key-utils": "0.34.1-next.91+3c949810",
26
+ "@sphereon/ssi-sdk-ext.did-resolver-key": "0.36.1-feat.SSISDK.83.11+15665c90",
27
+ "@sphereon/ssi-sdk-ext.key-utils": "0.36.1-feat.SSISDK.83.11+15665c90",
28
28
  "@transmute/did-key-bls12381": "0.3.0-unstable.10",
29
29
  "@veramo/core": "4.2.0",
30
30
  "@veramo/did-manager": "4.2.0",
@@ -36,9 +36,9 @@
36
36
  "uint8arrays": "3.1.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@sphereon/ssi-sdk-ext.key-manager": "0.34.1-next.91+3c949810",
40
- "@sphereon/ssi-sdk-ext.kms-local": "0.34.1-next.91+3c949810",
41
- "@sphereon/ssi-sdk.dev": "0.34.1-next.91+3c949810",
39
+ "@sphereon/ssi-sdk-ext.key-manager": "0.36.1-feat.SSISDK.83.11+15665c90",
40
+ "@sphereon/ssi-sdk-ext.kms-local": "0.36.1-feat.SSISDK.83.11+15665c90",
41
+ "@sphereon/ssi-sdk.dev": "0.36.1-feat.SSISDK.83.11+15665c90",
42
42
  "@veramo/did-resolver": "4.2.0",
43
43
  "@veramo/key-manager": "4.2.0"
44
44
  },
@@ -72,5 +72,5 @@
72
72
  "secp256r1",
73
73
  "RSA"
74
74
  ],
75
- "gitHead": "3c9498100ca07dfc2ba7979e7347fb9b19c47d18"
75
+ "gitHead": "15665c90d27b72a0c3b7267375f60512d2cd4085"
76
76
  }
@@ -5,7 +5,7 @@ const resolveDidKey: DIDResolver = async (
5
5
  didUrl: string,
6
6
  _parsed: ParsedDID,
7
7
  _resolver: Resolvable,
8
- options: DIDResolutionOptions
8
+ options: DIDResolutionOptions,
9
9
  ): Promise<DIDResolutionResult> => {
10
10
  const resolver = new Resolver({ ...getResolver() })
11
11
  return resolver.resolve(didUrl, options)
@@ -17,6 +17,8 @@ import Multicodec from 'multicodec'
17
17
  import * as u8a from 'uint8arrays'
18
18
  const { fromString, toString } = u8a
19
19
 
20
+ const PROVIDER_NAME = 'Sphereon Key DID Provider'
21
+
20
22
  const debug = Debug('did-provider-key')
21
23
 
22
24
  type IContext = IAgentContext<IKeyManager>
@@ -56,7 +58,7 @@ export class SphereonKeyDidProvider extends AbstractIdentifierProvider {
56
58
  }
57
59
  }
58
60
  },
59
- context: IContext
61
+ context: IContext,
60
62
  ): Promise<Omit<IIdentifier, 'provider'>> {
61
63
  let codecName = (options?.codecName?.toUpperCase() === 'EBSI' ? (JWK_JCS_PUB_NAME as Multicodec.CodecName) : options?.codecName) as
62
64
  | CodeNameType
@@ -69,12 +71,13 @@ export class SphereonKeyDidProvider extends AbstractIdentifierProvider {
69
71
 
70
72
  const key = await importProvidedOrGeneratedKey(
71
73
  {
74
+ providerName: PROVIDER_NAME,
72
75
  // @ts-ignore
73
76
  kms: kms ?? this.kms,
74
77
  alias: alias,
75
78
  options: { ...options, type: keyType },
76
79
  },
77
- context
80
+ context,
78
81
  )
79
82
 
80
83
  let methodSpecificId: string | undefined
@@ -85,11 +88,11 @@ export class SphereonKeyDidProvider extends AbstractIdentifierProvider {
85
88
  const jwk = toJwk(key.publicKeyHex, keyType, { use: JwkKeyUse.Signature, key, noKidThumbprint: true })
86
89
  // console.log(`FIXME JWK: ${JSON.stringify(toJwk(privateKeyHex, keyType, { use: JwkKeyUse.Signature, key, isPrivateKey: true }), null, 2)}`)
87
90
  methodSpecificId = toString(
88
- Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk)))
91
+ Multibase.encode('base58btc', Multicodec.addPrefix(fromString(JWK_JCS_PUB_PREFIX.valueOf().toString(16), 'hex'), jwkJcsEncode(jwk))),
89
92
  )
90
93
  } else if (codecName) {
91
94
  methodSpecificId = toString(
92
- Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))
95
+ Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),
93
96
  )
94
97
  } else {
95
98
  codecName = keyCodecs[keyType]
@@ -97,7 +100,7 @@ export class SphereonKeyDidProvider extends AbstractIdentifierProvider {
97
100
  if (codecName) {
98
101
  // methodSpecificId = bytesToMultibase({bytes: u8a.fromString(key.publicKeyHex, 'hex'), codecName})
99
102
  methodSpecificId = toString(
100
- Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex')))
103
+ Multibase.encode('base58btc', Multicodec.addPrefix(codecName as Multicodec.CodecName, fromString(compressedPublicKeyHex, 'hex'))),
101
104
  ).toString()
102
105
  }
103
106
  }
@@ -116,7 +119,7 @@ export class SphereonKeyDidProvider extends AbstractIdentifierProvider {
116
119
 
117
120
  async updateIdentifier(
118
121
  args: { did: string; kms?: string | undefined; alias?: string | undefined; options?: any },
119
- context: IAgentContext<IKeyManager>
122
+ context: IAgentContext<IKeyManager>,
120
123
  ): Promise<IIdentifier> {
121
124
  throw new Error('KeyDIDProvider updateIdentifier not supported yet.')
122
125
  }