@sphereon/ssi-sdk-ext.mnemonic-seed-manager 0.29.1-next.3 → 0.34.1-feature.merge.crypto.extensions.modules.33

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
@@ -78,7 +78,8 @@ var require_plugin_schema = __commonJS({
78
78
  persist: {
79
79
  type: "boolean"
80
80
  }
81
- }
81
+ },
82
+ additionalProperties: false
82
83
  },
83
84
  DeleteResult: {
84
85
  type: "object",
@@ -93,9 +94,17 @@ var require_plugin_schema = __commonJS({
93
94
  },
94
95
  required: [
95
96
  "raw"
96
- ]
97
+ ],
98
+ additionalProperties: false
97
99
  },
98
100
  ManagedKeyInfo: {
101
+ $ref: '#/components/schemas/Omit<IKey,"privateKeyHex">',
102
+ description: "Represents information about a managed key. Private or secret key material is NOT present."
103
+ },
104
+ 'Omit<IKey,"privateKeyHex">': {
105
+ $ref: '#/components/schemas/Pick<IKey,Exclude<("kid"|"kms"|"type"|"publicKeyHex"|"privateKeyHex"|"meta"),"privateKeyHex">>'
106
+ },
107
+ 'Pick<IKey,Exclude<("kid"|"kms"|"type"|"publicKeyHex"|"privateKeyHex"|"meta"),"privateKeyHex">>': {
99
108
  type: "object",
100
109
  properties: {
101
110
  kid: {
@@ -132,7 +141,7 @@ var require_plugin_schema = __commonJS({
132
141
  "type",
133
142
  "publicKeyHex"
134
143
  ],
135
- description: "Represents information about a managed key. Private or secret key material is NOT present."
144
+ additionalProperties: false
136
145
  },
137
146
  TKeyType: {
138
147
  type: "string",
@@ -168,7 +177,8 @@ var require_plugin_schema = __commonJS({
168
177
  chainCode: {
169
178
  type: "string"
170
179
  }
171
- }
180
+ },
181
+ additionalProperties: false
172
182
  },
173
183
  IMnemonicGeneratorArgs: {
174
184
  type: "object",
@@ -192,7 +202,8 @@ var require_plugin_schema = __commonJS({
192
202
  },
193
203
  required: [
194
204
  "bits"
195
- ]
205
+ ],
206
+ additionalProperties: false
196
207
  },
197
208
  IMnemonicInfoResult: {
198
209
  type: "object",
@@ -240,7 +251,8 @@ var require_plugin_schema = __commonJS({
240
251
  seed: {
241
252
  type: "string"
242
253
  }
243
- }
254
+ },
255
+ additionalProperties: false
244
256
  },
245
257
  ISeedGeneratorArgs: {
246
258
  type: "object",
@@ -254,7 +266,8 @@ var require_plugin_schema = __commonJS({
254
266
  },
255
267
  required: [
256
268
  "mnemonic"
257
- ]
269
+ ],
270
+ additionalProperties: false
258
271
  },
259
272
  IMnemonicVerificationArgs: {
260
273
  type: "object",
@@ -274,7 +287,8 @@ var require_plugin_schema = __commonJS({
274
287
  },
275
288
  required: [
276
289
  "wordList"
277
- ]
290
+ ],
291
+ additionalProperties: false
278
292
  },
279
293
  IPartialMnemonicVerificationArgs: {
280
294
  type: "object",
@@ -304,7 +318,8 @@ var require_plugin_schema = __commonJS({
304
318
  },
305
319
  required: [
306
320
  "indexedWordList"
307
- ]
321
+ ],
322
+ additionalProperties: false
308
323
  }
309
324
  },
310
325
  methods: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/entities/MnemonicEntity.ts","../src/agent/MnemonicSeedManager.ts","../src/migrations/generic/1-CreateMnemonics.ts","../src/migrations/postgres/1659566636105-CreateMnemonics.ts","../src/migrations/sqlite/1659566622817-CreateMnemonics.ts","../src/migrations/generic/index.ts"],"sourcesContent":["{\n \"IMnemonicSeedManager\": {\n \"components\": {\n \"schemas\": {\n \"IMnemonicInfoStoreArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"DeleteResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"raw\": {},\n \"affected\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"raw\"\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\": [\n \"kid\",\n \"kms\",\n \"type\",\n \"publicKeyHex\"\n ],\n \"description\": \"Represents information about a managed key. Private or secret key material is NOT present.\"\n },\n \"TKeyType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\",\n \"Secp256r1\",\n \"X25519\",\n \"Bls12381G1\",\n \"Bls12381G2\",\n \"RSA\"\n ],\n \"description\": \"Cryptographic key type.\"\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 \"IMnemonicInfoKeyResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n }\n }\n },\n \"IMnemonicGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"bits\": {\n \"type\": \"number\",\n \"enum\": [\n 128,\n 160,\n 192,\n 224,\n 256\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"bits\"\n ]\n },\n \"IMnemonicInfoResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n },\n \"succeeded\": {\n \"type\": \"boolean\"\n },\n \"seed\": {\n \"type\": \"string\"\n }\n }\n },\n \"ISeedGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"mnemonic\"\n ]\n },\n \"IMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"wordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"wordList\"\n ]\n },\n \"IPartialMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"indexedWordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"maxItems\": 2\n }\n }\n },\n \"required\": [\n \"indexedWordList\"\n ]\n }\n },\n \"methods\": {\n \"deleteMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/DeleteResult\"\n }\n },\n \"generateKeysFromMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n },\n \"generateMasterKey\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoKeyResult\"\n }\n },\n \"generateMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"generateSeed\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISeedGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"getMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"saveMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyPartialMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IPartialMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n }\n }\n }\n }\n}","import 'reflect-metadata'\nimport { MnemonicEntity } from './entities/MnemonicEntity'\n\n/**\n * @internal\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\n/**\n * @public\n */\nexport { MnemonicSeedManager } from './agent/MnemonicSeedManager'\nexport * from './types/IMnemonicSeedManager'\n\n/**\n * @internal\n */\nexport const MnemonicSeedManagerEntities = [MnemonicEntity]\n\n/**\n * @internal\n */\nexport { MnemonicSeedManagerMigrations } from './migrations'\n","import { Column, Entity, BaseEntity, PrimaryColumn } from 'typeorm'\n\n@Entity('Mnemonic')\nexport class MnemonicEntity extends BaseEntity {\n @PrimaryColumn({ name: 'id', type: 'varchar' })\n id!: string\n @Column({ name: 'hash', unique: true, type: 'varchar' })\n hash!: string\n @Column({ name: 'mnemonic', unique: true, type: 'varchar' })\n mnemonic!: string\n @Column({ name: 'master_key', default: null, type: 'varchar' })\n masterKey!: string\n @Column({ name: 'chain_code', default: null, type: 'varchar' })\n chainCode!: string\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { shaHasher } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { derivePath, getMasterKeyFromSeed, getPublicKey } from 'ed25519-hd-key'\nimport { IAgentPlugin, ManagedKeyInfo } from '@veramo/core'\nimport { AbstractSecretBox } from '@veramo/key-manager'\nimport * as bip39 from 'bip39'\nimport { DataSource } from 'typeorm'\n\nimport {\n DeleteResult,\n IMnemonicGeneratorArgs,\n IMnemonicInfoKeyResult,\n IMnemonicInfoResult,\n IMnemonicInfoStoreArgs,\n IMnemonicVerificationArgs,\n IPartialMnemonicVerificationArgs,\n IRequiredContext,\n ISeedGeneratorArgs,\n schema,\n UpdateResult,\n} from '../index'\nimport { IMnemonicSeedManager } from '../types/IMnemonicSeedManager'\n\nimport { MnemonicEntity } from '../entities/MnemonicEntity'\nimport { OrPromise } from '@veramo/utils'\n\n/**\n * @public\n */\nexport class MnemonicSeedManager implements IAgentPlugin {\n readonly schema = schema.IMnemonicInfoGenerator\n readonly methods: IMnemonicSeedManager = {\n generateMnemonic: this.generateMnemonic.bind(this),\n generateSeed: this.generateSeed.bind(this),\n verifyMnemonic: this.verifyMnemonic.bind(this),\n verifyPartialMnemonic: this.verifyPartialMnemonic.bind(this),\n saveMnemonicInfo: this.saveMnemonicInfo.bind(this),\n getMnemonicInfo: this.getMnemonicInfo.bind(this),\n deleteMnemonicInfo: this.deleteMnemonicInfo.bind(this),\n generateMasterKey: this.generateMasterKey.bind(this),\n generateKeysFromMnemonic: this.generateKeysFromMnemonic.bind(this),\n }\n\n constructor(private dbConnection: OrPromise<DataSource>, private secretBox?: AbstractSecretBox) {\n if (!secretBox) {\n console.warn('Please provide SecretBox to the KeyStore')\n }\n }\n\n private async generateMnemonic(args: IMnemonicGeneratorArgs): Promise<IMnemonicInfoResult> {\n const mnemonic = bip39.generateMnemonic(args.bits)\n if (args.persist) {\n return await this.saveMnemonicInfo({ id: args.id, mnemonic: mnemonic.split(' ') })\n }\n return { mnemonic: mnemonic.split(' ') }\n }\n\n private async verifyMnemonic(args: IMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: mnemonicInfo.mnemonic.join(' ') === args.wordList?.join(' ') }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async verifyPartialMnemonic(args: IPartialMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: args.indexedWordList.every((indexedWord) => mnemonicInfo.mnemonic?.indexOf(indexedWord[1]) === indexedWord[0]) }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateSeed(args: ISeedGeneratorArgs): Promise<IMnemonicInfoResult> {\n return Promise.resolve({\n seed: (await bip39.mnemonicToSeed(args.mnemonic.join(' '))).toString('hex'),\n })\n }\n\n private async saveMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n if (args.mnemonic && this.secretBox) {\n const mnemonic = args.mnemonic.join(' ')\n const hash = bytesToHex(shaHasher(mnemonic, 'sha256'))\n const mnemonicInfo = new MnemonicEntity()\n mnemonicInfo.id = args.id ? args.id : hash\n mnemonicInfo.hash = hash\n mnemonicInfo.mnemonic = await this.secretBox.encrypt(mnemonic)\n const result = await (await this.dbConnection).getRepository(MnemonicEntity).save(mnemonicInfo)\n return Promise.resolve({\n id: result.id,\n hash: result.hash,\n mnemonic: args.mnemonic,\n })\n } else {\n throw new Error('Mnemonic needs to be provided.')\n }\n }\n\n private async getMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await (await this.dbConnection)\n .getRepository(MnemonicEntity)\n .createQueryBuilder()\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .getOne()\n if (mnemonicInfo?.mnemonic) {\n const mnemonicStr = await this.secretBox?.decrypt(mnemonicInfo.mnemonic)\n return {\n id: mnemonicInfo.id,\n hash: mnemonicInfo.hash,\n mnemonic: mnemonicStr?.split(' '),\n }\n }\n return {}\n }\n\n private async deleteMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<DeleteResult> {\n return (await this.dbConnection)\n .createQueryBuilder()\n .delete()\n .from(MnemonicEntity)\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n\n private async saveMasterKey(args: IMnemonicInfoStoreArgs): Promise<UpdateResult> {\n if (args.masterKey) {\n return (await this.dbConnection)\n .createQueryBuilder()\n .update(MnemonicEntity)\n .set({ masterKey: args.masterKey })\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n throw new Error('Master Key needs to be provided.')\n }\n\n private async generateMasterKey(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoKeyResult> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic) {\n const mnemonicInfo = await this.generateSeed({ mnemonic })\n if (mnemonicInfo.seed) {\n if (args.type === 'Ed25519') {\n const { key, chainCode } = getMasterKeyFromSeed(mnemonicInfo.seed)\n await this.saveMasterKey({ masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') })\n return { masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') }\n } else {\n throw new Error('Secp256k1 keys are not supported yet')\n }\n }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateKeysFromMnemonic(args: IMnemonicInfoStoreArgs, context: IRequiredContext): Promise<ManagedKeyInfo> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic && context) {\n if (args.path && args.kms) {\n const seed = (await this.generateSeed({ mnemonic })).seed as string\n const { key, chainCode } = derivePath(args.path, seed)\n const extPrivateKey = Buffer.concat([key, chainCode])\n //FIXME it doesn't use any secp256k1 library to generate the public key, so it doesn't generate an extended key\n const publicKey = getPublicKey(key, args.withZeroBytes)\n return await context.agent.keyManagerImport({\n privateKeyHex: extPrivateKey.toString('hex'),\n publicKeyHex: publicKey.toString('hex'),\n type: 'Ed25519',\n kms: args.kms,\n })\n }\n throw new Error('Please provide kms and derivation path')\n }\n throw new Error('Master Key not found')\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\nimport Debug from 'debug'\nimport { CreateMnemonics1659566636105 } from '../postgres/1659566636105-CreateMnemonics'\nimport { CreateMnemonics1659566622817 } from '../sqlite/1659566622817-CreateMnemonics'\n\nconst debug = Debug('sphereon:ssi-sdk:migrations')\n\nexport class CreateMnemonics1659567079429 implements MigrationInterface {\n name = 'CreateMnemonics1659567079429'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n debug('migration: creating mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n debug('reverting mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566636105 implements MigrationInterface {\n name = 'CreateMnemonics1659566636105'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" character varying NOT NULL, \"hash\" character varying NOT NULL, \"mnemonic\" character varying NOT NULL, \"master_key\" character varying, \"chain_code\" character varying, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"), CONSTRAINT \"PK_mnemonic_id\" PRIMARY KEY (\"id\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566622817 implements MigrationInterface {\n name = 'CreateMnemonics1659566622817'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" varchar PRIMARY KEY NOT NULL, \"hash\" varchar NOT NULL, \"mnemonic\" varchar NOT NULL, \"master_key\" varchar, \"chain_code\" varchar, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { CreateMnemonics1659567079429 } from './1-CreateMnemonics'\n\n/**\n * The migrations array that SHOULD be used when initializing a TypeORM database connection.\n *\n * These ensure the correct creation of tables and the proper migrations of data when tables change between versions.\n *\n * @internal\n */\nexport const MnemonicSeedManagerMigrations = [CreateMnemonics1659567079429]\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,gCAAAA,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,sBAAwB;AAAA,QACtB,YAAc;AAAA,UACZ,SAAW;AAAA,YACT,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACf,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,cAAgB;AAAA,cACd,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,KAAO,CAAC;AAAA,gBACR,UAAY;AAAA,kBACV,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,gBAAkB;AAAA,cAChB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,KAAO;AAAA,kBACL,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,cAAgB;AAAA,kBACd,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,MAAQ;AAAA,kBACN,OAAS;AAAA,oBACP;AAAA,sBACE,MAAQ;AAAA,oBACV;AAAA,oBACA;AAAA,sBACE,MAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,aAAe;AAAA,gBACjB;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,aAAe;AAAA,YACjB;AAAA,YACA,UAAY;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,aAAe;AAAA,YACjB;AAAA,YACA,aAAe;AAAA,cACb,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,YAAc;AAAA,kBACZ,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,aAAe;AAAA,YACjB;AAAA,YACA,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,qBAAuB;AAAA,cACrB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACf,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,oBAAsB;AAAA,cACpB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,2BAA6B;AAAA,cAC3B,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,kCAAoC;AAAA,cAClC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACjB,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,OAAS;AAAA,sBACP;AAAA,wBACE,MAAQ;AAAA,sBACV;AAAA,sBACA;AAAA,wBACE,MAAQ;AAAA,sBACV;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,kBACd;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA,SAAW;AAAA,YACT,oBAAsB;AAAA,cACpB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,0BAA4B;AAAA,cAC1B,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,mBAAqB;AAAA,cACnB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,cAClB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,cAAgB;AAAA,cACd,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,iBAAmB;AAAA,cACjB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,cAClB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,gBAAkB;AAAA,cAChB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,uBAAyB;AAAA,cACvB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtWA;;;;;;;;AAAA,8BAAO;;;ACAP,qBAA0D;;;;;;;;;;;;AAGnD,IAAMC,iBAAN,cAA6BC,0BAAAA;SAAAA;;;EAElCC;EAEAC;EAEAC;EAEAC;EAEAC;AACF;;;IAVmBC,MAAM;IAAMC,MAAM;;;;;;IAEzBD,MAAM;IAAQE,QAAQ;IAAMD,MAAM;;;;;;IAElCD,MAAM;IAAYE,QAAQ;IAAMD,MAAM;;;;;;IAEtCD,MAAM;IAAcG,SAAS;IAAMF,MAAM;;;;;;IAEzCD,MAAM;IAAcG,SAAS;IAAMF,MAAM;;;;;;;;;ACZrD,mBAA2B;AAC3B,yBAA0B;AAC1B,4BAA+D;AAG/D,YAAuB;AAwBhB,IAAMG,sBAAN,MAAMA;EA7Bb,OA6BaA;;;;;EACFC,SAASA,OAAOC;EAChBC,UAAgC;IACvCC,kBAAkB,KAAKA,iBAAiBC,KAAK,IAAI;IACjDC,cAAc,KAAKA,aAAaD,KAAK,IAAI;IACzCE,gBAAgB,KAAKA,eAAeF,KAAK,IAAI;IAC7CG,uBAAuB,KAAKA,sBAAsBH,KAAK,IAAI;IAC3DI,kBAAkB,KAAKA,iBAAiBJ,KAAK,IAAI;IACjDK,iBAAiB,KAAKA,gBAAgBL,KAAK,IAAI;IAC/CM,oBAAoB,KAAKA,mBAAmBN,KAAK,IAAI;IACrDO,mBAAmB,KAAKA,kBAAkBP,KAAK,IAAI;IACnDQ,0BAA0B,KAAKA,yBAAyBR,KAAK,IAAI;EACnE;EAEA,YAAoBS,cAA6CC,WAA+B;SAA5ED,eAAAA;SAA6CC,YAAAA;AAC/D,QAAI,CAACA,WAAW;AACdC,cAAQC,KAAK,0CAAA;IACf;EACF;EAEA,MAAcb,iBAAiBc,MAA4D;AACzF,UAAMC,WAAiBf,uBAAiBc,KAAKE,IAAI;AACjD,QAAIF,KAAKG,SAAS;AAChB,aAAO,MAAM,KAAKZ,iBAAiB;QAAEa,IAAIJ,KAAKI;QAAIH,UAAUA,SAASI,MAAM,GAAA;MAAK,CAAA;IAClF;AACA,WAAO;MAAEJ,UAAUA,SAASI,MAAM,GAAA;IAAK;EACzC;EAEA,MAAchB,eAAeW,MAA+D;AAC1F,UAAMM,eAAe,MAAM,KAAKd,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA;AAC/E,QAAID,cAAcL,UAAU;AAC1B,aAAO;QAAEO,WAAWF,aAAaL,SAASQ,KAAK,GAAA,MAAST,KAAKU,UAAUD,KAAK,GAAA;MAAK;IACnF;AACA,UAAM,IAAIE,MAAM,oBAAA;EAClB;EAEA,MAAcrB,sBAAsBU,MAAsE;AACxG,UAAMM,eAAe,MAAM,KAAKd,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA;AAC/E,QAAID,cAAcL,UAAU;AAC1B,aAAO;QAAEO,WAAWR,KAAKY,gBAAgBC,MAAM,CAACC,gBAAgBR,aAAaL,UAAUc,QAAQD,YAAY,CAAA,CAAE,MAAMA,YAAY,CAAA,CAAE;MAAE;IACrI;AACA,UAAM,IAAIH,MAAM,oBAAA;EAClB;EAEA,MAAcvB,aAAaY,MAAwD;AACjF,WAAOgB,QAAQC,QAAQ;MACrBC,OAAO,MAAYC,qBAAenB,KAAKC,SAASQ,KAAK,GAAA,CAAA,GAAOW,SAAS,KAAA;IACvE,CAAA;EACF;EAEA,MAAc7B,iBAAiBS,MAA4D;AACzF,QAAIA,KAAKC,YAAY,KAAKJ,WAAW;AACnC,YAAMI,WAAWD,KAAKC,SAASQ,KAAK,GAAA;AACpC,YAAMF,WAAOc,6BAAWC,8BAAUrB,UAAU,QAAA,CAAA;AAC5C,YAAMK,eAAe,IAAIiB,eAAAA;AACzBjB,mBAAaF,KAAKJ,KAAKI,KAAKJ,KAAKI,KAAKG;AACtCD,mBAAaC,OAAOA;AACpBD,mBAAaL,WAAW,MAAM,KAAKJ,UAAU2B,QAAQvB,QAAAA;AACrD,YAAMwB,SAAS,OAAO,MAAM,KAAK7B,cAAc8B,cAAcH,cAAAA,EAAgBI,KAAKrB,YAAAA;AAClF,aAAOU,QAAQC,QAAQ;QACrBb,IAAIqB,OAAOrB;QACXG,MAAMkB,OAAOlB;QACbN,UAAUD,KAAKC;MACjB,CAAA;IACF,OAAO;AACL,YAAM,IAAIU,MAAM,gCAAA;IAClB;EACF;EAEA,MAAcnB,gBAAgBQ,MAA4D;AACxF,UAAMM,eAAe,OAAO,MAAM,KAAKV,cACpC8B,cAAcH,cAAAA,EACdK,mBAAkB,EAClBC,MAAM,YAAY;MAAEzB,IAAIJ,KAAKI;IAAG,CAAA,EAChC0B,QAAQ,gBAAgB;MAAEvB,MAAMP,KAAKO;IAAK,CAAA,EAC1CwB,OAAM;AACT,QAAIzB,cAAcL,UAAU;AAC1B,YAAM+B,cAAc,MAAM,KAAKnC,WAAWoC,QAAQ3B,aAAaL,QAAQ;AACvE,aAAO;QACLG,IAAIE,aAAaF;QACjBG,MAAMD,aAAaC;QACnBN,UAAU+B,aAAa3B,MAAM,GAAA;MAC/B;IACF;AACA,WAAO,CAAC;EACV;EAEA,MAAcZ,mBAAmBO,MAAqD;AACpF,YAAQ,MAAM,KAAKJ,cAChBgC,mBAAkB,EAClBM,OAAM,EACNC,KAAKZ,cAAAA,EACLM,MAAM,YAAY;MAAEzB,IAAIJ,KAAKI;IAAG,CAAA,EAChC0B,QAAQ,gBAAgB;MAAEvB,MAAMP,KAAKO;IAAK,CAAA,EAC1C6B,QAAO;EACZ;EAEA,MAAcC,cAAcrC,MAAqD;AAC/E,QAAIA,KAAKsC,WAAW;AAClB,cAAQ,MAAM,KAAK1C,cAChBgC,mBAAkB,EAClBW,OAAOhB,cAAAA,EACPiB,IAAI;QAAEF,WAAWtC,KAAKsC;MAAU,CAAA,EAChCT,MAAM,YAAY;QAAEzB,IAAIJ,KAAKI;MAAG,CAAA,EAChC0B,QAAQ,gBAAgB;QAAEvB,MAAMP,KAAKO;MAAK,CAAA,EAC1C6B,QAAO;IACZ;AACA,UAAM,IAAIzB,MAAM,kCAAA;EAClB;EAEA,MAAcjB,kBAAkBM,MAA+D;AAC7F,UAAMC,YAAY,MAAM,KAAKT,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA,GAAIN;AAChF,QAAIA,UAAU;AACZ,YAAMK,eAAe,MAAM,KAAKlB,aAAa;QAAEa;MAAS,CAAA;AACxD,UAAIK,aAAaY,MAAM;AACrB,YAAIlB,KAAKyC,SAAS,WAAW;AAC3B,gBAAM,EAAEC,KAAKC,UAAS,QAAKC,4CAAqBtC,aAAaY,IAAI;AACjE,gBAAM,KAAKmB,cAAc;YAAEC,WAAWI,IAAItB,SAAS,KAAA;YAAQuB,WAAWA,UAAUvB,SAAS,KAAA;UAAO,CAAA;AAChG,iBAAO;YAAEkB,WAAWI,IAAItB,SAAS,KAAA;YAAQuB,WAAWA,UAAUvB,SAAS,KAAA;UAAO;QAChF,OAAO;AACL,gBAAM,IAAIT,MAAM,sCAAA;QAClB;MACF;IACF;AACA,UAAM,IAAIA,MAAM,oBAAA;EAClB;EAEA,MAAchB,yBAAyBK,MAA8B6C,SAAoD;AACvH,UAAM5C,YAAY,MAAM,KAAKT,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA,GAAIN;AAChF,QAAIA,YAAY4C,SAAS;AACvB,UAAI7C,KAAK8C,QAAQ9C,KAAK+C,KAAK;AACzB,cAAM7B,QAAQ,MAAM,KAAK9B,aAAa;UAAEa;QAAS,CAAA,GAAIiB;AACrD,cAAM,EAAEwB,KAAKC,UAAS,QAAKK,kCAAWhD,KAAK8C,MAAM5B,IAAAA;AACjD,cAAM+B,gBAAgBC,OAAOC,OAAO;UAACT;UAAKC;SAAU;AAEpD,cAAMS,gBAAYC,oCAAaX,KAAK1C,KAAKsD,aAAa;AACtD,eAAO,MAAMT,QAAQU,MAAMC,iBAAiB;UAC1CC,eAAeR,cAAc7B,SAAS,KAAA;UACtCsC,cAAcN,UAAUhC,SAAS,KAAA;UACjCqB,MAAM;UACNM,KAAK/C,KAAK+C;QACZ,CAAA;MACF;AACA,YAAM,IAAIpC,MAAM,wCAAA;IAClB;AACA,UAAM,IAAIA,MAAM,sBAAA;EAClB;AACF;;;AC/KA,mBAAkB;;;ACCX,IAAMgD,+BAAN,MAAMA;EAAb,OAAaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvD,UAAMA,YAAYC,MAChB,yUAAyU;EAE7U;EAEA,MAAaC,KAAKF,aAAyC;AACzD,UAAMA,YAAYC,MAAM,uBAAuB;EACjD;AACF;;;ACZO,IAAME,+BAAN,MAAMA;EAAb,OAAaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvD,UAAMA,YAAYC,MAChB,mPAAmP;EAEvP;EAEA,MAAaC,KAAKF,aAAyC;AACzD,UAAMA,YAAYC,MAAM,uBAAuB;EACjD;AACF;;;AFTA,IAAME,YAAQC,aAAAA,SAAM,6BAAA;AAEb,IAAMC,+BAAN,MAAMA;EANb,OAMaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvDL,UAAM,qCAAA;AACN,UAAMM,SAASD,YAAYE,WAAWC,OAAOC,QAAQC;AACrD,QAAIJ,WAAW,YAAY;AACzBN,YAAM,+BAAA;AACN,YAAMW,MAAM,IAAIC,6BAAAA;AAChB,YAAMR,KAAK,MAAMO,IAAIP,GAAGC,WAAAA;AACxBL,YAAM,+BAAA;AACN,aAAOI;IACT,WAAWE,WAAW,YAAY,gBAAgB;AAChDN,YAAM,0CAAA;AACN,YAAMW,MAAM,IAAIE,6BAAAA;AAChB,YAAMT,KAAK,MAAMO,IAAIP,GAAGC,WAAAA;AACxBL,YAAM,+BAAA;AACN,aAAOI;IACT,OAAO;AACL,aAAOU,QAAQC,OACb,4LAAA;IAEJ;EACF;EAEA,MAAaC,KAAKX,aAAyC;AACzDL,UAAM,2BAAA;AACN,UAAMM,SAASD,YAAYE,WAAWC,OAAOC,QAAQC;AACrD,QAAIJ,WAAW,YAAY;AACzBN,YAAM,+BAAA;AACN,YAAMW,MAAM,IAAIC,6BAAAA;AAChB,YAAMI,OAAO,MAAML,IAAIK,KAAKX,WAAAA;AAC5BL,YAAM,+BAAA;AACN,aAAOgB;IACT,WAAWV,WAAW,YAAY,gBAAgB;AAChDN,YAAM,0CAAA;AACN,YAAMW,MAAM,IAAIE,6BAAAA;AAChB,YAAMG,OAAO,MAAML,IAAIK,KAAKX,WAAAA;AAC5BL,YAAM,+BAAA;AACN,aAAOgB;IACT,OAAO;AACL,aAAOF,QAAQC,OACb,4LAAA;IAEJ;EACF;AACF;;;AG5CO,IAAME,gCAAgC;EAACC;;;;ANH9C,IAAMC,SAASC;AAWR,IAAMC,8BAA8B;EAACC;;","names":["module","MnemonicEntity","BaseEntity","id","hash","mnemonic","masterKey","chainCode","name","type","unique","default","MnemonicSeedManager","schema","IMnemonicInfoGenerator","methods","generateMnemonic","bind","generateSeed","verifyMnemonic","verifyPartialMnemonic","saveMnemonicInfo","getMnemonicInfo","deleteMnemonicInfo","generateMasterKey","generateKeysFromMnemonic","dbConnection","secretBox","console","warn","args","mnemonic","bits","persist","id","split","mnemonicInfo","hash","succeeded","join","wordList","Error","indexedWordList","every","indexedWord","indexOf","Promise","resolve","seed","mnemonicToSeed","toString","bytesToHex","shaHasher","MnemonicEntity","encrypt","result","getRepository","save","createQueryBuilder","where","orWhere","getOne","mnemonicStr","decrypt","delete","from","execute","saveMasterKey","masterKey","update","set","type","key","chainCode","getMasterKeyFromSeed","context","path","kms","derivePath","extPrivateKey","Buffer","concat","publicKey","getPublicKey","withZeroBytes","agent","keyManagerImport","privateKeyHex","publicKeyHex","CreateMnemonics1659566636105","name","up","queryRunner","query","down","CreateMnemonics1659566622817","name","up","queryRunner","query","down","debug","Debug","CreateMnemonics1659567079429","name","up","queryRunner","dbType","connection","driver","options","type","mig","CreateMnemonics1659566636105","CreateMnemonics1659566622817","Promise","reject","down","MnemonicSeedManagerMigrations","CreateMnemonics1659567079429","schema","require","MnemonicSeedManagerEntities","MnemonicEntity"]}
1
+ {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/entities/MnemonicEntity.ts","../src/agent/MnemonicSeedManager.ts","../src/migrations/generic/1-CreateMnemonics.ts","../src/migrations/postgres/1659566636105-CreateMnemonics.ts","../src/migrations/sqlite/1659566622817-CreateMnemonics.ts","../src/migrations/generic/index.ts"],"sourcesContent":["{\n \"IMnemonicSeedManager\": {\n \"components\": {\n \"schemas\": {\n \"IMnemonicInfoStoreArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"DeleteResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"raw\": {},\n \"affected\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"raw\"\n ],\n \"additionalProperties\": false\n },\n \"ManagedKeyInfo\": {\n \"$ref\": \"#/components/schemas/Omit<IKey,\\\"privateKeyHex\\\">\",\n \"description\": \"Represents information about a managed key. Private or secret key material is NOT present.\"\n },\n \"Omit<IKey,\\\"privateKeyHex\\\">\": {\n \"$ref\": \"#/components/schemas/Pick<IKey,Exclude<(\\\"kid\\\"|\\\"kms\\\"|\\\"type\\\"|\\\"publicKeyHex\\\"|\\\"privateKeyHex\\\"|\\\"meta\\\"),\\\"privateKeyHex\\\">>\"\n },\n \"Pick<IKey,Exclude<(\\\"kid\\\"|\\\"kms\\\"|\\\"type\\\"|\\\"publicKeyHex\\\"|\\\"privateKeyHex\\\"|\\\"meta\\\"),\\\"privateKeyHex\\\">>\": {\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\": [\n \"kid\",\n \"kms\",\n \"type\",\n \"publicKeyHex\"\n ],\n \"additionalProperties\": false\n },\n \"TKeyType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\",\n \"Secp256r1\",\n \"X25519\",\n \"Bls12381G1\",\n \"Bls12381G2\",\n \"RSA\"\n ],\n \"description\": \"Cryptographic key type.\"\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 \"IMnemonicInfoKeyResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"IMnemonicGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"bits\": {\n \"type\": \"number\",\n \"enum\": [\n 128,\n 160,\n 192,\n 224,\n 256\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"bits\"\n ],\n \"additionalProperties\": false\n },\n \"IMnemonicInfoResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n },\n \"succeeded\": {\n \"type\": \"boolean\"\n },\n \"seed\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"ISeedGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"mnemonic\"\n ],\n \"additionalProperties\": false\n },\n \"IMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"wordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"wordList\"\n ],\n \"additionalProperties\": false\n },\n \"IPartialMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"indexedWordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"maxItems\": 2\n }\n }\n },\n \"required\": [\n \"indexedWordList\"\n ],\n \"additionalProperties\": false\n }\n },\n \"methods\": {\n \"deleteMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/DeleteResult\"\n }\n },\n \"generateKeysFromMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n },\n \"generateMasterKey\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoKeyResult\"\n }\n },\n \"generateMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"generateSeed\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISeedGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"getMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"saveMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyPartialMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IPartialMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n }\n }\n }\n }\n}","import 'reflect-metadata'\nimport { MnemonicEntity } from './entities/MnemonicEntity'\n\n/**\n * @internal\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\n/**\n * @public\n */\nexport { MnemonicSeedManager } from './agent/MnemonicSeedManager'\nexport * from './types/IMnemonicSeedManager'\n\n/**\n * @internal\n */\nexport const MnemonicSeedManagerEntities = [MnemonicEntity]\n\n/**\n * @internal\n */\nexport { MnemonicSeedManagerMigrations } from './migrations'\n","import { Column, Entity, BaseEntity, PrimaryColumn } from 'typeorm'\n\n@Entity('Mnemonic')\nexport class MnemonicEntity extends BaseEntity {\n @PrimaryColumn({ name: 'id', type: 'varchar' })\n id!: string\n @Column({ name: 'hash', unique: true, type: 'varchar' })\n hash!: string\n @Column({ name: 'mnemonic', unique: true, type: 'varchar' })\n mnemonic!: string\n @Column({ name: 'master_key', default: null, type: 'varchar' })\n masterKey!: string\n @Column({ name: 'chain_code', default: null, type: 'varchar' })\n chainCode!: string\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { shaHasher } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { derivePath, getMasterKeyFromSeed, getPublicKey } from 'ed25519-hd-key'\nimport { IAgentPlugin, ManagedKeyInfo } from '@veramo/core'\nimport { AbstractSecretBox } from '@veramo/key-manager'\nimport * as bip39 from 'bip39'\nimport { DataSource } from 'typeorm'\n\nimport {\n DeleteResult,\n IMnemonicGeneratorArgs,\n IMnemonicInfoKeyResult,\n IMnemonicInfoResult,\n IMnemonicInfoStoreArgs,\n IMnemonicVerificationArgs,\n IPartialMnemonicVerificationArgs,\n IRequiredContext,\n ISeedGeneratorArgs,\n schema,\n UpdateResult,\n} from '../index'\nimport { IMnemonicSeedManager } from '../types/IMnemonicSeedManager'\n\nimport { MnemonicEntity } from '../entities/MnemonicEntity'\nimport { OrPromise } from '@veramo/utils'\n\n/**\n * @public\n */\nexport class MnemonicSeedManager implements IAgentPlugin {\n readonly schema = schema.IMnemonicInfoGenerator\n readonly methods: IMnemonicSeedManager = {\n generateMnemonic: this.generateMnemonic.bind(this),\n generateSeed: this.generateSeed.bind(this),\n verifyMnemonic: this.verifyMnemonic.bind(this),\n verifyPartialMnemonic: this.verifyPartialMnemonic.bind(this),\n saveMnemonicInfo: this.saveMnemonicInfo.bind(this),\n getMnemonicInfo: this.getMnemonicInfo.bind(this),\n deleteMnemonicInfo: this.deleteMnemonicInfo.bind(this),\n generateMasterKey: this.generateMasterKey.bind(this),\n generateKeysFromMnemonic: this.generateKeysFromMnemonic.bind(this),\n }\n\n constructor(private dbConnection: OrPromise<DataSource>, private secretBox?: AbstractSecretBox) {\n if (!secretBox) {\n console.warn('Please provide SecretBox to the KeyStore')\n }\n }\n\n private async generateMnemonic(args: IMnemonicGeneratorArgs): Promise<IMnemonicInfoResult> {\n const mnemonic = bip39.generateMnemonic(args.bits)\n if (args.persist) {\n return await this.saveMnemonicInfo({ id: args.id, mnemonic: mnemonic.split(' ') })\n }\n return { mnemonic: mnemonic.split(' ') }\n }\n\n private async verifyMnemonic(args: IMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: mnemonicInfo.mnemonic.join(' ') === args.wordList?.join(' ') }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async verifyPartialMnemonic(args: IPartialMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: args.indexedWordList.every((indexedWord) => mnemonicInfo.mnemonic?.indexOf(indexedWord[1]) === indexedWord[0]) }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateSeed(args: ISeedGeneratorArgs): Promise<IMnemonicInfoResult> {\n return Promise.resolve({\n seed: (await bip39.mnemonicToSeed(args.mnemonic.join(' '))).toString('hex'),\n })\n }\n\n private async saveMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n if (args.mnemonic && this.secretBox) {\n const mnemonic = args.mnemonic.join(' ')\n const hash = bytesToHex(shaHasher(mnemonic, 'sha256'))\n const mnemonicInfo = new MnemonicEntity()\n mnemonicInfo.id = args.id ? args.id : hash\n mnemonicInfo.hash = hash\n mnemonicInfo.mnemonic = await this.secretBox.encrypt(mnemonic)\n const result = await (await this.dbConnection).getRepository(MnemonicEntity).save(mnemonicInfo)\n return Promise.resolve({\n id: result.id,\n hash: result.hash,\n mnemonic: args.mnemonic,\n })\n } else {\n throw new Error('Mnemonic needs to be provided.')\n }\n }\n\n private async getMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await (await this.dbConnection)\n .getRepository(MnemonicEntity)\n .createQueryBuilder()\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .getOne()\n if (mnemonicInfo?.mnemonic) {\n const mnemonicStr = await this.secretBox?.decrypt(mnemonicInfo.mnemonic)\n return {\n id: mnemonicInfo.id,\n hash: mnemonicInfo.hash,\n mnemonic: mnemonicStr?.split(' '),\n }\n }\n return {}\n }\n\n private async deleteMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<DeleteResult> {\n return (await this.dbConnection)\n .createQueryBuilder()\n .delete()\n .from(MnemonicEntity)\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n\n private async saveMasterKey(args: IMnemonicInfoStoreArgs): Promise<UpdateResult> {\n if (args.masterKey) {\n return (await this.dbConnection)\n .createQueryBuilder()\n .update(MnemonicEntity)\n .set({ masterKey: args.masterKey })\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n throw new Error('Master Key needs to be provided.')\n }\n\n private async generateMasterKey(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoKeyResult> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic) {\n const mnemonicInfo = await this.generateSeed({ mnemonic })\n if (mnemonicInfo.seed) {\n if (args.type === 'Ed25519') {\n const { key, chainCode } = getMasterKeyFromSeed(mnemonicInfo.seed)\n await this.saveMasterKey({ masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') })\n return { masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') }\n } else {\n throw new Error('Secp256k1 keys are not supported yet')\n }\n }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateKeysFromMnemonic(args: IMnemonicInfoStoreArgs, context: IRequiredContext): Promise<ManagedKeyInfo> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic && context) {\n if (args.path && args.kms) {\n const seed = (await this.generateSeed({ mnemonic })).seed as string\n const { key, chainCode } = derivePath(args.path, seed)\n const extPrivateKey = Buffer.concat([key, chainCode])\n //FIXME it doesn't use any secp256k1 library to generate the public key, so it doesn't generate an extended key\n const publicKey = getPublicKey(key, args.withZeroBytes)\n return await context.agent.keyManagerImport({\n privateKeyHex: extPrivateKey.toString('hex'),\n publicKeyHex: publicKey.toString('hex'),\n type: 'Ed25519',\n kms: args.kms,\n })\n }\n throw new Error('Please provide kms and derivation path')\n }\n throw new Error('Master Key not found')\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\nimport Debug from 'debug'\nimport { CreateMnemonics1659566636105 } from '../postgres/1659566636105-CreateMnemonics'\nimport { CreateMnemonics1659566622817 } from '../sqlite/1659566622817-CreateMnemonics'\n\nconst debug = Debug('sphereon:ssi-sdk:migrations')\n\nexport class CreateMnemonics1659567079429 implements MigrationInterface {\n name = 'CreateMnemonics1659567079429'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n debug('migration: creating mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n debug('reverting mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566636105 implements MigrationInterface {\n name = 'CreateMnemonics1659566636105'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" character varying NOT NULL, \"hash\" character varying NOT NULL, \"mnemonic\" character varying NOT NULL, \"master_key\" character varying, \"chain_code\" character varying, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"), CONSTRAINT \"PK_mnemonic_id\" PRIMARY KEY (\"id\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566622817 implements MigrationInterface {\n name = 'CreateMnemonics1659566622817'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" varchar PRIMARY KEY NOT NULL, \"hash\" varchar NOT NULL, \"mnemonic\" varchar NOT NULL, \"master_key\" varchar, \"chain_code\" varchar, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { CreateMnemonics1659567079429 } from './1-CreateMnemonics'\n\n/**\n * The migrations array that SHOULD be used when initializing a TypeORM database connection.\n *\n * These ensure the correct creation of tables and the proper migrations of data when tables change between versions.\n *\n * @internal\n */\nexport const MnemonicSeedManagerMigrations = [CreateMnemonics1659567079429]\n"],"mappings":"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","names":["module","MnemonicEntity","BaseEntity","id","hash","mnemonic","masterKey","chainCode","name","type","unique","default","MnemonicSeedManager","schema","IMnemonicInfoGenerator","methods","generateMnemonic","bind","generateSeed","verifyMnemonic","verifyPartialMnemonic","saveMnemonicInfo","getMnemonicInfo","deleteMnemonicInfo","generateMasterKey","generateKeysFromMnemonic","dbConnection","secretBox","console","warn","args","mnemonic","bits","persist","id","split","mnemonicInfo","hash","succeeded","join","wordList","Error","indexedWordList","every","indexedWord","indexOf","Promise","resolve","seed","mnemonicToSeed","toString","bytesToHex","shaHasher","MnemonicEntity","encrypt","result","getRepository","save","createQueryBuilder","where","orWhere","getOne","mnemonicStr","decrypt","delete","from","execute","saveMasterKey","masterKey","update","set","type","key","chainCode","getMasterKeyFromSeed","context","path","kms","derivePath","extPrivateKey","Buffer","concat","publicKey","getPublicKey","withZeroBytes","agent","keyManagerImport","privateKeyHex","publicKeyHex","CreateMnemonics1659566636105","name","up","queryRunner","query","down","CreateMnemonics1659566622817","name","up","queryRunner","query","down","debug","Debug","CreateMnemonics1659567079429","name","up","queryRunner","dbType","connection","driver","options","type","mig","CreateMnemonics1659566636105","CreateMnemonics1659566622817","Promise","reject","down","MnemonicSeedManagerMigrations","CreateMnemonics1659567079429","schema","require","MnemonicSeedManagerEntities","MnemonicEntity"]}
package/dist/index.js CHANGED
@@ -52,7 +52,8 @@ var require_plugin_schema = __commonJS({
52
52
  persist: {
53
53
  type: "boolean"
54
54
  }
55
- }
55
+ },
56
+ additionalProperties: false
56
57
  },
57
58
  DeleteResult: {
58
59
  type: "object",
@@ -67,9 +68,17 @@ var require_plugin_schema = __commonJS({
67
68
  },
68
69
  required: [
69
70
  "raw"
70
- ]
71
+ ],
72
+ additionalProperties: false
71
73
  },
72
74
  ManagedKeyInfo: {
75
+ $ref: '#/components/schemas/Omit<IKey,"privateKeyHex">',
76
+ description: "Represents information about a managed key. Private or secret key material is NOT present."
77
+ },
78
+ 'Omit<IKey,"privateKeyHex">': {
79
+ $ref: '#/components/schemas/Pick<IKey,Exclude<("kid"|"kms"|"type"|"publicKeyHex"|"privateKeyHex"|"meta"),"privateKeyHex">>'
80
+ },
81
+ 'Pick<IKey,Exclude<("kid"|"kms"|"type"|"publicKeyHex"|"privateKeyHex"|"meta"),"privateKeyHex">>': {
73
82
  type: "object",
74
83
  properties: {
75
84
  kid: {
@@ -106,7 +115,7 @@ var require_plugin_schema = __commonJS({
106
115
  "type",
107
116
  "publicKeyHex"
108
117
  ],
109
- description: "Represents information about a managed key. Private or secret key material is NOT present."
118
+ additionalProperties: false
110
119
  },
111
120
  TKeyType: {
112
121
  type: "string",
@@ -142,7 +151,8 @@ var require_plugin_schema = __commonJS({
142
151
  chainCode: {
143
152
  type: "string"
144
153
  }
145
- }
154
+ },
155
+ additionalProperties: false
146
156
  },
147
157
  IMnemonicGeneratorArgs: {
148
158
  type: "object",
@@ -166,7 +176,8 @@ var require_plugin_schema = __commonJS({
166
176
  },
167
177
  required: [
168
178
  "bits"
169
- ]
179
+ ],
180
+ additionalProperties: false
170
181
  },
171
182
  IMnemonicInfoResult: {
172
183
  type: "object",
@@ -214,7 +225,8 @@ var require_plugin_schema = __commonJS({
214
225
  seed: {
215
226
  type: "string"
216
227
  }
217
- }
228
+ },
229
+ additionalProperties: false
218
230
  },
219
231
  ISeedGeneratorArgs: {
220
232
  type: "object",
@@ -228,7 +240,8 @@ var require_plugin_schema = __commonJS({
228
240
  },
229
241
  required: [
230
242
  "mnemonic"
231
- ]
243
+ ],
244
+ additionalProperties: false
232
245
  },
233
246
  IMnemonicVerificationArgs: {
234
247
  type: "object",
@@ -248,7 +261,8 @@ var require_plugin_schema = __commonJS({
248
261
  },
249
262
  required: [
250
263
  "wordList"
251
- ]
264
+ ],
265
+ additionalProperties: false
252
266
  },
253
267
  IPartialMnemonicVerificationArgs: {
254
268
  type: "object",
@@ -278,7 +292,8 @@ var require_plugin_schema = __commonJS({
278
292
  },
279
293
  required: [
280
294
  "indexedWordList"
281
- ]
295
+ ],
296
+ additionalProperties: false
282
297
  }
283
298
  },
284
299
  methods: {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/entities/MnemonicEntity.ts","../src/agent/MnemonicSeedManager.ts","../src/migrations/generic/1-CreateMnemonics.ts","../src/migrations/postgres/1659566636105-CreateMnemonics.ts","../src/migrations/sqlite/1659566622817-CreateMnemonics.ts","../src/migrations/generic/index.ts"],"sourcesContent":["{\n \"IMnemonicSeedManager\": {\n \"components\": {\n \"schemas\": {\n \"IMnemonicInfoStoreArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"DeleteResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"raw\": {},\n \"affected\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"raw\"\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\": [\n \"kid\",\n \"kms\",\n \"type\",\n \"publicKeyHex\"\n ],\n \"description\": \"Represents information about a managed key. Private or secret key material is NOT present.\"\n },\n \"TKeyType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\",\n \"Secp256r1\",\n \"X25519\",\n \"Bls12381G1\",\n \"Bls12381G2\",\n \"RSA\"\n ],\n \"description\": \"Cryptographic key type.\"\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 \"IMnemonicInfoKeyResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n }\n }\n },\n \"IMnemonicGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"bits\": {\n \"type\": \"number\",\n \"enum\": [\n 128,\n 160,\n 192,\n 224,\n 256\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"bits\"\n ]\n },\n \"IMnemonicInfoResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n },\n \"succeeded\": {\n \"type\": \"boolean\"\n },\n \"seed\": {\n \"type\": \"string\"\n }\n }\n },\n \"ISeedGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"mnemonic\"\n ]\n },\n \"IMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"wordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"wordList\"\n ]\n },\n \"IPartialMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"indexedWordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"maxItems\": 2\n }\n }\n },\n \"required\": [\n \"indexedWordList\"\n ]\n }\n },\n \"methods\": {\n \"deleteMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/DeleteResult\"\n }\n },\n \"generateKeysFromMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n },\n \"generateMasterKey\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoKeyResult\"\n }\n },\n \"generateMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"generateSeed\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISeedGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"getMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"saveMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyPartialMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IPartialMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n }\n }\n }\n }\n}","import 'reflect-metadata'\nimport { MnemonicEntity } from './entities/MnemonicEntity'\n\n/**\n * @internal\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\n/**\n * @public\n */\nexport { MnemonicSeedManager } from './agent/MnemonicSeedManager'\nexport * from './types/IMnemonicSeedManager'\n\n/**\n * @internal\n */\nexport const MnemonicSeedManagerEntities = [MnemonicEntity]\n\n/**\n * @internal\n */\nexport { MnemonicSeedManagerMigrations } from './migrations'\n","import { Column, Entity, BaseEntity, PrimaryColumn } from 'typeorm'\n\n@Entity('Mnemonic')\nexport class MnemonicEntity extends BaseEntity {\n @PrimaryColumn({ name: 'id', type: 'varchar' })\n id!: string\n @Column({ name: 'hash', unique: true, type: 'varchar' })\n hash!: string\n @Column({ name: 'mnemonic', unique: true, type: 'varchar' })\n mnemonic!: string\n @Column({ name: 'master_key', default: null, type: 'varchar' })\n masterKey!: string\n @Column({ name: 'chain_code', default: null, type: 'varchar' })\n chainCode!: string\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { shaHasher } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { derivePath, getMasterKeyFromSeed, getPublicKey } from 'ed25519-hd-key'\nimport { IAgentPlugin, ManagedKeyInfo } from '@veramo/core'\nimport { AbstractSecretBox } from '@veramo/key-manager'\nimport * as bip39 from 'bip39'\nimport { DataSource } from 'typeorm'\n\nimport {\n DeleteResult,\n IMnemonicGeneratorArgs,\n IMnemonicInfoKeyResult,\n IMnemonicInfoResult,\n IMnemonicInfoStoreArgs,\n IMnemonicVerificationArgs,\n IPartialMnemonicVerificationArgs,\n IRequiredContext,\n ISeedGeneratorArgs,\n schema,\n UpdateResult,\n} from '../index'\nimport { IMnemonicSeedManager } from '../types/IMnemonicSeedManager'\n\nimport { MnemonicEntity } from '../entities/MnemonicEntity'\nimport { OrPromise } from '@veramo/utils'\n\n/**\n * @public\n */\nexport class MnemonicSeedManager implements IAgentPlugin {\n readonly schema = schema.IMnemonicInfoGenerator\n readonly methods: IMnemonicSeedManager = {\n generateMnemonic: this.generateMnemonic.bind(this),\n generateSeed: this.generateSeed.bind(this),\n verifyMnemonic: this.verifyMnemonic.bind(this),\n verifyPartialMnemonic: this.verifyPartialMnemonic.bind(this),\n saveMnemonicInfo: this.saveMnemonicInfo.bind(this),\n getMnemonicInfo: this.getMnemonicInfo.bind(this),\n deleteMnemonicInfo: this.deleteMnemonicInfo.bind(this),\n generateMasterKey: this.generateMasterKey.bind(this),\n generateKeysFromMnemonic: this.generateKeysFromMnemonic.bind(this),\n }\n\n constructor(private dbConnection: OrPromise<DataSource>, private secretBox?: AbstractSecretBox) {\n if (!secretBox) {\n console.warn('Please provide SecretBox to the KeyStore')\n }\n }\n\n private async generateMnemonic(args: IMnemonicGeneratorArgs): Promise<IMnemonicInfoResult> {\n const mnemonic = bip39.generateMnemonic(args.bits)\n if (args.persist) {\n return await this.saveMnemonicInfo({ id: args.id, mnemonic: mnemonic.split(' ') })\n }\n return { mnemonic: mnemonic.split(' ') }\n }\n\n private async verifyMnemonic(args: IMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: mnemonicInfo.mnemonic.join(' ') === args.wordList?.join(' ') }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async verifyPartialMnemonic(args: IPartialMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: args.indexedWordList.every((indexedWord) => mnemonicInfo.mnemonic?.indexOf(indexedWord[1]) === indexedWord[0]) }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateSeed(args: ISeedGeneratorArgs): Promise<IMnemonicInfoResult> {\n return Promise.resolve({\n seed: (await bip39.mnemonicToSeed(args.mnemonic.join(' '))).toString('hex'),\n })\n }\n\n private async saveMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n if (args.mnemonic && this.secretBox) {\n const mnemonic = args.mnemonic.join(' ')\n const hash = bytesToHex(shaHasher(mnemonic, 'sha256'))\n const mnemonicInfo = new MnemonicEntity()\n mnemonicInfo.id = args.id ? args.id : hash\n mnemonicInfo.hash = hash\n mnemonicInfo.mnemonic = await this.secretBox.encrypt(mnemonic)\n const result = await (await this.dbConnection).getRepository(MnemonicEntity).save(mnemonicInfo)\n return Promise.resolve({\n id: result.id,\n hash: result.hash,\n mnemonic: args.mnemonic,\n })\n } else {\n throw new Error('Mnemonic needs to be provided.')\n }\n }\n\n private async getMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await (await this.dbConnection)\n .getRepository(MnemonicEntity)\n .createQueryBuilder()\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .getOne()\n if (mnemonicInfo?.mnemonic) {\n const mnemonicStr = await this.secretBox?.decrypt(mnemonicInfo.mnemonic)\n return {\n id: mnemonicInfo.id,\n hash: mnemonicInfo.hash,\n mnemonic: mnemonicStr?.split(' '),\n }\n }\n return {}\n }\n\n private async deleteMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<DeleteResult> {\n return (await this.dbConnection)\n .createQueryBuilder()\n .delete()\n .from(MnemonicEntity)\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n\n private async saveMasterKey(args: IMnemonicInfoStoreArgs): Promise<UpdateResult> {\n if (args.masterKey) {\n return (await this.dbConnection)\n .createQueryBuilder()\n .update(MnemonicEntity)\n .set({ masterKey: args.masterKey })\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n throw new Error('Master Key needs to be provided.')\n }\n\n private async generateMasterKey(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoKeyResult> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic) {\n const mnemonicInfo = await this.generateSeed({ mnemonic })\n if (mnemonicInfo.seed) {\n if (args.type === 'Ed25519') {\n const { key, chainCode } = getMasterKeyFromSeed(mnemonicInfo.seed)\n await this.saveMasterKey({ masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') })\n return { masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') }\n } else {\n throw new Error('Secp256k1 keys are not supported yet')\n }\n }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateKeysFromMnemonic(args: IMnemonicInfoStoreArgs, context: IRequiredContext): Promise<ManagedKeyInfo> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic && context) {\n if (args.path && args.kms) {\n const seed = (await this.generateSeed({ mnemonic })).seed as string\n const { key, chainCode } = derivePath(args.path, seed)\n const extPrivateKey = Buffer.concat([key, chainCode])\n //FIXME it doesn't use any secp256k1 library to generate the public key, so it doesn't generate an extended key\n const publicKey = getPublicKey(key, args.withZeroBytes)\n return await context.agent.keyManagerImport({\n privateKeyHex: extPrivateKey.toString('hex'),\n publicKeyHex: publicKey.toString('hex'),\n type: 'Ed25519',\n kms: args.kms,\n })\n }\n throw new Error('Please provide kms and derivation path')\n }\n throw new Error('Master Key not found')\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\nimport Debug from 'debug'\nimport { CreateMnemonics1659566636105 } from '../postgres/1659566636105-CreateMnemonics'\nimport { CreateMnemonics1659566622817 } from '../sqlite/1659566622817-CreateMnemonics'\n\nconst debug = Debug('sphereon:ssi-sdk:migrations')\n\nexport class CreateMnemonics1659567079429 implements MigrationInterface {\n name = 'CreateMnemonics1659567079429'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n debug('migration: creating mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n debug('reverting mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566636105 implements MigrationInterface {\n name = 'CreateMnemonics1659566636105'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" character varying NOT NULL, \"hash\" character varying NOT NULL, \"mnemonic\" character varying NOT NULL, \"master_key\" character varying, \"chain_code\" character varying, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"), CONSTRAINT \"PK_mnemonic_id\" PRIMARY KEY (\"id\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566622817 implements MigrationInterface {\n name = 'CreateMnemonics1659566622817'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" varchar PRIMARY KEY NOT NULL, \"hash\" varchar NOT NULL, \"mnemonic\" varchar NOT NULL, \"master_key\" varchar, \"chain_code\" varchar, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { CreateMnemonics1659567079429 } from './1-CreateMnemonics'\n\n/**\n * The migrations array that SHOULD be used when initializing a TypeORM database connection.\n *\n * These ensure the correct creation of tables and the proper migrations of data when tables change between versions.\n *\n * @internal\n */\nexport const MnemonicSeedManagerMigrations = [CreateMnemonics1659567079429]\n"],"mappings":"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","names":["Column","Entity","BaseEntity","PrimaryColumn","MnemonicEntity","BaseEntity","id","hash","mnemonic","masterKey","chainCode","name","type","unique","default","bytesToHex","shaHasher","derivePath","getMasterKeyFromSeed","getPublicKey","bip39","MnemonicSeedManager","schema","IMnemonicInfoGenerator","methods","generateMnemonic","bind","generateSeed","verifyMnemonic","verifyPartialMnemonic","saveMnemonicInfo","getMnemonicInfo","deleteMnemonicInfo","generateMasterKey","generateKeysFromMnemonic","dbConnection","secretBox","console","warn","args","mnemonic","bits","persist","id","split","mnemonicInfo","hash","succeeded","join","wordList","Error","indexedWordList","every","indexedWord","indexOf","Promise","resolve","seed","mnemonicToSeed","toString","bytesToHex","shaHasher","MnemonicEntity","encrypt","result","getRepository","save","createQueryBuilder","where","orWhere","getOne","mnemonicStr","decrypt","delete","from","execute","saveMasterKey","masterKey","update","set","type","key","chainCode","getMasterKeyFromSeed","context","path","kms","derivePath","extPrivateKey","Buffer","concat","publicKey","getPublicKey","withZeroBytes","agent","keyManagerImport","privateKeyHex","publicKeyHex","Debug","CreateMnemonics1659566636105","name","up","queryRunner","query","down","CreateMnemonics1659566622817","name","up","queryRunner","query","down","debug","Debug","CreateMnemonics1659567079429","name","up","queryRunner","dbType","connection","driver","options","type","mig","CreateMnemonics1659566636105","CreateMnemonics1659566622817","Promise","reject","down","MnemonicSeedManagerMigrations","CreateMnemonics1659567079429","schema","require","MnemonicSeedManagerEntities","MnemonicEntity"]}
1
+ {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/entities/MnemonicEntity.ts","../src/agent/MnemonicSeedManager.ts","../src/migrations/generic/1-CreateMnemonics.ts","../src/migrations/postgres/1659566636105-CreateMnemonics.ts","../src/migrations/sqlite/1659566622817-CreateMnemonics.ts","../src/migrations/generic/index.ts"],"sourcesContent":["{\n \"IMnemonicSeedManager\": {\n \"components\": {\n \"schemas\": {\n \"IMnemonicInfoStoreArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n },\n \"DeleteResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"raw\": {},\n \"affected\": {\n \"type\": [\n \"number\",\n \"null\"\n ]\n }\n },\n \"required\": [\n \"raw\"\n ],\n \"additionalProperties\": false\n },\n \"ManagedKeyInfo\": {\n \"$ref\": \"#/components/schemas/Omit<IKey,\\\"privateKeyHex\\\">\",\n \"description\": \"Represents information about a managed key. Private or secret key material is NOT present.\"\n },\n \"Omit<IKey,\\\"privateKeyHex\\\">\": {\n \"$ref\": \"#/components/schemas/Pick<IKey,Exclude<(\\\"kid\\\"|\\\"kms\\\"|\\\"type\\\"|\\\"publicKeyHex\\\"|\\\"privateKeyHex\\\"|\\\"meta\\\"),\\\"privateKeyHex\\\">>\"\n },\n \"Pick<IKey,Exclude<(\\\"kid\\\"|\\\"kms\\\"|\\\"type\\\"|\\\"publicKeyHex\\\"|\\\"privateKeyHex\\\"|\\\"meta\\\"),\\\"privateKeyHex\\\">>\": {\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\": [\n \"kid\",\n \"kms\",\n \"type\",\n \"publicKeyHex\"\n ],\n \"additionalProperties\": false\n },\n \"TKeyType\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\",\n \"Secp256r1\",\n \"X25519\",\n \"Bls12381G1\",\n \"Bls12381G2\",\n \"RSA\"\n ],\n \"description\": \"Cryptographic key type.\"\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 \"IMnemonicInfoKeyResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"IMnemonicGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"bits\": {\n \"type\": \"number\",\n \"enum\": [\n 128,\n 160,\n 192,\n 224,\n 256\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"persist\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"bits\"\n ],\n \"additionalProperties\": false\n },\n \"IMnemonicInfoResult\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"masterKey\": {\n \"type\": \"string\"\n },\n \"chainCode\": {\n \"type\": \"string\"\n },\n \"kms\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"withZeroBytes\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Ed25519\",\n \"Secp256k1\"\n ]\n },\n \"persist\": {\n \"type\": \"boolean\"\n },\n \"succeeded\": {\n \"type\": \"boolean\"\n },\n \"seed\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n },\n \"ISeedGeneratorArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"mnemonic\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"mnemonic\"\n ],\n \"additionalProperties\": false\n },\n \"IMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"wordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"wordList\"\n ],\n \"additionalProperties\": false\n },\n \"IPartialMnemonicVerificationArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hash\": {\n \"type\": \"string\"\n },\n \"indexedWordList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"items\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"maxItems\": 2\n }\n }\n },\n \"required\": [\n \"indexedWordList\"\n ],\n \"additionalProperties\": false\n }\n },\n \"methods\": {\n \"deleteMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/DeleteResult\"\n }\n },\n \"generateKeysFromMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ManagedKeyInfo\"\n }\n },\n \"generateMasterKey\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoKeyResult\"\n }\n },\n \"generateMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"generateSeed\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISeedGeneratorArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"getMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"saveMnemonicInfo\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoStoreArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n },\n \"verifyPartialMnemonic\": {\n \"description\": \"\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IPartialMnemonicVerificationArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IMnemonicInfoResult\"\n }\n }\n }\n }\n }\n}","import 'reflect-metadata'\nimport { MnemonicEntity } from './entities/MnemonicEntity'\n\n/**\n * @internal\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\n/**\n * @public\n */\nexport { MnemonicSeedManager } from './agent/MnemonicSeedManager'\nexport * from './types/IMnemonicSeedManager'\n\n/**\n * @internal\n */\nexport const MnemonicSeedManagerEntities = [MnemonicEntity]\n\n/**\n * @internal\n */\nexport { MnemonicSeedManagerMigrations } from './migrations'\n","import { Column, Entity, BaseEntity, PrimaryColumn } from 'typeorm'\n\n@Entity('Mnemonic')\nexport class MnemonicEntity extends BaseEntity {\n @PrimaryColumn({ name: 'id', type: 'varchar' })\n id!: string\n @Column({ name: 'hash', unique: true, type: 'varchar' })\n hash!: string\n @Column({ name: 'mnemonic', unique: true, type: 'varchar' })\n mnemonic!: string\n @Column({ name: 'master_key', default: null, type: 'varchar' })\n masterKey!: string\n @Column({ name: 'chain_code', default: null, type: 'varchar' })\n chainCode!: string\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { shaHasher } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { derivePath, getMasterKeyFromSeed, getPublicKey } from 'ed25519-hd-key'\nimport { IAgentPlugin, ManagedKeyInfo } from '@veramo/core'\nimport { AbstractSecretBox } from '@veramo/key-manager'\nimport * as bip39 from 'bip39'\nimport { DataSource } from 'typeorm'\n\nimport {\n DeleteResult,\n IMnemonicGeneratorArgs,\n IMnemonicInfoKeyResult,\n IMnemonicInfoResult,\n IMnemonicInfoStoreArgs,\n IMnemonicVerificationArgs,\n IPartialMnemonicVerificationArgs,\n IRequiredContext,\n ISeedGeneratorArgs,\n schema,\n UpdateResult,\n} from '../index'\nimport { IMnemonicSeedManager } from '../types/IMnemonicSeedManager'\n\nimport { MnemonicEntity } from '../entities/MnemonicEntity'\nimport { OrPromise } from '@veramo/utils'\n\n/**\n * @public\n */\nexport class MnemonicSeedManager implements IAgentPlugin {\n readonly schema = schema.IMnemonicInfoGenerator\n readonly methods: IMnemonicSeedManager = {\n generateMnemonic: this.generateMnemonic.bind(this),\n generateSeed: this.generateSeed.bind(this),\n verifyMnemonic: this.verifyMnemonic.bind(this),\n verifyPartialMnemonic: this.verifyPartialMnemonic.bind(this),\n saveMnemonicInfo: this.saveMnemonicInfo.bind(this),\n getMnemonicInfo: this.getMnemonicInfo.bind(this),\n deleteMnemonicInfo: this.deleteMnemonicInfo.bind(this),\n generateMasterKey: this.generateMasterKey.bind(this),\n generateKeysFromMnemonic: this.generateKeysFromMnemonic.bind(this),\n }\n\n constructor(private dbConnection: OrPromise<DataSource>, private secretBox?: AbstractSecretBox) {\n if (!secretBox) {\n console.warn('Please provide SecretBox to the KeyStore')\n }\n }\n\n private async generateMnemonic(args: IMnemonicGeneratorArgs): Promise<IMnemonicInfoResult> {\n const mnemonic = bip39.generateMnemonic(args.bits)\n if (args.persist) {\n return await this.saveMnemonicInfo({ id: args.id, mnemonic: mnemonic.split(' ') })\n }\n return { mnemonic: mnemonic.split(' ') }\n }\n\n private async verifyMnemonic(args: IMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: mnemonicInfo.mnemonic.join(' ') === args.wordList?.join(' ') }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async verifyPartialMnemonic(args: IPartialMnemonicVerificationArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await this.getMnemonicInfo({ id: args.id, hash: args.hash })\n if (mnemonicInfo?.mnemonic) {\n return { succeeded: args.indexedWordList.every((indexedWord) => mnemonicInfo.mnemonic?.indexOf(indexedWord[1]) === indexedWord[0]) }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateSeed(args: ISeedGeneratorArgs): Promise<IMnemonicInfoResult> {\n return Promise.resolve({\n seed: (await bip39.mnemonicToSeed(args.mnemonic.join(' '))).toString('hex'),\n })\n }\n\n private async saveMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n if (args.mnemonic && this.secretBox) {\n const mnemonic = args.mnemonic.join(' ')\n const hash = bytesToHex(shaHasher(mnemonic, 'sha256'))\n const mnemonicInfo = new MnemonicEntity()\n mnemonicInfo.id = args.id ? args.id : hash\n mnemonicInfo.hash = hash\n mnemonicInfo.mnemonic = await this.secretBox.encrypt(mnemonic)\n const result = await (await this.dbConnection).getRepository(MnemonicEntity).save(mnemonicInfo)\n return Promise.resolve({\n id: result.id,\n hash: result.hash,\n mnemonic: args.mnemonic,\n })\n } else {\n throw new Error('Mnemonic needs to be provided.')\n }\n }\n\n private async getMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoResult> {\n const mnemonicInfo = await (await this.dbConnection)\n .getRepository(MnemonicEntity)\n .createQueryBuilder()\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .getOne()\n if (mnemonicInfo?.mnemonic) {\n const mnemonicStr = await this.secretBox?.decrypt(mnemonicInfo.mnemonic)\n return {\n id: mnemonicInfo.id,\n hash: mnemonicInfo.hash,\n mnemonic: mnemonicStr?.split(' '),\n }\n }\n return {}\n }\n\n private async deleteMnemonicInfo(args: IMnemonicInfoStoreArgs): Promise<DeleteResult> {\n return (await this.dbConnection)\n .createQueryBuilder()\n .delete()\n .from(MnemonicEntity)\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n\n private async saveMasterKey(args: IMnemonicInfoStoreArgs): Promise<UpdateResult> {\n if (args.masterKey) {\n return (await this.dbConnection)\n .createQueryBuilder()\n .update(MnemonicEntity)\n .set({ masterKey: args.masterKey })\n .where('id = :id', { id: args.id })\n .orWhere('hash = :hash', { hash: args.hash })\n .execute()\n }\n throw new Error('Master Key needs to be provided.')\n }\n\n private async generateMasterKey(args: IMnemonicInfoStoreArgs): Promise<IMnemonicInfoKeyResult> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic) {\n const mnemonicInfo = await this.generateSeed({ mnemonic })\n if (mnemonicInfo.seed) {\n if (args.type === 'Ed25519') {\n const { key, chainCode } = getMasterKeyFromSeed(mnemonicInfo.seed)\n await this.saveMasterKey({ masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') })\n return { masterKey: key.toString('hex'), chainCode: chainCode.toString('hex') }\n } else {\n throw new Error('Secp256k1 keys are not supported yet')\n }\n }\n }\n throw new Error('Mnemonic not found')\n }\n\n private async generateKeysFromMnemonic(args: IMnemonicInfoStoreArgs, context: IRequiredContext): Promise<ManagedKeyInfo> {\n const mnemonic = (await this.getMnemonicInfo({ id: args.id, hash: args.hash })).mnemonic\n if (mnemonic && context) {\n if (args.path && args.kms) {\n const seed = (await this.generateSeed({ mnemonic })).seed as string\n const { key, chainCode } = derivePath(args.path, seed)\n const extPrivateKey = Buffer.concat([key, chainCode])\n //FIXME it doesn't use any secp256k1 library to generate the public key, so it doesn't generate an extended key\n const publicKey = getPublicKey(key, args.withZeroBytes)\n return await context.agent.keyManagerImport({\n privateKeyHex: extPrivateKey.toString('hex'),\n publicKeyHex: publicKey.toString('hex'),\n type: 'Ed25519',\n kms: args.kms,\n })\n }\n throw new Error('Please provide kms and derivation path')\n }\n throw new Error('Master Key not found')\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\nimport Debug from 'debug'\nimport { CreateMnemonics1659566636105 } from '../postgres/1659566636105-CreateMnemonics'\nimport { CreateMnemonics1659566622817 } from '../sqlite/1659566622817-CreateMnemonics'\n\nconst debug = Debug('sphereon:ssi-sdk:migrations')\n\nexport class CreateMnemonics1659567079429 implements MigrationInterface {\n name = 'CreateMnemonics1659567079429'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n debug('migration: creating mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const up = await mig.up(queryRunner)\n debug('Migration statements executed')\n return up\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n debug('reverting mnemonic tables')\n const dbType = queryRunner.connection.driver.options.type\n if (dbType === 'postgres') {\n debug('using postgres migration file')\n const mig = new CreateMnemonics1659566636105()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else if (dbType === 'sqlite' || 'react-native') {\n debug('using sqlite/react-native migration file')\n const mig = new CreateMnemonics1659566622817()\n const down = await mig.down(queryRunner)\n debug('Migration statements executed')\n return down\n } else {\n return Promise.reject(\n \"Migrations are currently only supported for sqlite, react-native and postgres. Please run your database without migrations and with 'migrationsRun: false' and 'synchronize: true' for now\"\n )\n }\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566636105 implements MigrationInterface {\n name = 'CreateMnemonics1659566636105'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" character varying NOT NULL, \"hash\" character varying NOT NULL, \"mnemonic\" character varying NOT NULL, \"master_key\" character varying, \"chain_code\" character varying, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"), CONSTRAINT \"PK_mnemonic_id\" PRIMARY KEY (\"id\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { MigrationInterface, QueryRunner } from 'typeorm'\n\nexport class CreateMnemonics1659566622817 implements MigrationInterface {\n name = 'CreateMnemonics1659566622817'\n\n public async up(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(\n `CREATE TABLE \"Mnemonic\" (\"id\" varchar PRIMARY KEY NOT NULL, \"hash\" varchar NOT NULL, \"mnemonic\" varchar NOT NULL, \"master_key\" varchar, \"chain_code\" varchar, CONSTRAINT \"UQ_hash\" UNIQUE (\"hash\"), CONSTRAINT \"UQ_mnemonic\" UNIQUE (\"mnemonic\"))`\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n await queryRunner.query(`DROP TABLE \"Mnemonic\"`)\n }\n}\n","import { CreateMnemonics1659567079429 } from './1-CreateMnemonics'\n\n/**\n * The migrations array that SHOULD be used when initializing a TypeORM database connection.\n *\n * These ensure the correct creation of tables and the proper migrations of data when tables change between versions.\n *\n * @internal\n */\nexport const MnemonicSeedManagerMigrations = [CreateMnemonics1659567079429]\n"],"mappings":";;;;;;;;AAAA;AAAA;AAAA;AAAA,MACE,sBAAwB;AAAA,QACtB,YAAc;AAAA,UACZ,SAAW;AAAA,YACT,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACf,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,cAAgB;AAAA,cACd,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,KAAO,CAAC;AAAA,gBACR,UAAY;AAAA,kBACV,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,gBAAkB;AAAA,cAChB,MAAQ;AAAA,cACR,aAAe;AAAA,YACjB;AAAA,YACA,8BAAgC;AAAA,cAC9B,MAAQ;AAAA,YACV;AAAA,YACA,kGAAgH;AAAA,cAC9G,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,KAAO;AAAA,kBACL,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,cAAgB;AAAA,kBACd,MAAQ;AAAA,kBACR,aAAe;AAAA,gBACjB;AAAA,gBACA,MAAQ;AAAA,kBACN,OAAS;AAAA,oBACP;AAAA,sBACE,MAAQ;AAAA,oBACV;AAAA,oBACA;AAAA,sBACE,MAAQ;AAAA,oBACV;AAAA,kBACF;AAAA,kBACA,aAAe;AAAA,gBACjB;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,UAAY;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,aAAe;AAAA,YACjB;AAAA,YACA,aAAe;AAAA,cACb,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,YAAc;AAAA,kBACZ,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,aAAe;AAAA,YACjB;AAAA,YACA,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,qBAAuB;AAAA,cACrB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACL,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACf,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,oBACN;AAAA,oBACA;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,oBAAsB;AAAA,cACpB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,2BAA6B;AAAA,cAC3B,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACV,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,YACA,kCAAoC;AAAA,cAClC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACN,MAAQ;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACjB,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,oBACR,UAAY;AAAA,oBACZ,OAAS;AAAA,sBACP;AAAA,wBACE,MAAQ;AAAA,sBACV;AAAA,sBACA;AAAA,wBACE,MAAQ;AAAA,sBACV;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,kBACd;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY;AAAA,gBACV;AAAA,cACF;AAAA,cACA,sBAAwB;AAAA,YAC1B;AAAA,UACF;AAAA,UACA,SAAW;AAAA,YACT,oBAAsB;AAAA,cACpB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,0BAA4B;AAAA,cAC1B,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,mBAAqB;AAAA,cACnB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,cAClB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,cAAgB;AAAA,cACd,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,iBAAmB;AAAA,cACjB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,kBAAoB;AAAA,cAClB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,gBAAkB;AAAA,cAChB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,uBAAyB;AAAA,cACvB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACrXA,OAAO;;;ACAP,SAASA,QAAQC,QAAQC,YAAYC,qBAAqB;;;;;;;;;;;;AAGnD,IAAMC,iBAAN,cAA6BC,WAAAA;SAAAA;;;EAElCC;EAEAC;EAEAC;EAEAC;EAEAC;AACF;;;IAVmBC,MAAM;IAAMC,MAAM;;;;;;IAEzBD,MAAM;IAAQE,QAAQ;IAAMD,MAAM;;;;;;IAElCD,MAAM;IAAYE,QAAQ;IAAMD,MAAM;;;;;;IAEtCD,MAAM;IAAcG,SAAS;IAAMF,MAAM;;;;;;IAEzCD,MAAM;IAAcG,SAAS;IAAMF,MAAM;;;;;;;;;ACZrD,SAASG,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,YAAYC,sBAAsBC,oBAAoB;AAG/D,YAAYC,WAAW;AAwBhB,IAAMC,sBAAN,MAAMA;EA7Bb,OA6BaA;;;;;EACFC,SAASA,OAAOC;EAChBC,UAAgC;IACvCC,kBAAkB,KAAKA,iBAAiBC,KAAK,IAAI;IACjDC,cAAc,KAAKA,aAAaD,KAAK,IAAI;IACzCE,gBAAgB,KAAKA,eAAeF,KAAK,IAAI;IAC7CG,uBAAuB,KAAKA,sBAAsBH,KAAK,IAAI;IAC3DI,kBAAkB,KAAKA,iBAAiBJ,KAAK,IAAI;IACjDK,iBAAiB,KAAKA,gBAAgBL,KAAK,IAAI;IAC/CM,oBAAoB,KAAKA,mBAAmBN,KAAK,IAAI;IACrDO,mBAAmB,KAAKA,kBAAkBP,KAAK,IAAI;IACnDQ,0BAA0B,KAAKA,yBAAyBR,KAAK,IAAI;EACnE;EAEA,YAAoBS,cAA6CC,WAA+B;SAA5ED,eAAAA;SAA6CC,YAAAA;AAC/D,QAAI,CAACA,WAAW;AACdC,cAAQC,KAAK,0CAAA;IACf;EACF;EAEA,MAAcb,iBAAiBc,MAA4D;AACzF,UAAMC,WAAiBf,uBAAiBc,KAAKE,IAAI;AACjD,QAAIF,KAAKG,SAAS;AAChB,aAAO,MAAM,KAAKZ,iBAAiB;QAAEa,IAAIJ,KAAKI;QAAIH,UAAUA,SAASI,MAAM,GAAA;MAAK,CAAA;IAClF;AACA,WAAO;MAAEJ,UAAUA,SAASI,MAAM,GAAA;IAAK;EACzC;EAEA,MAAchB,eAAeW,MAA+D;AAC1F,UAAMM,eAAe,MAAM,KAAKd,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA;AAC/E,QAAID,cAAcL,UAAU;AAC1B,aAAO;QAAEO,WAAWF,aAAaL,SAASQ,KAAK,GAAA,MAAST,KAAKU,UAAUD,KAAK,GAAA;MAAK;IACnF;AACA,UAAM,IAAIE,MAAM,oBAAA;EAClB;EAEA,MAAcrB,sBAAsBU,MAAsE;AACxG,UAAMM,eAAe,MAAM,KAAKd,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA;AAC/E,QAAID,cAAcL,UAAU;AAC1B,aAAO;QAAEO,WAAWR,KAAKY,gBAAgBC,MAAM,CAACC,gBAAgBR,aAAaL,UAAUc,QAAQD,YAAY,CAAA,CAAE,MAAMA,YAAY,CAAA,CAAE;MAAE;IACrI;AACA,UAAM,IAAIH,MAAM,oBAAA;EAClB;EAEA,MAAcvB,aAAaY,MAAwD;AACjF,WAAOgB,QAAQC,QAAQ;MACrBC,OAAO,MAAYC,qBAAenB,KAAKC,SAASQ,KAAK,GAAA,CAAA,GAAOW,SAAS,KAAA;IACvE,CAAA;EACF;EAEA,MAAc7B,iBAAiBS,MAA4D;AACzF,QAAIA,KAAKC,YAAY,KAAKJ,WAAW;AACnC,YAAMI,WAAWD,KAAKC,SAASQ,KAAK,GAAA;AACpC,YAAMF,OAAOc,WAAWC,UAAUrB,UAAU,QAAA,CAAA;AAC5C,YAAMK,eAAe,IAAIiB,eAAAA;AACzBjB,mBAAaF,KAAKJ,KAAKI,KAAKJ,KAAKI,KAAKG;AACtCD,mBAAaC,OAAOA;AACpBD,mBAAaL,WAAW,MAAM,KAAKJ,UAAU2B,QAAQvB,QAAAA;AACrD,YAAMwB,SAAS,OAAO,MAAM,KAAK7B,cAAc8B,cAAcH,cAAAA,EAAgBI,KAAKrB,YAAAA;AAClF,aAAOU,QAAQC,QAAQ;QACrBb,IAAIqB,OAAOrB;QACXG,MAAMkB,OAAOlB;QACbN,UAAUD,KAAKC;MACjB,CAAA;IACF,OAAO;AACL,YAAM,IAAIU,MAAM,gCAAA;IAClB;EACF;EAEA,MAAcnB,gBAAgBQ,MAA4D;AACxF,UAAMM,eAAe,OAAO,MAAM,KAAKV,cACpC8B,cAAcH,cAAAA,EACdK,mBAAkB,EAClBC,MAAM,YAAY;MAAEzB,IAAIJ,KAAKI;IAAG,CAAA,EAChC0B,QAAQ,gBAAgB;MAAEvB,MAAMP,KAAKO;IAAK,CAAA,EAC1CwB,OAAM;AACT,QAAIzB,cAAcL,UAAU;AAC1B,YAAM+B,cAAc,MAAM,KAAKnC,WAAWoC,QAAQ3B,aAAaL,QAAQ;AACvE,aAAO;QACLG,IAAIE,aAAaF;QACjBG,MAAMD,aAAaC;QACnBN,UAAU+B,aAAa3B,MAAM,GAAA;MAC/B;IACF;AACA,WAAO,CAAC;EACV;EAEA,MAAcZ,mBAAmBO,MAAqD;AACpF,YAAQ,MAAM,KAAKJ,cAChBgC,mBAAkB,EAClBM,OAAM,EACNC,KAAKZ,cAAAA,EACLM,MAAM,YAAY;MAAEzB,IAAIJ,KAAKI;IAAG,CAAA,EAChC0B,QAAQ,gBAAgB;MAAEvB,MAAMP,KAAKO;IAAK,CAAA,EAC1C6B,QAAO;EACZ;EAEA,MAAcC,cAAcrC,MAAqD;AAC/E,QAAIA,KAAKsC,WAAW;AAClB,cAAQ,MAAM,KAAK1C,cAChBgC,mBAAkB,EAClBW,OAAOhB,cAAAA,EACPiB,IAAI;QAAEF,WAAWtC,KAAKsC;MAAU,CAAA,EAChCT,MAAM,YAAY;QAAEzB,IAAIJ,KAAKI;MAAG,CAAA,EAChC0B,QAAQ,gBAAgB;QAAEvB,MAAMP,KAAKO;MAAK,CAAA,EAC1C6B,QAAO;IACZ;AACA,UAAM,IAAIzB,MAAM,kCAAA;EAClB;EAEA,MAAcjB,kBAAkBM,MAA+D;AAC7F,UAAMC,YAAY,MAAM,KAAKT,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA,GAAIN;AAChF,QAAIA,UAAU;AACZ,YAAMK,eAAe,MAAM,KAAKlB,aAAa;QAAEa;MAAS,CAAA;AACxD,UAAIK,aAAaY,MAAM;AACrB,YAAIlB,KAAKyC,SAAS,WAAW;AAC3B,gBAAM,EAAEC,KAAKC,UAAS,IAAKC,qBAAqBtC,aAAaY,IAAI;AACjE,gBAAM,KAAKmB,cAAc;YAAEC,WAAWI,IAAItB,SAAS,KAAA;YAAQuB,WAAWA,UAAUvB,SAAS,KAAA;UAAO,CAAA;AAChG,iBAAO;YAAEkB,WAAWI,IAAItB,SAAS,KAAA;YAAQuB,WAAWA,UAAUvB,SAAS,KAAA;UAAO;QAChF,OAAO;AACL,gBAAM,IAAIT,MAAM,sCAAA;QAClB;MACF;IACF;AACA,UAAM,IAAIA,MAAM,oBAAA;EAClB;EAEA,MAAchB,yBAAyBK,MAA8B6C,SAAoD;AACvH,UAAM5C,YAAY,MAAM,KAAKT,gBAAgB;MAAEY,IAAIJ,KAAKI;MAAIG,MAAMP,KAAKO;IAAK,CAAA,GAAIN;AAChF,QAAIA,YAAY4C,SAAS;AACvB,UAAI7C,KAAK8C,QAAQ9C,KAAK+C,KAAK;AACzB,cAAM7B,QAAQ,MAAM,KAAK9B,aAAa;UAAEa;QAAS,CAAA,GAAIiB;AACrD,cAAM,EAAEwB,KAAKC,UAAS,IAAKK,WAAWhD,KAAK8C,MAAM5B,IAAAA;AACjD,cAAM+B,gBAAgBC,OAAOC,OAAO;UAACT;UAAKC;SAAU;AAEpD,cAAMS,YAAYC,aAAaX,KAAK1C,KAAKsD,aAAa;AACtD,eAAO,MAAMT,QAAQU,MAAMC,iBAAiB;UAC1CC,eAAeR,cAAc7B,SAAS,KAAA;UACtCsC,cAAcN,UAAUhC,SAAS,KAAA;UACjCqB,MAAM;UACNM,KAAK/C,KAAK+C;QACZ,CAAA;MACF;AACA,YAAM,IAAIpC,MAAM,wCAAA;IAClB;AACA,UAAM,IAAIA,MAAM,sBAAA;EAClB;AACF;;;AC/KA,OAAOgD,WAAW;;;ACCX,IAAMC,+BAAN,MAAMA;EAAb,OAAaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvD,UAAMA,YAAYC,MAChB,yUAAyU;EAE7U;EAEA,MAAaC,KAAKF,aAAyC;AACzD,UAAMA,YAAYC,MAAM,uBAAuB;EACjD;AACF;;;ACZO,IAAME,+BAAN,MAAMA;EAAb,OAAaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvD,UAAMA,YAAYC,MAChB,mPAAmP;EAEvP;EAEA,MAAaC,KAAKF,aAAyC;AACzD,UAAMA,YAAYC,MAAM,uBAAuB;EACjD;AACF;;;AFTA,IAAME,QAAQC,MAAM,6BAAA;AAEb,IAAMC,+BAAN,MAAMA;EANb,OAMaA;;;EACXC,OAAO;EAEP,MAAaC,GAAGC,aAAyC;AACvDL,UAAM,qCAAA;AACN,UAAMM,SAASD,YAAYE,WAAWC,OAAOC,QAAQC;AACrD,QAAIJ,WAAW,YAAY;AACzBN,YAAM,+BAAA;AACN,YAAMW,MAAM,IAAIC,6BAAAA;AAChB,YAAMR,KAAK,MAAMO,IAAIP,GAAGC,WAAAA;AACxBL,YAAM,+BAAA;AACN,aAAOI;IACT,WAAWE,WAAW,YAAY,gBAAgB;AAChDN,YAAM,0CAAA;AACN,YAAMW,MAAM,IAAIE,6BAAAA;AAChB,YAAMT,KAAK,MAAMO,IAAIP,GAAGC,WAAAA;AACxBL,YAAM,+BAAA;AACN,aAAOI;IACT,OAAO;AACL,aAAOU,QAAQC,OACb,4LAAA;IAEJ;EACF;EAEA,MAAaC,KAAKX,aAAyC;AACzDL,UAAM,2BAAA;AACN,UAAMM,SAASD,YAAYE,WAAWC,OAAOC,QAAQC;AACrD,QAAIJ,WAAW,YAAY;AACzBN,YAAM,+BAAA;AACN,YAAMW,MAAM,IAAIC,6BAAAA;AAChB,YAAMI,OAAO,MAAML,IAAIK,KAAKX,WAAAA;AAC5BL,YAAM,+BAAA;AACN,aAAOgB;IACT,WAAWV,WAAW,YAAY,gBAAgB;AAChDN,YAAM,0CAAA;AACN,YAAMW,MAAM,IAAIE,6BAAAA;AAChB,YAAMG,OAAO,MAAML,IAAIK,KAAKX,WAAAA;AAC5BL,YAAM,+BAAA;AACN,aAAOgB;IACT,OAAO;AACL,aAAOF,QAAQC,OACb,4LAAA;IAEJ;EACF;AACF;;;AG5CO,IAAME,gCAAgC;EAACC;;;;ANH9C,IAAMC,SAASC;AAWR,IAAMC,8BAA8B;EAACC;;","names":["Column","Entity","BaseEntity","PrimaryColumn","MnemonicEntity","BaseEntity","id","hash","mnemonic","masterKey","chainCode","name","type","unique","default","bytesToHex","shaHasher","derivePath","getMasterKeyFromSeed","getPublicKey","bip39","MnemonicSeedManager","schema","IMnemonicInfoGenerator","methods","generateMnemonic","bind","generateSeed","verifyMnemonic","verifyPartialMnemonic","saveMnemonicInfo","getMnemonicInfo","deleteMnemonicInfo","generateMasterKey","generateKeysFromMnemonic","dbConnection","secretBox","console","warn","args","mnemonic","bits","persist","id","split","mnemonicInfo","hash","succeeded","join","wordList","Error","indexedWordList","every","indexedWord","indexOf","Promise","resolve","seed","mnemonicToSeed","toString","bytesToHex","shaHasher","MnemonicEntity","encrypt","result","getRepository","save","createQueryBuilder","where","orWhere","getOne","mnemonicStr","decrypt","delete","from","execute","saveMasterKey","masterKey","update","set","type","key","chainCode","getMasterKeyFromSeed","context","path","kms","derivePath","extPrivateKey","Buffer","concat","publicKey","getPublicKey","withZeroBytes","agent","keyManagerImport","privateKeyHex","publicKeyHex","Debug","CreateMnemonics1659566636105","name","up","queryRunner","query","down","CreateMnemonics1659566622817","name","up","queryRunner","query","down","debug","Debug","CreateMnemonics1659567079429","name","up","queryRunner","dbType","connection","driver","options","type","mig","CreateMnemonics1659566636105","CreateMnemonics1659566622817","Promise","reject","down","MnemonicSeedManagerMigrations","CreateMnemonics1659567079429","schema","require","MnemonicSeedManagerEntities","MnemonicEntity"]}
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.52.8"
8
+ "packageVersion": "7.52.10"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk-ext.mnemonic-seed-manager",
3
- "version": "0.29.1-next.3+2e81aa3",
3
+ "version": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
4
4
  "source": "./src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -23,8 +23,8 @@
23
23
  }
24
24
  },
25
25
  "scripts": {
26
- "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json && sphereon dev generate-plugin-schema",
27
- "generate-plugin-schema": "sphereon dev generate-plugin-schema",
26
+ "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json && tsx ../../packages/dev/bin/sphereon.js dev generate-plugin-schema",
27
+ "generate-plugin-schema": "tsx ../../packages/dev/bin/sphereon.js dev generate-plugin-schema",
28
28
  "typeorm": "ts-node --project ./tsconfig.json -r tsconfig-paths/register ../../node_modules/typeorm/cli.js --config src/migrations/internal-migrations-ormconfig.ts",
29
29
  "typeorm-sqlite:migration:generate": "npm run typeorm -- migration:generate -c migration-sqlite -d src/migrations/sqlite -n",
30
30
  "typeorm-sqlite:migration:run": "npm run typeorm -- migration:run -c migration-sqlite",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@noble/hashes": "^1.6.1",
36
- "@sphereon/ssi-sdk-ext.key-utils": "0.29.1-next.3+2e81aa3",
36
+ "@sphereon/ssi-sdk-ext.key-utils": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
37
37
  "@veramo/core": "4.2.0",
38
38
  "@veramo/data-store": "4.2.0",
39
39
  "@veramo/key-manager": "4.2.0",
@@ -45,14 +45,15 @@
45
45
  "typeorm": "0.3.20"
46
46
  },
47
47
  "devDependencies": {
48
- "@sphereon/ssi-sdk.dev": "0.34.0",
48
+ "@sphereon/ssi-sdk.dev": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
49
49
  "@types/bip39": "^3.0.0",
50
50
  "@types/node": "^20.17.1",
51
51
  "@veramo/cli": "4.2.0",
52
52
  "@veramo/remote-client": "4.2.0",
53
53
  "@veramo/remote-server": "4.2.0",
54
54
  "ed25519-hd-key": "^1.3.0",
55
- "express": "^4.21.2"
55
+ "express": "^4.21.2",
56
+ "tsx": "^4.20.4"
56
57
  },
57
58
  "files": [
58
59
  "dist",
@@ -73,5 +74,5 @@
73
74
  "mnemonic",
74
75
  "seed"
75
76
  ],
76
- "gitHead": "2e81aa3e86decfd5284227e5c1d29003d5d7a783"
77
+ "gitHead": "426c3a17d6a2a57ba428e83340c6904d3d2d79e1"
77
78
  }
@@ -42,7 +42,8 @@
42
42
  "persist": {
43
43
  "type": "boolean"
44
44
  }
45
- }
45
+ },
46
+ "additionalProperties": false
46
47
  },
