@originals/sdk 1.8.2 → 1.8.3
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/package.json +5 -6
- package/src/adapters/FeeOracleMock.ts +0 -9
- package/src/adapters/index.ts +0 -5
- package/src/adapters/providers/OrdHttpProvider.ts +0 -126
- package/src/adapters/providers/OrdMockProvider.ts +0 -101
- package/src/adapters/types.ts +0 -66
- package/src/bitcoin/BitcoinManager.ts +0 -329
- package/src/bitcoin/BroadcastClient.ts +0 -54
- package/src/bitcoin/OrdinalsClient.ts +0 -120
- package/src/bitcoin/PSBTBuilder.ts +0 -106
- package/src/bitcoin/fee-calculation.ts +0 -38
- package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
- package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
- package/src/bitcoin/providers/types.ts +0 -59
- package/src/bitcoin/transactions/commit.ts +0 -465
- package/src/bitcoin/transactions/index.ts +0 -13
- package/src/bitcoin/transfer.ts +0 -43
- package/src/bitcoin/utxo-selection.ts +0 -322
- package/src/bitcoin/utxo.ts +0 -113
- package/src/cel/ExternalReferenceManager.ts +0 -87
- package/src/cel/OriginalsCel.ts +0 -460
- package/src/cel/algorithms/createEventLog.ts +0 -68
- package/src/cel/algorithms/deactivateEventLog.ts +0 -109
- package/src/cel/algorithms/index.ts +0 -11
- package/src/cel/algorithms/updateEventLog.ts +0 -99
- package/src/cel/algorithms/verifyEventLog.ts +0 -306
- package/src/cel/algorithms/witnessEvent.ts +0 -87
- package/src/cel/cli/create.ts +0 -330
- package/src/cel/cli/index.ts +0 -383
- package/src/cel/cli/inspect.ts +0 -549
- package/src/cel/cli/migrate.ts +0 -473
- package/src/cel/cli/verify.ts +0 -249
- package/src/cel/hash.ts +0 -71
- package/src/cel/index.ts +0 -16
- package/src/cel/layers/BtcoCelManager.ts +0 -408
- package/src/cel/layers/PeerCelManager.ts +0 -371
- package/src/cel/layers/WebVHCelManager.ts +0 -361
- package/src/cel/layers/index.ts +0 -27
- package/src/cel/serialization/cbor.ts +0 -189
- package/src/cel/serialization/index.ts +0 -10
- package/src/cel/serialization/json.ts +0 -209
- package/src/cel/types.ts +0 -160
- package/src/cel/witnesses/BitcoinWitness.ts +0 -184
- package/src/cel/witnesses/HttpWitness.ts +0 -241
- package/src/cel/witnesses/WitnessService.ts +0 -51
- package/src/cel/witnesses/index.ts +0 -11
- package/src/contexts/credentials-v1.json +0 -237
- package/src/contexts/credentials-v2-examples.json +0 -5
- package/src/contexts/credentials-v2.json +0 -340
- package/src/contexts/credentials.json +0 -237
- package/src/contexts/data-integrity-v2.json +0 -81
- package/src/contexts/dids.json +0 -58
- package/src/contexts/ed255192020.json +0 -93
- package/src/contexts/ordinals-plus.json +0 -23
- package/src/contexts/originals.json +0 -22
- package/src/core/OriginalsSDK.ts +0 -420
- package/src/crypto/Multikey.ts +0 -194
- package/src/crypto/Signer.ts +0 -262
- package/src/crypto/noble-init.ts +0 -138
- package/src/did/BtcoDidResolver.ts +0 -231
- package/src/did/DIDManager.ts +0 -705
- package/src/did/Ed25519Verifier.ts +0 -68
- package/src/did/KeyManager.ts +0 -239
- package/src/did/WebVHManager.ts +0 -499
- package/src/did/createBtcoDidDocument.ts +0 -60
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
- package/src/events/EventEmitter.ts +0 -222
- package/src/events/index.ts +0 -19
- package/src/events/types.ts +0 -331
- package/src/examples/basic-usage.ts +0 -78
- package/src/examples/create-module-original.ts +0 -435
- package/src/examples/full-lifecycle-flow.ts +0 -514
- package/src/examples/run.ts +0 -60
- package/src/index.ts +0 -204
- package/src/kinds/KindRegistry.ts +0 -320
- package/src/kinds/index.ts +0 -74
- package/src/kinds/types.ts +0 -470
- package/src/kinds/validators/AgentValidator.ts +0 -257
- package/src/kinds/validators/AppValidator.ts +0 -211
- package/src/kinds/validators/DatasetValidator.ts +0 -242
- package/src/kinds/validators/DocumentValidator.ts +0 -311
- package/src/kinds/validators/MediaValidator.ts +0 -269
- package/src/kinds/validators/ModuleValidator.ts +0 -225
- package/src/kinds/validators/base.ts +0 -276
- package/src/kinds/validators/index.ts +0 -12
- package/src/lifecycle/BatchOperations.ts +0 -381
- package/src/lifecycle/LifecycleManager.ts +0 -2156
- package/src/lifecycle/OriginalsAsset.ts +0 -524
- package/src/lifecycle/ProvenanceQuery.ts +0 -280
- package/src/lifecycle/ResourceVersioning.ts +0 -163
- package/src/migration/MigrationManager.ts +0 -587
- package/src/migration/audit/AuditLogger.ts +0 -176
- package/src/migration/checkpoint/CheckpointManager.ts +0 -112
- package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
- package/src/migration/index.ts +0 -33
- package/src/migration/operations/BaseMigration.ts +0 -126
- package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
- package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
- package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
- package/src/migration/rollback/RollbackManager.ts +0 -170
- package/src/migration/state/StateMachine.ts +0 -92
- package/src/migration/state/StateTracker.ts +0 -156
- package/src/migration/types.ts +0 -356
- package/src/migration/validation/BitcoinValidator.ts +0 -107
- package/src/migration/validation/CredentialValidator.ts +0 -62
- package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
- package/src/migration/validation/LifecycleValidator.ts +0 -64
- package/src/migration/validation/StorageValidator.ts +0 -79
- package/src/migration/validation/ValidationPipeline.ts +0 -213
- package/src/resources/ResourceManager.ts +0 -655
- package/src/resources/index.ts +0 -21
- package/src/resources/types.ts +0 -202
- package/src/storage/LocalStorageAdapter.ts +0 -64
- package/src/storage/MemoryStorageAdapter.ts +0 -29
- package/src/storage/StorageAdapter.ts +0 -25
- package/src/storage/index.ts +0 -3
- package/src/types/bitcoin.ts +0 -98
- package/src/types/common.ts +0 -92
- package/src/types/credentials.ts +0 -89
- package/src/types/did.ts +0 -31
- package/src/types/external-shims.d.ts +0 -53
- package/src/types/index.ts +0 -7
- package/src/types/network.ts +0 -178
- package/src/utils/EventLogger.ts +0 -298
- package/src/utils/Logger.ts +0 -324
- package/src/utils/MetricsCollector.ts +0 -358
- package/src/utils/bitcoin-address.ts +0 -132
- package/src/utils/cbor.ts +0 -31
- package/src/utils/encoding.ts +0 -135
- package/src/utils/hash.ts +0 -12
- package/src/utils/retry.ts +0 -46
- package/src/utils/satoshi-validation.ts +0 -196
- package/src/utils/serialization.ts +0 -102
- package/src/utils/telemetry.ts +0 -44
- package/src/utils/validation.ts +0 -123
- package/src/vc/CredentialManager.ts +0 -955
- package/src/vc/Issuer.ts +0 -105
- package/src/vc/Verifier.ts +0 -54
- package/src/vc/cryptosuites/bbs.ts +0 -253
- package/src/vc/cryptosuites/bbsSimple.ts +0 -21
- package/src/vc/cryptosuites/eddsa.ts +0 -99
- package/src/vc/documentLoader.ts +0 -81
- package/src/vc/proofs/data-integrity.ts +0 -33
- package/src/vc/utils/jsonld.ts +0 -18
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { verifyAsync } from '@noble/ed25519';
|
|
2
|
-
import type { ExternalVerifier } from '../types/common.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Ed25519Verifier - A simple Ed25519 verifier for DID operations
|
|
6
|
-
* Compatible with didwebvh-ts resolveDIDFromLog
|
|
7
|
-
*/
|
|
8
|
-
export class Ed25519Verifier implements ExternalVerifier {
|
|
9
|
-
private verificationMethodId?: string;
|
|
10
|
-
private publicKey?: Uint8Array;
|
|
11
|
-
|
|
12
|
-
constructor(verificationMethodId?: string, publicKey?: Uint8Array) {
|
|
13
|
-
this.verificationMethodId = verificationMethodId;
|
|
14
|
-
this.publicKey = publicKey;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Verify a signature using Ed25519
|
|
19
|
-
* @param signature - The signature bytes
|
|
20
|
-
* @param message - The message bytes that were signed
|
|
21
|
-
* @param publicKey - The public key bytes (can be different from constructor publicKey)
|
|
22
|
-
* @returns True if the signature is valid
|
|
23
|
-
*/
|
|
24
|
-
async verify(signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array): Promise<boolean> {
|
|
25
|
-
try {
|
|
26
|
-
// Ed25519 public keys must be exactly 32 bytes
|
|
27
|
-
// Some keys may have a version byte prefix, so remove it if present
|
|
28
|
-
let ed25519PublicKey = publicKey;
|
|
29
|
-
if (publicKey.length === 33) {
|
|
30
|
-
ed25519PublicKey = publicKey.slice(1);
|
|
31
|
-
} else if (publicKey.length !== 32) {
|
|
32
|
-
console.error(`[Ed25519Verifier] Invalid public key length: ${publicKey.length} (expected 32 bytes)`);
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Correct parameter order: verifyAsync(signature, message, publicKey)
|
|
37
|
-
return await verifyAsync(signature, message, ed25519PublicKey);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.error('[Ed25519Verifier] Verification error:', error);
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Get the verification method ID associated with this verifier
|
|
46
|
-
*/
|
|
47
|
-
getVerificationMethodId(): string | undefined {
|
|
48
|
-
return this.verificationMethodId;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get the public key as Uint8Array
|
|
53
|
-
*/
|
|
54
|
-
getPublicKey(): Uint8Array | undefined {
|
|
55
|
-
return this.publicKey;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Get the public key in multibase format (base64url with 'z' prefix)
|
|
60
|
-
*/
|
|
61
|
-
getPublicKeyMultibase(): string | undefined {
|
|
62
|
-
if (!this.publicKey) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
return `z${Buffer.from(this.publicKey).toString('base64')}`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
package/src/did/KeyManager.ts
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
// Initialize noble crypto libraries first (idempotent - safe to import multiple times)
|
|
2
|
-
import '../crypto/noble-init.js';
|
|
3
|
-
|
|
4
|
-
import { DIDDocument, KeyPair, KeyType, KeyRecoveryCredential } from '../types';
|
|
5
|
-
import * as secp256k1 from '@noble/secp256k1';
|
|
6
|
-
import * as ed25519 from '@noble/ed25519';
|
|
7
|
-
import { p256 } from '@noble/curves/p256';
|
|
8
|
-
import { multikey, MultikeyType } from '../crypto/Multikey';
|
|
9
|
-
|
|
10
|
-
function toMultikeyType(type: KeyType): MultikeyType {
|
|
11
|
-
if (type === 'ES256K') return 'Secp256k1';
|
|
12
|
-
if (type === 'Ed25519') return 'Ed25519';
|
|
13
|
-
if (type === 'ES256') return 'P256';
|
|
14
|
-
const _exhaustiveCheck: never = type;
|
|
15
|
-
throw new Error(`Unsupported key type: ${String(_exhaustiveCheck)}`);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function fromMultikeyType(type: MultikeyType): KeyType {
|
|
19
|
-
if (type === 'Secp256k1') return 'ES256K';
|
|
20
|
-
if (type === 'Ed25519') return 'Ed25519';
|
|
21
|
-
if (type === 'P256') return 'ES256';
|
|
22
|
-
throw new Error('Unsupported key type');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export class KeyManager {
|
|
26
|
-
constructor() {
|
|
27
|
-
// Noble crypto libraries are initialized via noble-init.ts (imported at SDK entry point)
|
|
28
|
-
// No initialization needed here
|
|
29
|
-
}
|
|
30
|
-
async generateKeyPair(type: KeyType): Promise<KeyPair> {
|
|
31
|
-
if (type === 'ES256K') {
|
|
32
|
-
const privateKeyBytes = secp256k1.utils.randomPrivateKey();
|
|
33
|
-
const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes, true);
|
|
34
|
-
return {
|
|
35
|
-
privateKey: multikey.encodePrivateKey(privateKeyBytes, 'Secp256k1'),
|
|
36
|
-
publicKey: multikey.encodePublicKey(publicKeyBytes, 'Secp256k1')
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (type === 'Ed25519') {
|
|
41
|
-
const privateKeyBytes = ed25519.utils.randomPrivateKey();
|
|
42
|
-
const ed25519Module = ed25519 as unknown as { getPublicKeyAsync: (privateKey: Uint8Array) => Promise<Uint8Array> };
|
|
43
|
-
const publicKeyBytes = await ed25519Module.getPublicKeyAsync(privateKeyBytes);
|
|
44
|
-
return {
|
|
45
|
-
privateKey: multikey.encodePrivateKey(privateKeyBytes, 'Ed25519'),
|
|
46
|
-
publicKey: multikey.encodePublicKey(publicKeyBytes, 'Ed25519')
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (type === 'ES256') {
|
|
51
|
-
const privateKeyBytes = p256.utils.randomPrivateKey();
|
|
52
|
-
const publicKeyBytes = p256.getPublicKey(privateKeyBytes, true);
|
|
53
|
-
return {
|
|
54
|
-
privateKey: multikey.encodePrivateKey(privateKeyBytes, 'P256'),
|
|
55
|
-
publicKey: multikey.encodePublicKey(publicKeyBytes, 'P256')
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const _exhaustiveCheck: never = type;
|
|
60
|
-
throw new Error(`Unsupported key type: ${String(_exhaustiveCheck)}`);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
rotateKeys(didDoc: DIDDocument, newKeyPair: KeyPair): DIDDocument {
|
|
64
|
-
const multikeyContext = 'https://w3id.org/security/multikey/v1';
|
|
65
|
-
const securityContext = 'https://w3id.org/security/v1';
|
|
66
|
-
|
|
67
|
-
// Ensure required contexts are present
|
|
68
|
-
const updatedContext = [...didDoc['@context']];
|
|
69
|
-
if (!updatedContext.includes(multikeyContext)) {
|
|
70
|
-
updatedContext.push(multikeyContext);
|
|
71
|
-
}
|
|
72
|
-
if (!updatedContext.includes(securityContext)) {
|
|
73
|
-
updatedContext.push(securityContext);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Generate new key ID
|
|
77
|
-
const existingKeys = didDoc.verificationMethod || [];
|
|
78
|
-
const keyIndex = existingKeys.length;
|
|
79
|
-
const newKeyId = `${didDoc.id}#keys-${keyIndex}`;
|
|
80
|
-
|
|
81
|
-
// Mark all existing verification methods as revoked with current timestamp
|
|
82
|
-
const revokedTimestamp = new Date().toISOString();
|
|
83
|
-
const revokedVerificationMethods = existingKeys.map(vm => ({
|
|
84
|
-
...vm,
|
|
85
|
-
revoked: revokedTimestamp
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
|
-
// Create new verification method
|
|
89
|
-
const newVerificationMethod = {
|
|
90
|
-
id: newKeyId,
|
|
91
|
-
type: 'Multikey',
|
|
92
|
-
controller: didDoc.id,
|
|
93
|
-
publicKeyMultibase: newKeyPair.publicKey
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// Update authentication and assertionMethod arrays to reference only the new key
|
|
97
|
-
const newKeyReference = newKeyId;
|
|
98
|
-
|
|
99
|
-
const updated: DIDDocument = {
|
|
100
|
-
...didDoc,
|
|
101
|
-
'@context': updatedContext,
|
|
102
|
-
verificationMethod: [...revokedVerificationMethods, newVerificationMethod],
|
|
103
|
-
authentication: [newKeyReference],
|
|
104
|
-
assertionMethod: [newKeyReference]
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
// Preserve other properties if they exist
|
|
108
|
-
if (didDoc.keyAgreement) {
|
|
109
|
-
updated.keyAgreement = didDoc.keyAgreement;
|
|
110
|
-
}
|
|
111
|
-
if (didDoc.capabilityInvocation) {
|
|
112
|
-
updated.capabilityInvocation = didDoc.capabilityInvocation;
|
|
113
|
-
}
|
|
114
|
-
if (didDoc.capabilityDelegation) {
|
|
115
|
-
updated.capabilityDelegation = didDoc.capabilityDelegation;
|
|
116
|
-
}
|
|
117
|
-
if (didDoc.service) {
|
|
118
|
-
updated.service = didDoc.service;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return updated;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
async recoverFromCompromise(didDoc: DIDDocument): Promise<{
|
|
125
|
-
didDocument: DIDDocument;
|
|
126
|
-
recoveryCredential: KeyRecoveryCredential;
|
|
127
|
-
newKeyPair: KeyPair;
|
|
128
|
-
}> {
|
|
129
|
-
// Determine key type from existing verification methods or default to Ed25519
|
|
130
|
-
let keyType: KeyType = 'Ed25519';
|
|
131
|
-
if (didDoc.verificationMethod && didDoc.verificationMethod.length > 0) {
|
|
132
|
-
try {
|
|
133
|
-
const firstKey = didDoc.verificationMethod[0];
|
|
134
|
-
const decoded = multikey.decodePublicKey(firstKey.publicKeyMultibase);
|
|
135
|
-
keyType = fromMultikeyType(decoded.type);
|
|
136
|
-
} catch (e) {
|
|
137
|
-
// If decoding fails, use default Ed25519
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Generate new key pair
|
|
142
|
-
const newKeyPair = await this.generateKeyPair(keyType);
|
|
143
|
-
|
|
144
|
-
// Ensure required contexts
|
|
145
|
-
const multikeyContext = 'https://w3id.org/security/multikey/v1';
|
|
146
|
-
const securityContext = 'https://w3id.org/security/v1';
|
|
147
|
-
const credentialsContext = 'https://www.w3.org/2018/credentials/v1';
|
|
148
|
-
|
|
149
|
-
const updatedContext = [...didDoc['@context']];
|
|
150
|
-
if (!updatedContext.includes(multikeyContext)) {
|
|
151
|
-
updatedContext.push(multikeyContext);
|
|
152
|
-
}
|
|
153
|
-
if (!updatedContext.includes(securityContext)) {
|
|
154
|
-
updatedContext.push(securityContext);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Mark all existing verification methods as compromised
|
|
158
|
-
const compromisedTimestamp = new Date().toISOString();
|
|
159
|
-
const existingKeys = didDoc.verificationMethod || [];
|
|
160
|
-
const compromisedVerificationMethods = existingKeys.map(vm => ({
|
|
161
|
-
...vm,
|
|
162
|
-
compromised: compromisedTimestamp
|
|
163
|
-
}));
|
|
164
|
-
|
|
165
|
-
// Collect IDs of compromised keys
|
|
166
|
-
const previousVerificationMethodIds = existingKeys.map(vm => vm.id);
|
|
167
|
-
|
|
168
|
-
// Generate new key ID
|
|
169
|
-
const keyIndex = existingKeys.length;
|
|
170
|
-
const newKeyId = `${didDoc.id}#keys-${keyIndex}`;
|
|
171
|
-
|
|
172
|
-
// Create new verification method
|
|
173
|
-
const newVerificationMethod = {
|
|
174
|
-
id: newKeyId,
|
|
175
|
-
type: 'Multikey',
|
|
176
|
-
controller: didDoc.id,
|
|
177
|
-
publicKeyMultibase: newKeyPair.publicKey
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
// Update DID document
|
|
181
|
-
const updatedDidDocument: DIDDocument = {
|
|
182
|
-
...didDoc,
|
|
183
|
-
'@context': updatedContext,
|
|
184
|
-
verificationMethod: [...compromisedVerificationMethods, newVerificationMethod],
|
|
185
|
-
authentication: [newKeyId],
|
|
186
|
-
assertionMethod: [newKeyId]
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
// Preserve other properties
|
|
190
|
-
if (didDoc.keyAgreement) {
|
|
191
|
-
updatedDidDocument.keyAgreement = didDoc.keyAgreement;
|
|
192
|
-
}
|
|
193
|
-
if (didDoc.capabilityInvocation) {
|
|
194
|
-
updatedDidDocument.capabilityInvocation = didDoc.capabilityInvocation;
|
|
195
|
-
}
|
|
196
|
-
if (didDoc.capabilityDelegation) {
|
|
197
|
-
updatedDidDocument.capabilityDelegation = didDoc.capabilityDelegation;
|
|
198
|
-
}
|
|
199
|
-
if (didDoc.service) {
|
|
200
|
-
updatedDidDocument.service = didDoc.service;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Create recovery credential
|
|
204
|
-
const recoveryCredential: KeyRecoveryCredential = {
|
|
205
|
-
'@context': [credentialsContext, securityContext],
|
|
206
|
-
type: ['VerifiableCredential', 'KeyRecoveryCredential'],
|
|
207
|
-
issuer: didDoc.id,
|
|
208
|
-
issuanceDate: compromisedTimestamp,
|
|
209
|
-
credentialSubject: {
|
|
210
|
-
id: didDoc.id,
|
|
211
|
-
recoveredAt: compromisedTimestamp,
|
|
212
|
-
recoveryReason: 'key_compromise',
|
|
213
|
-
previousVerificationMethods: previousVerificationMethodIds,
|
|
214
|
-
newVerificationMethod: newKeyId
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
return { didDocument: updatedDidDocument, recoveryCredential, newKeyPair };
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
encodePublicKeyMultibase(publicKey: Buffer, type: KeyType): string {
|
|
222
|
-
const mkType = toMultikeyType(type);
|
|
223
|
-
return multikey.encodePublicKey(new Uint8Array(publicKey), mkType);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
decodePublicKeyMultibase(encoded: string): { key: Buffer; type: KeyType } {
|
|
227
|
-
if (!encoded || typeof encoded !== 'string') {
|
|
228
|
-
throw new Error('Invalid multibase string');
|
|
229
|
-
}
|
|
230
|
-
try {
|
|
231
|
-
const decoded = multikey.decodePublicKey(encoded);
|
|
232
|
-
return { key: Buffer.from(decoded.key), type: fromMultikeyType(decoded.type) };
|
|
233
|
-
} catch {
|
|
234
|
-
throw new Error('Invalid multibase string');
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|