@sphereon/ssi-sdk-ext.key-manager 0.28.1-feature.oyd.cmsm.improv.20 → 0.28.1-next.53
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 +615 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{ssi-sdk-ext.key-manager.d.ts → index.d.cts} +137 -159
- package/dist/index.d.ts +136 -5
- package/dist/index.js +582 -23
- package/dist/index.js.map +1 -1
- package/package.json +25 -12
- package/plugin.schema.json +12 -62
- package/src/__tests__/SphereonKeyManager.test.ts +3 -2
- package/src/__tests__/encrypt-decrypt.test.ts +3 -2
- package/src/agent/SphereonKeyManager.ts +12 -11
- package/src/types/ISphereonKeyManager.ts +1 -1
- package/dist/agent/SphereonKeyManager.d.ts +0 -27
- package/dist/agent/SphereonKeyManager.d.ts.map +0 -1
- package/dist/agent/SphereonKeyManager.js +0 -190
- package/dist/agent/SphereonKeyManager.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/tsdoc-metadata.json +0 -11
- package/dist/types/ISphereonKeyManager.d.ts +0 -107
- package/dist/types/ISphereonKeyManager.d.ts.map +0 -1
- package/dist/types/ISphereonKeyManager.js +0 -10
- package/dist/types/ISphereonKeyManager.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AACtC,wBAAM;AACf,iEAA0F;AAAjF,wHAAA,kBAAkB,OAAA;AAAE,+HAAA,yBAAyB,OAAA;AACtD,8DAA2C;AAC3C,sDAAmC"}
|
|
1
|
+
{"version":3,"sources":["../plugin.schema.json","../src/agent/SphereonKeyManager.ts","../src/types/ISphereonKeyManager.ts","../src/index.ts"],"sourcesContent":["{\n \"ISphereonKeyManager\": {\n \"components\": {\n \"schemas\": {\n \"ISphereonKeyManagerCreateArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"$ref\": \"#/components/schemas/TKeyType\",\n \"description\": \"Key type\"\n },\n \"kms\": {\n \"type\": \"string\",\n \"description\": \"Key Management System\"\n },\n \"opts\": {\n \"$ref\": \"#/components/schemas/IkeyOptions\",\n \"description\": \"Key options\"\n },\n \"meta\": {\n \"$ref\": \"#/components/schemas/KeyMetadata\",\n \"description\": \"Optional. Key meta data\"\n }\n },\n \"required\": [\"type\"],\n \"description\": \"Input arguments for {@link ISphereonKeyManager.keyManagerCreate | keyManagerCreate }\"\n },\n \"TKeyType\": {\n \"type\": \"string\",\n \"enum\": [\"Ed25519\", \"Secp256k1\", \"Secp256r1\", \"X25519\", \"Bls12381G1\", \"Bls12381G2\", \"RSA\"],\n \"description\": \"Cryptographic key type.\"\n },\n \"IkeyOptions\": {\n \"type\": \"object\",\n \"properties\": {\n \"ephemeral\": {\n \"type\": \"boolean\",\n \"description\": \"Is this a temporary key?\"\n },\n \"expiration\": {\n \"type\": \"object\",\n \"properties\": {\n \"expiryDate\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"removalDate\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"description\": \"Expiration and remove the key\"\n }\n }\n },\n \"KeyMetadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"algorithms\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"description\": \"This encapsulates data about a key.\\n\\nImplementations of {@link @veramo/key-manager#AbstractKeyManagementSystem | AbstractKeyManagementSystem } should populate this object, for each key, with the algorithms that can be performed using it.\\n\\nThis can also be used to add various tags to the keys under management.\"\n },\n \"PartialKey\": {\n \"type\": \"object\",\n \"properties\": {\n \"privateKeyHex\": {\n \"type\": \"string\"\n },\n \"kid\": {\n \"type\": \"string\",\n \"description\": \"Key ID\"\n },\n \"kms\": {\n \"type\": \"string\",\n \"description\": \"Key Management System\"\n },\n \"type\": {\n \"$ref\": \"#/components/schemas/TKeyType\",\n \"description\": \"Key type\"\n },\n \"publicKeyHex\": {\n \"type\": \"string\",\n \"description\": \"Public key\"\n },\n \"meta\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/KeyMetadata\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Optional. Key metadata. This should be used to determine which algorithms are supported.\"\n }\n },\n \"required\": [\"kid\", \"kms\", \"privateKeyHex\", \"publicKeyHex\", \"type\"]\n },\n \"ISphereonKeyManagerHandleExpirationsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"skipRemovals\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"ManagedKeyInfo\": {\n \"type\": \"object\",\n \"properties\": {\n \"kid\": {\n \"type\": \"string\",\n \"description\": \"Key ID\"\n },\n \"kms\": {\n \"type\": \"string\",\n \"description\": \"Key Management System\"\n },\n \"type\": {\n \"$ref\": \"#/components/schemas/TKeyType\",\n \"description\": \"Key type\"\n },\n \"publicKeyHex\": {\n \"type\": \"string\",\n \"description\": \"Public key\"\n },\n \"meta\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/KeyMetadata\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Optional. Key metadata. This should be used to determine which algorithms are supported.\"\n }\n },\n \"required\": [\"kid\", \"kms\", \"type\", \"publicKeyHex\"],\n \"description\": \"Represents information about a managed key. Private or secret key material is NOT present.\"\n },\n \"MinimalImportableKey\": {\n \"$ref\": \"#/components/schemas/RequireOnly<IKey,(\\\"privateKeyHex\\\"|\\\"type\\\"|\\\"kms\\\")>\",\n \"description\": \"Represents the properties required to import a key.\"\n },\n \"RequireOnly<IKey,(\\\"privateKeyHex\\\"|\\\"type\\\"|\\\"kms\\\")>\": {\n \"type\": \"object\",\n \"properties\": {\n \"kid\": {\n \"type\": \"string\",\n \"description\": \"Key ID\"\n },\n \"kms\": {\n \"type\": \"string\",\n \"description\": \"Key Management System\"\n },\n \"type\": {\n \"$ref\": \"#/components/schemas/TKeyType\",\n \"description\": \"Key type\"\n },\n \"publicKeyHex\": {\n \"type\": \"string\",\n \"description\": \"Public key\"\n },\n \"privateKeyHex\": {\n \"type\": \"string\",\n \"description\": \"Optional. Private key\"\n },\n \"meta\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/KeyMetadata\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Optional. Key metadata. This should be used to determine which algorithms are supported.\"\n }\n },\n \"description\": \"Represents an object type where a subset of keys are required and everything else is optional.\"\n },\n \"ISphereonKeyManagerSignArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"keyRef\": {\n \"type\": \"string\",\n \"description\": \"The key handle, as returned during `keyManagerCreateKey`\"\n },\n \"algorithm\": {\n \"type\": \"string\",\n \"description\": \"The algorithm to use for signing. This must be one of the algorithms supported by the KMS for this key type.\\n\\nThe algorithm used here should match one of the names listed in `IKey.meta.algorithms`\"\n },\n \"data\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"BYTES_PER_ELEMENT\": {\n \"type\": \"number\"\n },\n \"buffer\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"byteLength\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"byteLength\"]\n },\n {}\n ]\n },\n \"byteLength\": {\n \"type\": \"number\"\n },\n \"byteOffset\": {\n \"type\": \"number\"\n },\n \"length\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"BYTES_PER_ELEMENT\", \"buffer\", \"byteLength\", \"byteOffset\", \"length\"],\n \"additionalProperties\": {\n \"type\": \"number\"\n }\n }\n ],\n \"description\": \"Data to sign\"\n },\n \"encoding\": {\n \"type\": \"string\",\n \"enum\": [\"utf-8\", \"base16\", \"base64\", \"hex\"],\n \"description\": \"If the data is a \\\"string\\\" then you can specify which encoding is used. Default is \\\"utf-8\\\"\"\n }\n },\n \"required\": [\"data\", \"keyRef\"],\n \"description\": \"Input arguments for {@link ISphereonKeyManagerSignArgs.keyManagerSign | keyManagerSign }\"\n },\n \"ISphereonKeyManagerVerifyArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"kms\": {\n \"type\": \"string\"\n },\n \"publicKeyHex\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"$ref\": \"#/components/schemas/TKeyType\"\n },\n \"algorithm\": {\n \"type\": \"string\"\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"BYTES_PER_ELEMENT\": {\n \"type\": \"number\"\n },\n \"buffer\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"byteLength\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"byteLength\"]\n },\n {}\n ]\n },\n \"byteLength\": {\n \"type\": \"number\"\n },\n \"byteOffset\": {\n \"type\": \"number\"\n },\n \"length\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"BYTES_PER_ELEMENT\", \"buffer\", \"byteLength\", \"byteOffset\", \"length\"],\n \"additionalProperties\": {\n \"type\": \"number\"\n }\n },\n \"signature\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"publicKeyHex\", \"type\", \"data\", \"signature\"]\n }\n },\n \"methods\": {\n \"keyManagerCreate\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISphereonKeyManagerCreateArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/PartialKey\"\n }\n },\n \"keyManagerGetDefaultKeyManagementSystem\": {\n \"description\": \"Get the KMS registered as default. Handy when no explicit KMS is provided for a function\",\n \"arguments\": {\n \"type\": \"object\"\n },\n \"returnType\": {\n \"type\": \"string\"\n }\n },\n \"keyManagerHandleExpirations\": {\n \"description\": \"Set keys to expired and remove keys eligible for deletion.\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISphereonKeyManagerHandleExpirationsArgs\"\n },\n \"returnType\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n }\n },\n \"keyManagerImport\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/MinimalImportableKey\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/PartialKey\"\n }\n },\n \"keyManagerListKeys\": {\n \"description\": \"\",\n \"arguments\": {\n \"type\": \"object\"\n },\n \"returnType\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n }\n },\n \"keyManagerSign\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISphereonKeyManagerSignArgs\"\n },\n \"returnType\": {\n \"type\": \"string\"\n }\n },\n \"keyManagerVerify\": {\n \"description\": \"Verifies a signature using the key\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISphereonKeyManagerVerifyArgs\"\n },\n \"returnType\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n }\n}\n","import { calculateJwkThumbprintForKey, toJwk, verifyRawSignature } from '@sphereon/ssi-sdk-ext.key-utils'\nimport type { IKey, KeyMetadata, ManagedKeyInfo } from '@veramo/core'\nimport { AbstractKeyManagementSystem, AbstractKeyStore, KeyManager as VeramoKeyManager } from '@veramo/key-manager'\n// @ts-ignore\nimport * as u8a from 'uint8arrays'\nimport {\n hasKeyOptions,\n type IKeyManagerGetArgs,\n type ISphereonKeyManager,\n type ISphereonKeyManagerCreateArgs,\n type ISphereonKeyManagerHandleExpirationsArgs,\n type ISphereonKeyManagerSignArgs,\n type ISphereonKeyManagerVerifyArgs,\n} from '../types/ISphereonKeyManager'\n\nconst { fromString } = u8a\n\nexport const sphereonKeyManagerMethods: Array<string> = [\n 'keyManagerCreate',\n 'keyManagerGet',\n 'keyManagerImport',\n 'keyManagerSign',\n 'keyManagerVerify',\n 'keyManagerListKeys',\n 'keyManagerGetDefaultKeyManagementSystem',\n 'keyManagerHandleExpirations',\n]\n\nexport class SphereonKeyManager extends VeramoKeyManager {\n // local store reference, given the superclass store is private, and we need additional functions/calls\n private kmsStore: AbstractKeyStore\n private readonly availableKmses: Record<string, AbstractKeyManagementSystem>\n public _defaultKms: string\n readonly kmsMethods: ISphereonKeyManager\n\n constructor(options: { store: AbstractKeyStore; kms: Record<string, AbstractKeyManagementSystem>; defaultKms?: string }) {\n super({ store: options.store, kms: options.kms })\n this.kmsStore = options.store\n this.availableKmses = options.kms\n this._defaultKms = options.defaultKms ?? Object.keys(this.availableKmses)[0]\n if (!Object.keys(this.availableKmses).includes(this._defaultKms)) {\n throw Error(`Default KMS needs to be listed in the kms object as well. Found kms-es: ${Object.keys(this.availableKmses).join(',')}`)\n }\n const methods = this.methods\n methods.keyManagerVerify = this.keyManagerVerify.bind(this)\n methods.keyManagerListKeys = this.keyManagerListKeys.bind(this)\n methods.keyManagerGetDefaultKeyManagementSystem = this.keyManagerGetDefaultKeyManagementSystem.bind(this)\n this.kmsMethods = <ISphereonKeyManager>(<unknown>methods)\n }\n\n keyManagerGetDefaultKeyManagementSystem(): Promise<string> {\n return Promise.resolve(this._defaultKms)\n }\n\n override async keyManagerCreate(args: ISphereonKeyManagerCreateArgs): Promise<ManagedKeyInfo> {\n const kms = this.getKmsByName(args.kms ?? this._defaultKms)\n const meta: KeyMetadata = { ...args.meta, ...(args.opts && { opts: args.opts }) }\n if (hasKeyOptions(meta) && meta.opts?.ephemeral && !meta.opts.expiration?.removalDate) {\n // Make sure we set a delete date on an ephemeral key\n meta.opts = {\n ...meta.opts,\n expiration: { ...meta.opts?.expiration, removalDate: new Date(Date.now() + 5 * 60 * 1000) },\n }\n }\n const partialKey = await kms.createKey({ type: args.type, meta })\n const key: IKey = { ...partialKey, kms: args.kms ?? this._defaultKms }\n key.meta = { ...meta, ...key.meta }\n key.meta.jwkThumbprint = key.meta.jwkThumbprint ?? calculateJwkThumbprintForKey({ key })\n\n await this.kmsStore.import(key)\n if (key.privateKeyHex) {\n // Make sure to not export the private key\n delete key.privateKeyHex\n }\n return key\n }\n\n //FIXME extend the IKeyManagerSignArgs.data to be a string or array of strings\n\n async keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string> {\n const keyInfo = await this.keyManagerGet({ kid: args.keyRef })\n const kms = this.getKmsByName(keyInfo.kms)\n if (keyInfo.type === 'Bls12381G2') {\n return await kms.sign({ keyRef: keyInfo, data: typeof args.data === 'string' ? fromString(args.data) : args.data })\n }\n // @ts-ignore // we can pass in uint8arrays as well, which the super also can handle but does not expose in its types\n return await super.keyManagerSign({ ...args, keyRef: keyInfo.kid })\n }\n\n async keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean> {\n if (args.kms) {\n const kms = this.getKmsByName(args.kms)\n if (kms && 'verify' in kms && typeof kms.verify === 'function') {\n // @ts-ignore\n return await kms.verify(args)\n }\n }\n return await verifyRawSignature({\n key: toJwk(args.publicKeyHex, args.type),\n data: args.data,\n signature: fromString(args.signature, 'utf-8'),\n })\n }\n\n async keyManagerListKeys(): Promise<ManagedKeyInfo[]> {\n return this.kmsStore.list({})\n }\n\n async keyManagerHandleExpirations(args: ISphereonKeyManagerHandleExpirationsArgs): Promise<Array<ManagedKeyInfo>> {\n const keys = await this.keyManagerListKeys()\n const expiredKeys = keys\n .filter((key) => hasKeyOptions(key.meta))\n .filter((key) => {\n if (hasKeyOptions(key.meta) && key.meta?.opts?.expiration) {\n const expiration = key.meta.opts.expiration\n return !(expiration.expiryDate && expiration.expiryDate.getMilliseconds() > Date.now())\n }\n return false\n })\n if (args.skipRemovals !== true) {\n await Promise.all(expiredKeys.map((key) => this.keyManagerDelete({ kid: key.kid })))\n }\n return keys\n }\n\n private getKmsByName(name: string): AbstractKeyManagementSystem {\n const kms = this.availableKmses[name]\n if (!kms) {\n throw Error(`invalid_argument: This agent has no registered KeyManagementSystem with name='${name}'`)\n }\n return kms\n }\n\n //todo https://sphereon.atlassian.net/browse/SDK-28 improve the logic for keyManagerGet in sphereon-key-manager\n async keyManagerGet({ kid }: IKeyManagerGetArgs): Promise<IKey> {\n try {\n const key = await this.kmsStore.get({ kid })\n return key\n } catch (e) {\n const keys: ManagedKeyInfo[] = await this.keyManagerListKeys()\n const foundKey = keys.find(\n (key) =>\n key.publicKeyHex === kid ||\n key.meta?.jwkThumbprint === kid ||\n (key.meta?.jwkThumbprint == null && calculateJwkThumbprintForKey({ key }) === kid)\n )\n if (foundKey) {\n return foundKey as IKey\n } else {\n throw new Error(`Key with kid ${kid} not found`)\n }\n }\n }\n\n get defaultKms(): string {\n return this._defaultKms\n }\n\n set defaultKms(kms: string) {\n if (!Object.keys(this.availableKmses).includes(kms)) {\n throw Error(`Default KMS needs to be listed in the kms object as well. Found kms-es: ${Object.keys(this.availableKmses).join(',')}`)\n }\n this._defaultKms = kms\n }\n\n setKms(name: string, kms: AbstractKeyManagementSystem): void {\n this.availableKmses[name] = kms\n }\n}\n","import type { IKeyManager, IKeyManagerSignArgs, IPluginMethodMap, KeyMetadata, ManagedKeyInfo, MinimalImportableKey, TKeyType } from '@veramo/core'\n\nexport type PartialKey = ManagedKeyInfo & { privateKeyHex: string }\n\nexport interface ISphereonKeyManager extends IKeyManager, IPluginMethodMap {\n keyManagerCreate(args: ISphereonKeyManagerCreateArgs): Promise<PartialKey>\n\n keyManagerImport(key: MinimalImportableKey): Promise<PartialKey>\n\n keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string>\n\n /**\n * Verifies a signature using the key\n *\n * Does not exist in IKeyManager\n * @param args\n */\n keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>\n\n keyManagerListKeys(): Promise<Array<ManagedKeyInfo>>\n\n /**\n * Get the KMS registered as default. Handy when no explicit KMS is provided for a function\n */\n\n keyManagerGetDefaultKeyManagementSystem(): Promise<string>\n\n /**\n * Set keys to expired and remove keys eligible for deletion.\n * @param args\n */\n keyManagerHandleExpirations(args: ISphereonKeyManagerHandleExpirationsArgs): Promise<Array<ManagedKeyInfo>>\n}\n\nexport interface IkeyOptions {\n /**\n * Is this a temporary key?\n */\n ephemeral?: boolean\n\n /**\n * Expiration and remove the key\n */\n expiration?: {\n expiryDate?: Date\n removalDate?: Date\n }\n}\n\n/**\n * Input arguments for {@link ISphereonKeyManager.keyManagerCreate | keyManagerCreate}\n * @public\n */\nexport interface ISphereonKeyManagerCreateArgs {\n /**\n * Key type\n */\n type: TKeyType\n\n /**\n * Key Management System\n */\n kms?: string\n\n /**\n * Key options\n */\n opts?: IkeyOptions\n\n /**\n * Optional. Key meta data\n */\n meta?: KeyMetadata\n}\n\nexport function hasKeyOptions(object: any): object is { opts?: IkeyOptions } {\n return object!! && 'opts' in object && ('ephemeral' in object.opts || 'expiration' in object.opts)\n}\n\n/**\n * Input arguments for {@link ISphereonKeyManager.keyManagerGet | keyManagerGet}\n * @public\n */\nexport interface IKeyManagerGetArgs {\n /**\n * Key ID\n */\n kid: string\n}\n\n/**\n * Input arguments for {@link ISphereonKeyManager.keyManagerDelete | keyManagerDelete}\n * @public\n */\nexport interface IKeyManagerDeleteArgs {\n /**\n * Key ID\n */\n kid: string\n}\n\n/**\n * Input arguments for {@link ISphereonKeyManagerSignArgs.keyManagerSign | keyManagerSign}\n * @public\n */\n// @ts-ignore\nexport interface ISphereonKeyManagerSignArgs extends IKeyManagerSignArgs {\n /**\n * Data to sign\n */\n data: string | Uint8Array\n}\n\nexport interface ISphereonKeyManagerHandleExpirationsArgs {\n skipRemovals?: boolean\n}\n\nexport interface ISphereonKeyManagerVerifyArgs {\n kms?: string\n publicKeyHex: string\n type: TKeyType\n algorithm?: string\n data: Uint8Array\n signature: string\n}\n\nexport const isDefined = <T extends unknown>(object: T | undefined): object is T => object !== undefined\n","const schema = require('../plugin.schema.json')\nexport { schema }\nexport { SphereonKeyManager, sphereonKeyManagerMethods } from './agent/SphereonKeyManager'\nexport * from './types/ISphereonKeyManager'\nexport * from '@veramo/key-manager'\n"],"mappings":"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","names":["calculateJwkThumbprintForKey","toJwk","verifyRawSignature","KeyManager","VeramoKeyManager","u8a","hasKeyOptions","object","opts","isDefined","undefined","fromString","u8a","sphereonKeyManagerMethods","SphereonKeyManager","VeramoKeyManager","kmsStore","availableKmses","_defaultKms","kmsMethods","constructor","options","store","kms","defaultKms","Object","keys","includes","Error","join","methods","keyManagerVerify","bind","keyManagerListKeys","keyManagerGetDefaultKeyManagementSystem","Promise","resolve","keyManagerCreate","args","getKmsByName","meta","opts","hasKeyOptions","ephemeral","expiration","removalDate","Date","now","partialKey","createKey","type","key","jwkThumbprint","calculateJwkThumbprintForKey","import","privateKeyHex","keyManagerSign","keyInfo","keyManagerGet","kid","keyRef","sign","data","verify","verifyRawSignature","toJwk","publicKeyHex","signature","list","keyManagerHandleExpirations","expiredKeys","filter","expiryDate","getMilliseconds","skipRemovals","all","map","keyManagerDelete","name","get","e","foundKey","find","setKms","schema","require"]}
|
package/package.json
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.key-manager",
|
|
3
3
|
"description": "Sphereon Key Manager plugin with BLS support",
|
|
4
|
-
"version": "0.28.1-
|
|
5
|
-
"source": "src/index.ts",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
4
|
+
"version": "0.28.1-next.53+5199437",
|
|
5
|
+
"source": "./src/index.ts",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
"react-native": "./dist/index.js",
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/index.d.cts",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
8
21
|
"veramo": {
|
|
9
22
|
"pluginInterfaces": {
|
|
10
23
|
"ISphereonKeyManager": "./src/types/ISphereonKeyManager.ts"
|
|
11
24
|
}
|
|
12
25
|
},
|
|
13
26
|
"scripts": {
|
|
14
|
-
"build": "
|
|
27
|
+
"build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json",
|
|
15
28
|
"generate-plugin-schema": "sphereon dev generate-plugin-schema"
|
|
16
29
|
},
|
|
17
30
|
"dependencies": {
|
|
18
31
|
"@veramo/core": "4.2.0",
|
|
19
32
|
"@veramo/key-manager": "4.2.0",
|
|
20
|
-
"uint8arrays": "
|
|
33
|
+
"uint8arrays": "3.1.1"
|
|
21
34
|
},
|
|
22
35
|
"devDependencies": {
|
|
23
36
|
"@mattrglobal/bbs-signatures": "^1.3.1",
|
|
24
|
-
"@sphereon/ssi-sdk-ext.key-utils": "0.28.1-
|
|
25
|
-
"@sphereon/ssi-sdk-ext.kms-local": "0.28.1-
|
|
26
|
-
"@sphereon/ssi-sdk.dev": "0.
|
|
37
|
+
"@sphereon/ssi-sdk-ext.key-utils": "0.28.1-next.53+5199437",
|
|
38
|
+
"@sphereon/ssi-sdk-ext.kms-local": "0.28.1-next.53+5199437",
|
|
39
|
+
"@sphereon/ssi-sdk.dev": "0.33.1-feature.jose.vcdm.67"
|
|
27
40
|
},
|
|
28
41
|
"resolutions": {
|
|
29
42
|
"jsonld": "npm:@digitalcredentials/jsonld@^5.2.1",
|
|
30
43
|
"jsonld-signatures": "npm:@digitalcredentials/jsonld-signatures@^9.3.1"
|
|
31
44
|
},
|
|
32
45
|
"files": [
|
|
33
|
-
"dist
|
|
34
|
-
"src
|
|
46
|
+
"dist",
|
|
47
|
+
"src",
|
|
35
48
|
"plugin.schema.json",
|
|
36
49
|
"README.md",
|
|
37
50
|
"LICENSE"
|
|
@@ -47,5 +60,5 @@
|
|
|
47
60
|
"kms",
|
|
48
61
|
"Veramo"
|
|
49
62
|
],
|
|
50
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "5199437962ccac49358d94a2a5ed9c81ddb1f04b"
|
|
51
64
|
}
|
package/plugin.schema.json
CHANGED
|
@@ -22,22 +22,12 @@
|
|
|
22
22
|
"description": "Optional. Key meta data"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
|
-
"required": [
|
|
26
|
-
"type"
|
|
27
|
-
],
|
|
25
|
+
"required": ["type"],
|
|
28
26
|
"description": "Input arguments for {@link ISphereonKeyManager.keyManagerCreate | keyManagerCreate }"
|
|
29
27
|
},
|
|
30
28
|
"TKeyType": {
|
|
31
29
|
"type": "string",
|
|
32
|
-
"enum": [
|
|
33
|
-
"Ed25519",
|
|
34
|
-
"Secp256k1",
|
|
35
|
-
"Secp256r1",
|
|
36
|
-
"X25519",
|
|
37
|
-
"Bls12381G1",
|
|
38
|
-
"Bls12381G2",
|
|
39
|
-
"RSA"
|
|
40
|
-
],
|
|
30
|
+
"enum": ["Ed25519", "Secp256k1", "Secp256r1", "X25519", "Bls12381G1", "Bls12381G2", "RSA"],
|
|
41
31
|
"description": "Cryptographic key type."
|
|
42
32
|
},
|
|
43
33
|
"IkeyOptions": {
|
|
@@ -109,13 +99,7 @@
|
|
|
109
99
|
"description": "Optional. Key metadata. This should be used to determine which algorithms are supported."
|
|
110
100
|
}
|
|
111
101
|
},
|
|
112
|
-
"required": [
|
|
113
|
-
"kid",
|
|
114
|
-
"kms",
|
|
115
|
-
"privateKeyHex",
|
|
116
|
-
"publicKeyHex",
|
|
117
|
-
"type"
|
|
118
|
-
]
|
|
102
|
+
"required": ["kid", "kms", "privateKeyHex", "publicKeyHex", "type"]
|
|
119
103
|
},
|
|
120
104
|
"ISphereonKeyManagerHandleExpirationsArgs": {
|
|
121
105
|
"type": "object",
|
|
@@ -156,12 +140,7 @@
|
|
|
156
140
|
"description": "Optional. Key metadata. This should be used to determine which algorithms are supported."
|
|
157
141
|
}
|
|
158
142
|
},
|
|
159
|
-
"required": [
|
|
160
|
-
"kid",
|
|
161
|
-
"kms",
|
|
162
|
-
"type",
|
|
163
|
-
"publicKeyHex"
|
|
164
|
-
],
|
|
143
|
+
"required": ["kid", "kms", "type", "publicKeyHex"],
|
|
165
144
|
"description": "Represents information about a managed key. Private or secret key material is NOT present."
|
|
166
145
|
},
|
|
167
146
|
"MinimalImportableKey": {
|
|
@@ -236,9 +215,7 @@
|
|
|
236
215
|
"type": "number"
|
|
237
216
|
}
|
|
238
217
|
},
|
|
239
|
-
"required": [
|
|
240
|
-
"byteLength"
|
|
241
|
-
]
|
|
218
|
+
"required": ["byteLength"]
|
|
242
219
|
},
|
|
243
220
|
{}
|
|
244
221
|
]
|
|
@@ -253,13 +230,7 @@
|
|
|
253
230
|
"type": "number"
|
|
254
231
|
}
|
|
255
232
|
},
|
|
256
|
-
"required": [
|
|
257
|
-
"BYTES_PER_ELEMENT",
|
|
258
|
-
"buffer",
|
|
259
|
-
"byteLength",
|
|
260
|
-
"byteOffset",
|
|
261
|
-
"length"
|
|
262
|
-
],
|
|
233
|
+
"required": ["BYTES_PER_ELEMENT", "buffer", "byteLength", "byteOffset", "length"],
|
|
263
234
|
"additionalProperties": {
|
|
264
235
|
"type": "number"
|
|
265
236
|
}
|
|
@@ -269,19 +240,11 @@
|
|
|
269
240
|
},
|
|
270
241
|
"encoding": {
|
|
271
242
|
"type": "string",
|
|
272
|
-
"enum": [
|
|
273
|
-
"utf-8",
|
|
274
|
-
"base16",
|
|
275
|
-
"base64",
|
|
276
|
-
"hex"
|
|
277
|
-
],
|
|
243
|
+
"enum": ["utf-8", "base16", "base64", "hex"],
|
|
278
244
|
"description": "If the data is a \"string\" then you can specify which encoding is used. Default is \"utf-8\""
|
|
279
245
|
}
|
|
280
246
|
},
|
|
281
|
-
"required": [
|
|
282
|
-
"data",
|
|
283
|
-
"keyRef"
|
|
284
|
-
],
|
|
247
|
+
"required": ["data", "keyRef"],
|
|
285
248
|
"description": "Input arguments for {@link ISphereonKeyManagerSignArgs.keyManagerSign | keyManagerSign }"
|
|
286
249
|
},
|
|
287
250
|
"ISphereonKeyManagerVerifyArgs": {
|
|
@@ -314,9 +277,7 @@
|
|
|
314
277
|
"type": "number"
|
|
315
278
|
}
|
|
316
279
|
},
|
|
317
|
-
"required": [
|
|
318
|
-
"byteLength"
|
|
319
|
-
]
|
|
280
|
+
"required": ["byteLength"]
|
|
320
281
|
},
|
|
321
282
|
{}
|
|
322
283
|
]
|
|
@@ -331,13 +292,7 @@
|
|
|
331
292
|
"type": "number"
|
|
332
293
|
}
|
|
333
294
|
},
|
|
334
|
-
"required": [
|
|
335
|
-
"BYTES_PER_ELEMENT",
|
|
336
|
-
"buffer",
|
|
337
|
-
"byteLength",
|
|
338
|
-
"byteOffset",
|
|
339
|
-
"length"
|
|
340
|
-
],
|
|
295
|
+
"required": ["BYTES_PER_ELEMENT", "buffer", "byteLength", "byteOffset", "length"],
|
|
341
296
|
"additionalProperties": {
|
|
342
297
|
"type": "number"
|
|
343
298
|
}
|
|
@@ -346,12 +301,7 @@
|
|
|
346
301
|
"type": "string"
|
|
347
302
|
}
|
|
348
303
|
},
|
|
349
|
-
"required": [
|
|
350
|
-
"publicKeyHex",
|
|
351
|
-
"type",
|
|
352
|
-
"data",
|
|
353
|
-
"signature"
|
|
354
|
-
]
|
|
304
|
+
"required": ["publicKeyHex", "type", "data", "signature"]
|
|
355
305
|
}
|
|
356
306
|
},
|
|
357
307
|
"methods": {
|
|
@@ -427,4 +377,4 @@
|
|
|
427
377
|
}
|
|
428
378
|
}
|
|
429
379
|
}
|
|
430
|
-
}
|
|
380
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { SphereonKeyManager } from '../agent/SphereonKeyManager'
|
|
2
|
-
import { MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'
|
|
3
1
|
import { SphereonKeyManagementSystem } from '@sphereon/ssi-sdk-ext.kms-local'
|
|
2
|
+
import { MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'
|
|
3
|
+
import { describe, expect, it } from 'vitest'
|
|
4
|
+
import { SphereonKeyManager } from '../agent/SphereonKeyManager'
|
|
4
5
|
|
|
5
6
|
describe('@sphereon/ssi-sdk-ext.key-manager key functionalities', () => {
|
|
6
7
|
const kms = new SphereonKeyManager({
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { generatePrivateKeyHex } from '@sphereon/ssi-sdk-ext.key-utils'
|
|
2
|
-
import { SphereonKeyManager } from '../agent/SphereonKeyManager'
|
|
3
|
-
import { MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'
|
|
4
2
|
import { SphereonKeyManagementSystem } from '@sphereon/ssi-sdk-ext.kms-local'
|
|
3
|
+
import { MemoryKeyStore, MemoryPrivateKeyStore } from '@veramo/key-manager'
|
|
4
|
+
import { beforeAll, describe, expect, it } from 'vitest'
|
|
5
|
+
import { SphereonKeyManager } from '../agent/SphereonKeyManager'
|
|
5
6
|
|
|
6
7
|
describe('@sphereon/ssi-sdk-ext.kms-local encrypt/decrypt', () => {
|
|
7
8
|
const EXAMPLE_PAYLOAD = 'EXAMPLE payload! Could be anything'
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { calculateJwkThumbprintForKey, toJwk, verifyRawSignature } from '@sphereon/ssi-sdk-ext.key-utils'
|
|
2
|
-
import { IKey, KeyMetadata, ManagedKeyInfo } from '@veramo/core'
|
|
2
|
+
import type { IKey, KeyMetadata, ManagedKeyInfo } from '@veramo/core'
|
|
3
3
|
import { AbstractKeyManagementSystem, AbstractKeyStore, KeyManager as VeramoKeyManager } from '@veramo/key-manager'
|
|
4
|
-
|
|
4
|
+
// @ts-ignore
|
|
5
5
|
import * as u8a from 'uint8arrays'
|
|
6
6
|
import {
|
|
7
7
|
hasKeyOptions,
|
|
8
|
-
IKeyManagerGetArgs,
|
|
9
|
-
ISphereonKeyManager,
|
|
10
|
-
ISphereonKeyManagerCreateArgs,
|
|
11
|
-
ISphereonKeyManagerHandleExpirationsArgs,
|
|
12
|
-
ISphereonKeyManagerSignArgs,
|
|
13
|
-
ISphereonKeyManagerVerifyArgs,
|
|
8
|
+
type IKeyManagerGetArgs,
|
|
9
|
+
type ISphereonKeyManager,
|
|
10
|
+
type ISphereonKeyManagerCreateArgs,
|
|
11
|
+
type ISphereonKeyManagerHandleExpirationsArgs,
|
|
12
|
+
type ISphereonKeyManagerSignArgs,
|
|
13
|
+
type ISphereonKeyManagerVerifyArgs,
|
|
14
14
|
} from '../types/ISphereonKeyManager'
|
|
15
15
|
|
|
16
|
+
const { fromString } = u8a
|
|
17
|
+
|
|
16
18
|
export const sphereonKeyManagerMethods: Array<string> = [
|
|
17
19
|
'keyManagerCreate',
|
|
18
20
|
'keyManagerGet',
|
|
@@ -79,7 +81,7 @@ export class SphereonKeyManager extends VeramoKeyManager {
|
|
|
79
81
|
const keyInfo = await this.keyManagerGet({ kid: args.keyRef })
|
|
80
82
|
const kms = this.getKmsByName(keyInfo.kms)
|
|
81
83
|
if (keyInfo.type === 'Bls12381G2') {
|
|
82
|
-
return await kms.sign({ keyRef: keyInfo, data: typeof args.data === 'string' ?
|
|
84
|
+
return await kms.sign({ keyRef: keyInfo, data: typeof args.data === 'string' ? fromString(args.data) : args.data })
|
|
83
85
|
}
|
|
84
86
|
// @ts-ignore // we can pass in uint8arrays as well, which the super also can handle but does not expose in its types
|
|
85
87
|
return await super.keyManagerSign({ ...args, keyRef: keyInfo.kid })
|
|
@@ -96,7 +98,7 @@ export class SphereonKeyManager extends VeramoKeyManager {
|
|
|
96
98
|
return await verifyRawSignature({
|
|
97
99
|
key: toJwk(args.publicKeyHex, args.type),
|
|
98
100
|
data: args.data,
|
|
99
|
-
signature:
|
|
101
|
+
signature: fromString(args.signature, 'utf-8'),
|
|
100
102
|
})
|
|
101
103
|
}
|
|
102
104
|
|
|
@@ -150,7 +152,6 @@ export class SphereonKeyManager extends VeramoKeyManager {
|
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
154
|
|
|
153
|
-
|
|
154
155
|
get defaultKms(): string {
|
|
155
156
|
return this._defaultKms
|
|
156
157
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IKeyManager, IKeyManagerSignArgs, IPluginMethodMap, KeyMetadata, ManagedKeyInfo, MinimalImportableKey, TKeyType } from '@veramo/core'
|
|
1
|
+
import type { IKeyManager, IKeyManagerSignArgs, IPluginMethodMap, KeyMetadata, ManagedKeyInfo, MinimalImportableKey, TKeyType } from '@veramo/core'
|
|
2
2
|
|
|
3
3
|
export type PartialKey = ManagedKeyInfo & { privateKeyHex: string }
|
|
4
4
|
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { IKey, ManagedKeyInfo } from '@veramo/core';
|
|
2
|
-
import { AbstractKeyManagementSystem, AbstractKeyStore, KeyManager as VeramoKeyManager } from '@veramo/key-manager';
|
|
3
|
-
import { IKeyManagerGetArgs, ISphereonKeyManager, ISphereonKeyManagerCreateArgs, ISphereonKeyManagerHandleExpirationsArgs, ISphereonKeyManagerSignArgs, ISphereonKeyManagerVerifyArgs } from '../types/ISphereonKeyManager';
|
|
4
|
-
export declare const sphereonKeyManagerMethods: Array<string>;
|
|
5
|
-
export declare class SphereonKeyManager extends VeramoKeyManager {
|
|
6
|
-
private kmsStore;
|
|
7
|
-
private readonly availableKmses;
|
|
8
|
-
_defaultKms: string;
|
|
9
|
-
readonly kmsMethods: ISphereonKeyManager;
|
|
10
|
-
constructor(options: {
|
|
11
|
-
store: AbstractKeyStore;
|
|
12
|
-
kms: Record<string, AbstractKeyManagementSystem>;
|
|
13
|
-
defaultKms?: string;
|
|
14
|
-
});
|
|
15
|
-
keyManagerGetDefaultKeyManagementSystem(): Promise<string>;
|
|
16
|
-
keyManagerCreate(args: ISphereonKeyManagerCreateArgs): Promise<ManagedKeyInfo>;
|
|
17
|
-
keyManagerSign(args: ISphereonKeyManagerSignArgs): Promise<string>;
|
|
18
|
-
keyManagerVerify(args: ISphereonKeyManagerVerifyArgs): Promise<boolean>;
|
|
19
|
-
keyManagerListKeys(): Promise<ManagedKeyInfo[]>;
|
|
20
|
-
keyManagerHandleExpirations(args: ISphereonKeyManagerHandleExpirationsArgs): Promise<Array<ManagedKeyInfo>>;
|
|
21
|
-
private getKmsByName;
|
|
22
|
-
keyManagerGet({ kid }: IKeyManagerGetArgs): Promise<IKey>;
|
|
23
|
-
get defaultKms(): string;
|
|
24
|
-
set defaultKms(kms: string);
|
|
25
|
-
setKms(name: string, kms: AbstractKeyManagementSystem): void;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=SphereonKeyManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SphereonKeyManager.d.ts","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAe,cAAc,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGnH,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,wCAAwC,EACxC,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,8BAA8B,CAAA;AAErC,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,MAAM,CASnD,CAAA;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IACrE,WAAW,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAA;gBAE5B,OAAO,EAAE;QAAE,KAAK,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAevH,uCAAuC,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBvF,cAAc,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlE,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAevE,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI/C,2BAA2B,CAAC,IAAI,EAAE,wCAAwC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAiBjH,OAAO,CAAC,YAAY;IASd,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/D,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAKzB;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,2BAA2B,GAAG,IAAI;CAG7D"}
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.SphereonKeyManager = exports.sphereonKeyManagerMethods = void 0;
|
|
36
|
-
const ssi_sdk_ext_key_utils_1 = require("@sphereon/ssi-sdk-ext.key-utils");
|
|
37
|
-
const key_manager_1 = require("@veramo/key-manager");
|
|
38
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
39
|
-
const ISphereonKeyManager_1 = require("../types/ISphereonKeyManager");
|
|
40
|
-
exports.sphereonKeyManagerMethods = [
|
|
41
|
-
'keyManagerCreate',
|
|
42
|
-
'keyManagerGet',
|
|
43
|
-
'keyManagerImport',
|
|
44
|
-
'keyManagerSign',
|
|
45
|
-
'keyManagerVerify',
|
|
46
|
-
'keyManagerListKeys',
|
|
47
|
-
'keyManagerGetDefaultKeyManagementSystem',
|
|
48
|
-
'keyManagerHandleExpirations',
|
|
49
|
-
];
|
|
50
|
-
class SphereonKeyManager extends key_manager_1.KeyManager {
|
|
51
|
-
constructor(options) {
|
|
52
|
-
var _a;
|
|
53
|
-
super({ store: options.store, kms: options.kms });
|
|
54
|
-
this.kmsStore = options.store;
|
|
55
|
-
this.availableKmses = options.kms;
|
|
56
|
-
this._defaultKms = (_a = options.defaultKms) !== null && _a !== void 0 ? _a : Object.keys(this.availableKmses)[0];
|
|
57
|
-
if (!Object.keys(this.availableKmses).includes(this._defaultKms)) {
|
|
58
|
-
throw Error(`Default KMS needs to be listed in the kms object as well. Found kms-es: ${Object.keys(this.availableKmses).join(',')}`);
|
|
59
|
-
}
|
|
60
|
-
const methods = this.methods;
|
|
61
|
-
methods.keyManagerVerify = this.keyManagerVerify.bind(this);
|
|
62
|
-
methods.keyManagerListKeys = this.keyManagerListKeys.bind(this);
|
|
63
|
-
methods.keyManagerGetDefaultKeyManagementSystem = this.keyManagerGetDefaultKeyManagementSystem.bind(this);
|
|
64
|
-
this.kmsMethods = methods;
|
|
65
|
-
}
|
|
66
|
-
keyManagerGetDefaultKeyManagementSystem() {
|
|
67
|
-
return Promise.resolve(this._defaultKms);
|
|
68
|
-
}
|
|
69
|
-
keyManagerCreate(args) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
var _a, _b, _c, _d, _e, _f;
|
|
72
|
-
const kms = this.getKmsByName((_a = args.kms) !== null && _a !== void 0 ? _a : this._defaultKms);
|
|
73
|
-
const meta = Object.assign(Object.assign({}, args.meta), (args.opts && { opts: args.opts }));
|
|
74
|
-
if ((0, ISphereonKeyManager_1.hasKeyOptions)(meta) && ((_b = meta.opts) === null || _b === void 0 ? void 0 : _b.ephemeral) && !((_c = meta.opts.expiration) === null || _c === void 0 ? void 0 : _c.removalDate)) {
|
|
75
|
-
// Make sure we set a delete date on an ephemeral key
|
|
76
|
-
meta.opts = Object.assign(Object.assign({}, meta.opts), { expiration: Object.assign(Object.assign({}, (_d = meta.opts) === null || _d === void 0 ? void 0 : _d.expiration), { removalDate: new Date(Date.now() + 5 * 60 * 1000) }) });
|
|
77
|
-
}
|
|
78
|
-
const partialKey = yield kms.createKey({ type: args.type, meta });
|
|
79
|
-
const key = Object.assign(Object.assign({}, partialKey), { kms: (_e = args.kms) !== null && _e !== void 0 ? _e : this._defaultKms });
|
|
80
|
-
key.meta = Object.assign(Object.assign({}, meta), key.meta);
|
|
81
|
-
key.meta.jwkThumbprint = (_f = key.meta.jwkThumbprint) !== null && _f !== void 0 ? _f : (0, ssi_sdk_ext_key_utils_1.calculateJwkThumbprintForKey)({ key });
|
|
82
|
-
yield this.kmsStore.import(key);
|
|
83
|
-
if (key.privateKeyHex) {
|
|
84
|
-
// Make sure to not export the private key
|
|
85
|
-
delete key.privateKeyHex;
|
|
86
|
-
}
|
|
87
|
-
return key;
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//FIXME extend the IKeyManagerSignArgs.data to be a string or array of strings
|
|
91
|
-
keyManagerSign(args) {
|
|
92
|
-
const _super = Object.create(null, {
|
|
93
|
-
keyManagerSign: { get: () => super.keyManagerSign }
|
|
94
|
-
});
|
|
95
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
-
const keyInfo = yield this.keyManagerGet({ kid: args.keyRef });
|
|
97
|
-
const kms = this.getKmsByName(keyInfo.kms);
|
|
98
|
-
if (keyInfo.type === 'Bls12381G2') {
|
|
99
|
-
return yield kms.sign({ keyRef: keyInfo, data: typeof args.data === 'string' ? u8a.fromString(args.data) : args.data });
|
|
100
|
-
}
|
|
101
|
-
// @ts-ignore // we can pass in uint8arrays as well, which the super also can handle but does not expose in its types
|
|
102
|
-
return yield _super.keyManagerSign.call(this, Object.assign(Object.assign({}, args), { keyRef: keyInfo.kid }));
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
keyManagerVerify(args) {
|
|
106
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
-
if (args.kms) {
|
|
108
|
-
const kms = this.getKmsByName(args.kms);
|
|
109
|
-
if (kms && 'verify' in kms && typeof kms.verify === 'function') {
|
|
110
|
-
// @ts-ignore
|
|
111
|
-
return yield kms.verify(args);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return yield (0, ssi_sdk_ext_key_utils_1.verifyRawSignature)({
|
|
115
|
-
key: (0, ssi_sdk_ext_key_utils_1.toJwk)(args.publicKeyHex, args.type),
|
|
116
|
-
data: args.data,
|
|
117
|
-
signature: u8a.fromString(args.signature, 'utf-8'),
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
keyManagerListKeys() {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
return this.kmsStore.list({});
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
keyManagerHandleExpirations(args) {
|
|
127
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const keys = yield this.keyManagerListKeys();
|
|
129
|
-
const expiredKeys = keys
|
|
130
|
-
.filter((key) => (0, ISphereonKeyManager_1.hasKeyOptions)(key.meta))
|
|
131
|
-
.filter((key) => {
|
|
132
|
-
var _a, _b;
|
|
133
|
-
if ((0, ISphereonKeyManager_1.hasKeyOptions)(key.meta) && ((_b = (_a = key.meta) === null || _a === void 0 ? void 0 : _a.opts) === null || _b === void 0 ? void 0 : _b.expiration)) {
|
|
134
|
-
const expiration = key.meta.opts.expiration;
|
|
135
|
-
return !(expiration.expiryDate && expiration.expiryDate.getMilliseconds() > Date.now());
|
|
136
|
-
}
|
|
137
|
-
return false;
|
|
138
|
-
});
|
|
139
|
-
if (args.skipRemovals !== true) {
|
|
140
|
-
yield Promise.all(expiredKeys.map((key) => this.keyManagerDelete({ kid: key.kid })));
|
|
141
|
-
}
|
|
142
|
-
return keys;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
getKmsByName(name) {
|
|
146
|
-
const kms = this.availableKmses[name];
|
|
147
|
-
if (!kms) {
|
|
148
|
-
throw Error(`invalid_argument: This agent has no registered KeyManagementSystem with name='${name}'`);
|
|
149
|
-
}
|
|
150
|
-
return kms;
|
|
151
|
-
}
|
|
152
|
-
//todo https://sphereon.atlassian.net/browse/SDK-28 improve the logic for keyManagerGet in sphereon-key-manager
|
|
153
|
-
keyManagerGet(_a) {
|
|
154
|
-
return __awaiter(this, arguments, void 0, function* ({ kid }) {
|
|
155
|
-
try {
|
|
156
|
-
const key = yield this.kmsStore.get({ kid });
|
|
157
|
-
return key;
|
|
158
|
-
}
|
|
159
|
-
catch (e) {
|
|
160
|
-
const keys = yield this.keyManagerListKeys();
|
|
161
|
-
const foundKey = keys.find((key) => {
|
|
162
|
-
var _a, _b;
|
|
163
|
-
return key.publicKeyHex === kid ||
|
|
164
|
-
((_a = key.meta) === null || _a === void 0 ? void 0 : _a.jwkThumbprint) === kid ||
|
|
165
|
-
(((_b = key.meta) === null || _b === void 0 ? void 0 : _b.jwkThumbprint) == null && (0, ssi_sdk_ext_key_utils_1.calculateJwkThumbprintForKey)({ key }) === kid);
|
|
166
|
-
});
|
|
167
|
-
if (foundKey) {
|
|
168
|
-
return foundKey;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
throw new Error(`Key with kid ${kid} not found`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
get defaultKms() {
|
|
177
|
-
return this._defaultKms;
|
|
178
|
-
}
|
|
179
|
-
set defaultKms(kms) {
|
|
180
|
-
if (!Object.keys(this.availableKmses).includes(kms)) {
|
|
181
|
-
throw Error(`Default KMS needs to be listed in the kms object as well. Found kms-es: ${Object.keys(this.availableKmses).join(',')}`);
|
|
182
|
-
}
|
|
183
|
-
this._defaultKms = kms;
|
|
184
|
-
}
|
|
185
|
-
setKms(name, kms) {
|
|
186
|
-
this.availableKmses[name] = kms;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
exports.SphereonKeyManager = SphereonKeyManager;
|
|
190
|
-
//# sourceMappingURL=SphereonKeyManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SphereonKeyManager.js","sourceRoot":"","sources":["../../src/agent/SphereonKeyManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAAyG;AAEzG,qDAAmH;AAEnH,iDAAkC;AAClC,sEAQqC;AAExB,QAAA,yBAAyB,GAAkB;IACtD,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,yCAAyC;IACzC,6BAA6B;CAC9B,CAAA;AAED,MAAa,kBAAmB,SAAQ,wBAAgB;IAOtD,YAAY,OAA2G;;QACrH,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,MAAM,KAAK,CAAC,2EAA2E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,OAAO,CAAC,uCAAuC,GAAG,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzG,IAAI,CAAC,UAAU,GAAkC,OAAQ,CAAA;IAC3D,CAAC;IAED,uCAAuC;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC1C,CAAC;IAEc,gBAAgB,CAAC,IAAmC;;;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAA,IAAI,CAAC,GAAG,mCAAI,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3D,MAAM,IAAI,mCAAqB,IAAI,CAAC,IAAI,GAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAE,CAAA;YACjF,IAAI,IAAA,mCAAa,EAAC,IAAI,CAAC,KAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,SAAS,CAAA,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAA,EAAE,CAAC;gBACtF,qDAAqD;gBACrD,IAAI,CAAC,IAAI,mCACJ,IAAI,CAAC,IAAI,KACZ,UAAU,kCAAO,MAAA,IAAI,CAAC,IAAI,0CAAE,UAAU,KAAE,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAC1F,CAAA;YACH,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACjE,MAAM,GAAG,mCAAc,UAAU,KAAE,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,IAAI,CAAC,WAAW,GAAE,CAAA;YACtE,GAAG,CAAC,IAAI,mCAAQ,IAAI,GAAK,GAAG,CAAC,IAAI,CAAE,CAAA;YACnC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,MAAA,GAAG,CAAC,IAAI,CAAC,aAAa,mCAAI,IAAA,oDAA4B,EAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAExF,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,0CAA0C;gBAC1C,OAAO,GAAG,CAAC,aAAa,CAAA;YAC1B,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;KAAA;IAED,8EAA8E;IAExE,cAAc,CAAC,IAAiC;;;;;YACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAClC,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACzH,CAAC;YACD,qHAAqH;YACrH,OAAO,MAAM,OAAM,cAAc,4CAAM,IAAI,KAAE,MAAM,EAAE,OAAO,CAAC,GAAG,IAAG,CAAA;QACrE,CAAC;KAAA;IAEK,gBAAgB,CAAC,IAAmC;;YACxD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACvC,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC/D,aAAa;oBACb,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;YACD,OAAO,MAAM,IAAA,0CAAkB,EAAC;gBAC9B,GAAG,EAAE,IAAA,6BAAK,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;aACnD,CAAC,CAAA;QACJ,CAAC;KAAA;IAEK,kBAAkB;;YACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;KAAA;IAEK,2BAA2B,CAAC,IAA8C;;YAC9E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAC5C,MAAM,WAAW,GAAG,IAAI;iBACrB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,mCAAa,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACxC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;;gBACd,IAAI,IAAA,mCAAa,EAAC,GAAG,CAAC,IAAI,CAAC,KAAI,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,0CAAE,UAAU,CAAA,EAAE,CAAC;oBAC1D,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;oBAC3C,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;gBACzF,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YACJ,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACtF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAEO,YAAY,CAAC,IAAY;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,KAAK,CAAC,iFAAiF,IAAI,GAAG,CAAC,CAAA;QACvG,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,+GAA+G;IACzG,aAAa;6DAAC,EAAE,GAAG,EAAsB;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC5C,OAAO,GAAG,CAAA;YACZ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAqB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,CAAC,GAAG,EAAE,EAAE;;oBACN,OAAA,GAAG,CAAC,YAAY,KAAK,GAAG;wBACxB,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,aAAa,MAAK,GAAG;wBAC/B,CAAC,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,aAAa,KAAI,IAAI,IAAI,IAAA,oDAA4B,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA;iBAAA,CACrF,CAAA;gBACD,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,QAAgB,CAAA;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAGD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,KAAK,CAAC,2EAA2E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtI,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,GAAgC;QACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACjC,CAAC;CACF;AA7ID,gDA6IC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM,KAAmC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC1F,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA"}
|