47
48
  "DeleteResult": {
48
49
  "type": "object",
@@ -57,9 +58,17 @@
57
58
  },
58
59
  "required": [
59
60
  "raw"
60
- ]
61
+ ],
62
+ "additionalProperties": false
61
63
  },
62
64
  "ManagedKeyInfo": {
65
+ "$ref": "#/components/schemas/Omit<IKey,\"privateKeyHex\">",
66
+ "description": "Represents information about a managed key. Private or secret key material is NOT present."
67
+ },
68
+ "Omit<IKey,\"privateKeyHex\">": {
69
+ "$ref": "#/components/schemas/Pick<IKey,Exclude<(\"kid\"|\"kms\"|\"type\"|\"publicKeyHex\"|\"privateKeyHex\"|\"meta\"),\"privateKeyHex\">>"
70
+ },
71
+ "Pick<IKey,Exclude<(\"kid\"|\"kms\"|\"type\"|\"publicKeyHex\"|\"privateKeyHex\"|\"meta\"),\"privateKeyHex\">>": {
63
72
  "type": "object",
64
73
  "properties": {
65
74
  "kid": {
@@ -96,7 +105,7 @@
96
105
  "type",
97
106
  "publicKeyHex"
98
107
  ],
99
- "description": "Represents information about a managed key. Private or secret key material is NOT present."
108
+ "additionalProperties": false
100
109
  },
101
110
  "TKeyType": {
102
111
  "type": "string",
@@ -132,7 +141,8 @@
132
141
  "chainCode": {
133
142
  "type": "string"
134
143
  }
135
- }
144
+ },
145
+ "additionalProperties": false
136
146
  },
