diff --git a/.changeset/twelve-poets-trade.md b/.changeset/twelve-poets-trade.md new file mode 100644 index 0000000..47ac068 --- /dev/null +++ b/.changeset/twelve-poets-trade.md @@ -0,0 +1,5 @@ +--- +"@zcloak/did": patch +--- + +add pair after unlock diff --git a/packages/did/src/keys/restore.ts b/packages/did/src/keys/restore.ts index 35a5912..4834d59 100644 --- a/packages/did/src/keys/restore.ts +++ b/packages/did/src/keys/restore.ts @@ -3,6 +3,7 @@ import type { DidUrl } from '@zcloak/did-resolver/types'; import type { Keyring } from '@zcloak/keyring'; +import type { KeyringPair } from '@zcloak/keyring/types'; import type { DidKeys$Json } from './types'; import { Did } from '../did'; @@ -13,11 +14,15 @@ import { typeTransform } from '../utils'; export function restore(keyring: Keyring, json: DidKeys$Json, password: string): Did { const keyRelationship = new Map(); + const pairs: KeyringPair[] = []; + json.keys.forEach((key, index) => { - const pair = keyring.addFromJson(key); + const pair = keyring.createFromJson(key); pair.unlock(password); + pairs.push(pair); + const id: DidUrl = `${json.didUrl}#key-${index}`; const controller: DidUrl[] = [`${json.didUrl}`]; const publicKey = pair.publicKey; @@ -29,10 +34,14 @@ export function restore(keyring: Keyring, json: DidKeys$Json, password: string): type: typeTransform(pair.type) }); }); - const pair = keyring.addFromJson(json.identifierKey); + const pair = keyring.createFromJson(json.identifierKey); pair.unlock(password); + pairs.push(pair); + + pairs.forEach((pair) => keyring.addPair(pair)); + const details: IDidDetails = { id: json.didUrl, controller: new Set([json.didUrl]),