137
147
  "IMnemonicGeneratorArgs": {
138
148
  "type": "object",
@@ -156,7 +166,8 @@
156
166
  },
157
167
  "required": [
158
168
  "bits"
159
- ]
169
+ ],
170
+ "additionalProperties": false
160
171
  },
161
172
  "IMnemonicInfoResult": {
162
173
  "type": "object",
@@ -204,7 +215,8 @@
204
215
  "seed": {
205
216
  "type": "string"
206
217
  }
207
- }
218
+ },
219
+ "additionalProperties": false
208
220
  },
209
221
  "ISeedGeneratorArgs": {
210
222
  "type": "object",
@@ -218,7 +230,8 @@
218
230
  },
219
231
  "required": [
220
232
  "mnemonic"
221
- ]
233
+ ],
234
+ "additionalProperties": false
222
235
  },
223
236
  "IMnemonicVerificationArgs": {
224
237
  "type": "object",
@@ -238,7 +251,8 @@
238
251
  },
239
252
  "required": [
240
253
  "wordList"
241
- ]
254
+ ],
255
+ "additionalProperties": false
242
256
  },
243
257
  "IPartialMnemonicVerificationArgs": {
244
258
  "type": "object",
@@ -268,7 +282,8 @@
268
282
  },
269
283
  "required": [
270
284
  "indexedWordList"
271
- ]
285
+ ],
286
+ "additionalProperties": false
272
287
  }
273
288
  },
274
289
  "methods": {