@originals/sdk 1.8.0 → 1.8.2
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/utils/hash.js +1 -0
- package/package.json +6 -5
- package/src/adapters/FeeOracleMock.ts +9 -0
- package/src/adapters/index.ts +5 -0
- package/src/adapters/providers/OrdHttpProvider.ts +126 -0
- package/src/adapters/providers/OrdMockProvider.ts +101 -0
- package/src/adapters/types.ts +66 -0
- package/src/bitcoin/BitcoinManager.ts +329 -0
- package/src/bitcoin/BroadcastClient.ts +54 -0
- package/src/bitcoin/OrdinalsClient.ts +120 -0
- package/src/bitcoin/PSBTBuilder.ts +106 -0
- package/src/bitcoin/fee-calculation.ts +38 -0
- package/src/bitcoin/providers/OrdNodeProvider.ts +92 -0
- package/src/bitcoin/providers/OrdinalsProvider.ts +56 -0
- package/src/bitcoin/providers/types.ts +59 -0
- package/src/bitcoin/transactions/commit.ts +465 -0
- package/src/bitcoin/transactions/index.ts +13 -0
- package/src/bitcoin/transfer.ts +43 -0
- package/src/bitcoin/utxo-selection.ts +322 -0
- package/src/bitcoin/utxo.ts +113 -0
- package/src/cel/ExternalReferenceManager.ts +87 -0
- package/src/cel/OriginalsCel.ts +460 -0
- package/src/cel/algorithms/createEventLog.ts +68 -0
- package/src/cel/algorithms/deactivateEventLog.ts +109 -0
- package/src/cel/algorithms/index.ts +11 -0
- package/src/cel/algorithms/updateEventLog.ts +99 -0
- package/src/cel/algorithms/verifyEventLog.ts +306 -0
- package/src/cel/algorithms/witnessEvent.ts +87 -0
- package/src/cel/cli/create.ts +330 -0
- package/src/cel/cli/index.ts +383 -0
- package/src/cel/cli/inspect.ts +549 -0
- package/src/cel/cli/migrate.ts +473 -0
- package/src/cel/cli/verify.ts +249 -0
- package/src/cel/hash.ts +71 -0
- package/src/cel/index.ts +16 -0
- package/src/cel/layers/BtcoCelManager.ts +408 -0
- package/src/cel/layers/PeerCelManager.ts +371 -0
- package/src/cel/layers/WebVHCelManager.ts +361 -0
- package/src/cel/layers/index.ts +27 -0
- package/src/cel/serialization/cbor.ts +189 -0
- package/src/cel/serialization/index.ts +10 -0
- package/src/cel/serialization/json.ts +209 -0
- package/src/cel/types.ts +160 -0
- package/src/cel/witnesses/BitcoinWitness.ts +184 -0
- package/src/cel/witnesses/HttpWitness.ts +241 -0
- package/src/cel/witnesses/WitnessService.ts +51 -0
- package/src/cel/witnesses/index.ts +11 -0
- package/src/contexts/credentials-v1.json +237 -0
- package/src/contexts/credentials-v2-examples.json +5 -0
- package/src/contexts/credentials-v2.json +340 -0
- package/src/contexts/credentials.json +237 -0
- package/src/contexts/data-integrity-v2.json +81 -0
- package/src/contexts/dids.json +58 -0
- package/src/contexts/ed255192020.json +93 -0
- package/src/contexts/ordinals-plus.json +23 -0
- package/src/contexts/originals.json +22 -0
- package/src/core/OriginalsSDK.ts +420 -0
- package/src/crypto/Multikey.ts +194 -0
- package/src/crypto/Signer.ts +262 -0
- package/src/crypto/noble-init.ts +138 -0
- package/src/did/BtcoDidResolver.ts +231 -0
- package/src/did/DIDManager.ts +705 -0
- package/src/did/Ed25519Verifier.ts +68 -0
- package/src/did/KeyManager.ts +239 -0
- package/src/did/WebVHManager.ts +499 -0
- package/src/did/createBtcoDidDocument.ts +60 -0
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +68 -0
- package/src/events/EventEmitter.ts +222 -0
- package/src/events/index.ts +19 -0
- package/src/events/types.ts +331 -0
- package/src/examples/basic-usage.ts +78 -0
- package/src/examples/create-module-original.ts +435 -0
- package/src/examples/full-lifecycle-flow.ts +514 -0
- package/src/examples/run.ts +60 -0
- package/src/index.ts +204 -0
- package/src/kinds/KindRegistry.ts +320 -0
- package/src/kinds/index.ts +74 -0
- package/src/kinds/types.ts +470 -0
- package/src/kinds/validators/AgentValidator.ts +257 -0
- package/src/kinds/validators/AppValidator.ts +211 -0
- package/src/kinds/validators/DatasetValidator.ts +242 -0
- package/src/kinds/validators/DocumentValidator.ts +311 -0
- package/src/kinds/validators/MediaValidator.ts +269 -0
- package/src/kinds/validators/ModuleValidator.ts +225 -0
- package/src/kinds/validators/base.ts +276 -0
- package/src/kinds/validators/index.ts +12 -0
- package/src/lifecycle/BatchOperations.ts +381 -0
- package/src/lifecycle/LifecycleManager.ts +2156 -0
- package/src/lifecycle/OriginalsAsset.ts +524 -0
- package/src/lifecycle/ProvenanceQuery.ts +280 -0
- package/src/lifecycle/ResourceVersioning.ts +163 -0
- package/src/migration/MigrationManager.ts +587 -0
- package/src/migration/audit/AuditLogger.ts +176 -0
- package/src/migration/checkpoint/CheckpointManager.ts +112 -0
- package/src/migration/checkpoint/CheckpointStorage.ts +101 -0
- package/src/migration/index.ts +33 -0
- package/src/migration/operations/BaseMigration.ts +126 -0
- package/src/migration/operations/PeerToBtcoMigration.ts +105 -0
- package/src/migration/operations/PeerToWebvhMigration.ts +62 -0
- package/src/migration/operations/WebvhToBtcoMigration.ts +105 -0
- package/src/migration/rollback/RollbackManager.ts +170 -0
- package/src/migration/state/StateMachine.ts +92 -0
- package/src/migration/state/StateTracker.ts +156 -0
- package/src/migration/types.ts +356 -0
- package/src/migration/validation/BitcoinValidator.ts +107 -0
- package/src/migration/validation/CredentialValidator.ts +62 -0
- package/src/migration/validation/DIDCompatibilityValidator.ts +151 -0
- package/src/migration/validation/LifecycleValidator.ts +64 -0
- package/src/migration/validation/StorageValidator.ts +79 -0
- package/src/migration/validation/ValidationPipeline.ts +213 -0
- package/src/resources/ResourceManager.ts +655 -0
- package/src/resources/index.ts +21 -0
- package/src/resources/types.ts +202 -0
- package/src/storage/LocalStorageAdapter.ts +64 -0
- package/src/storage/MemoryStorageAdapter.ts +29 -0
- package/src/storage/StorageAdapter.ts +25 -0
- package/src/storage/index.ts +3 -0
- package/src/types/bitcoin.ts +98 -0
- package/src/types/common.ts +92 -0
- package/src/types/credentials.ts +89 -0
- package/src/types/did.ts +31 -0
- package/src/types/external-shims.d.ts +53 -0
- package/src/types/index.ts +7 -0
- package/src/types/network.ts +178 -0
- package/src/utils/EventLogger.ts +298 -0
- package/src/utils/Logger.ts +324 -0
- package/src/utils/MetricsCollector.ts +358 -0
- package/src/utils/bitcoin-address.ts +132 -0
- package/src/utils/cbor.ts +31 -0
- package/src/utils/encoding.ts +135 -0
- package/src/utils/hash.ts +12 -0
- package/src/utils/retry.ts +46 -0
- package/src/utils/satoshi-validation.ts +196 -0
- package/src/utils/serialization.ts +102 -0
- package/src/utils/telemetry.ts +44 -0
- package/src/utils/validation.ts +123 -0
- package/src/vc/CredentialManager.ts +955 -0
- package/src/vc/Issuer.ts +105 -0
- package/src/vc/Verifier.ts +54 -0
- package/src/vc/cryptosuites/bbs.ts +253 -0
- package/src/vc/cryptosuites/bbsSimple.ts +21 -0
- package/src/vc/cryptosuites/eddsa.ts +99 -0
- package/src/vc/documentLoader.ts +81 -0
- package/src/vc/proofs/data-integrity.ts +33 -0
- package/src/vc/utils/jsonld.ts +18 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI Verify Command
|
|
4
|
+
*
|
|
5
|
+
* Verifies a CEL event log by checking all proofs and the hash chain integrity.
|
|
6
|
+
* Outputs event-by-event breakdown with witness attestation details.
|
|
7
|
+
*
|
|
8
|
+
* Usage: originals-cel verify --log <path> [options]
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import type { EventLog, VerificationResult, DataIntegrityProof, WitnessProof } from '../types';
|
|
14
|
+
import { verifyEventLog } from '../algorithms/verifyEventLog';
|
|
15
|
+
import { parseEventLogJson } from '../serialization/json';
|
|
16
|
+
import { parseEventLogCbor } from '../serialization/cbor';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Flags parsed from command line arguments
|
|
20
|
+
*/
|
|
21
|
+
export interface VerifyFlags {
|
|
22
|
+
log?: string;
|
|
23
|
+
help?: boolean;
|
|
24
|
+
h?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Result of the verify command
|
|
29
|
+
*/
|
|
30
|
+
export interface VerifyResult {
|
|
31
|
+
success: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
verified?: boolean;
|
|
34
|
+
result?: VerificationResult;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Check if a proof is a WitnessProof (has witnessedAt field)
|
|
39
|
+
*/
|
|
40
|
+
function isWitnessProof(proof: DataIntegrityProof | WitnessProof): proof is WitnessProof {
|
|
41
|
+
return 'witnessedAt' in proof && typeof (proof as WitnessProof).witnessedAt === 'string';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Loads and parses an event log from a file
|
|
46
|
+
* Supports both JSON (.json) and CBOR (.cbor) formats
|
|
47
|
+
*/
|
|
48
|
+
function loadEventLog(filePath: string): EventLog {
|
|
49
|
+
if (!fs.existsSync(filePath)) {
|
|
50
|
+
throw new Error(`File not found: ${filePath}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
54
|
+
const content = fs.readFileSync(filePath);
|
|
55
|
+
|
|
56
|
+
if (ext === '.cbor') {
|
|
57
|
+
// Parse as CBOR binary
|
|
58
|
+
return parseEventLogCbor(new Uint8Array(content));
|
|
59
|
+
} else {
|
|
60
|
+
// Default to JSON parsing
|
|
61
|
+
return parseEventLogJson(content.toString('utf-8'));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Format a timestamp for display
|
|
67
|
+
*/
|
|
68
|
+
function formatTimestamp(timestamp: string): string {
|
|
69
|
+
try {
|
|
70
|
+
const date = new Date(timestamp);
|
|
71
|
+
return date.toISOString();
|
|
72
|
+
} catch {
|
|
73
|
+
return timestamp;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Format proof details for display
|
|
79
|
+
*/
|
|
80
|
+
function formatProofDetails(proof: DataIntegrityProof | WitnessProof, indent: string = ' '): string {
|
|
81
|
+
const lines: string[] = [];
|
|
82
|
+
lines.push(`${indent}Cryptosuite: ${proof.cryptosuite}`);
|
|
83
|
+
lines.push(`${indent}Created: ${formatTimestamp(proof.created)}`);
|
|
84
|
+
lines.push(`${indent}Verification Method: ${proof.verificationMethod}`);
|
|
85
|
+
lines.push(`${indent}Proof Purpose: ${proof.proofPurpose}`);
|
|
86
|
+
|
|
87
|
+
// Truncate proof value for display
|
|
88
|
+
const truncatedProof = proof.proofValue.length > 60
|
|
89
|
+
? `${proof.proofValue.substring(0, 57)}...`
|
|
90
|
+
: proof.proofValue;
|
|
91
|
+
lines.push(`${indent}Proof Value: ${truncatedProof}`);
|
|
92
|
+
|
|
93
|
+
// Add witness-specific info
|
|
94
|
+
if (isWitnessProof(proof)) {
|
|
95
|
+
lines.push(`${indent}🕐 Witnessed At: ${formatTimestamp(proof.witnessedAt)}`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return lines.join('\n');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Output verification result to stdout
|
|
103
|
+
*/
|
|
104
|
+
function outputResult(log: EventLog, result: VerificationResult): void {
|
|
105
|
+
console.log('\n═══════════════════════════════════════════════════════');
|
|
106
|
+
console.log(' CEL Event Log Verification Report');
|
|
107
|
+
console.log('═══════════════════════════════════════════════════════\n');
|
|
108
|
+
|
|
109
|
+
// Overall result
|
|
110
|
+
if (result.verified) {
|
|
111
|
+
console.log('✅ VERIFICATION PASSED\n');
|
|
112
|
+
} else {
|
|
113
|
+
console.log('❌ VERIFICATION FAILED\n');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Summary
|
|
117
|
+
console.log(`📊 Summary:`);
|
|
118
|
+
console.log(` Total Events: ${result.events.length}`);
|
|
119
|
+
const proofsPassed = result.events.filter(e => e.proofValid).length;
|
|
120
|
+
const chainPassed = result.events.filter(e => e.chainValid).length;
|
|
121
|
+
console.log(` Proofs Valid: ${proofsPassed}/${result.events.length}`);
|
|
122
|
+
console.log(` Chain Valid: ${chainPassed}/${result.events.length}`);
|
|
123
|
+
|
|
124
|
+
// Count witness proofs
|
|
125
|
+
let totalWitnessProofs = 0;
|
|
126
|
+
for (const event of log.events) {
|
|
127
|
+
for (const proof of event.proof) {
|
|
128
|
+
if (isWitnessProof(proof)) {
|
|
129
|
+
totalWitnessProofs++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (totalWitnessProofs > 0) {
|
|
134
|
+
console.log(` Witness Attestations: ${totalWitnessProofs}`);
|
|
135
|
+
}
|
|
136
|
+
console.log('');
|
|
137
|
+
|
|
138
|
+
// Event-by-event breakdown
|
|
139
|
+
console.log('📋 Event-by-Event Breakdown:');
|
|
140
|
+
console.log('───────────────────────────────────────────────────────');
|
|
141
|
+
|
|
142
|
+
for (let i = 0; i < result.events.length; i++) {
|
|
143
|
+
const eventResult = result.events[i];
|
|
144
|
+
const event = log.events[i];
|
|
145
|
+
|
|
146
|
+
const proofIcon = eventResult.proofValid ? '✅' : '❌';
|
|
147
|
+
const chainIcon = eventResult.chainValid ? '✅' : '❌';
|
|
148
|
+
|
|
149
|
+
console.log(`\n Event ${i + 1} (${eventResult.type})`);
|
|
150
|
+
console.log(` ├─ Proof: ${proofIcon} ${eventResult.proofValid ? 'Valid' : 'Invalid'}`);
|
|
151
|
+
console.log(` └─ Chain: ${chainIcon} ${eventResult.chainValid ? 'Valid' : 'Invalid'}`);
|
|
152
|
+
|
|
153
|
+
// Show proof details
|
|
154
|
+
if (event.proof && event.proof.length > 0) {
|
|
155
|
+
console.log(`\n Proofs (${event.proof.length}):`);
|
|
156
|
+
|
|
157
|
+
for (let j = 0; j < event.proof.length; j++) {
|
|
158
|
+
const proof = event.proof[j];
|
|
159
|
+
const isWitness = isWitnessProof(proof);
|
|
160
|
+
const proofLabel = isWitness ? '🔏 Witness Proof' : '🔐 Controller Proof';
|
|
161
|
+
|
|
162
|
+
console.log(`\n [${j + 1}] ${proofLabel}`);
|
|
163
|
+
console.log(formatProofDetails(proof, ' '));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Show errors for this event
|
|
168
|
+
if (eventResult.errors && eventResult.errors.length > 0) {
|
|
169
|
+
console.log(`\n ⚠️ Errors:`);
|
|
170
|
+
for (const error of eventResult.errors) {
|
|
171
|
+
console.log(` - ${error}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Show global errors if any
|
|
177
|
+
if (result.errors && result.errors.length > 0) {
|
|
178
|
+
console.log('\n───────────────────────────────────────────────────────');
|
|
179
|
+
console.log('⚠️ All Errors:');
|
|
180
|
+
for (const error of result.errors) {
|
|
181
|
+
console.log(` - ${error}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
console.log('\n═══════════════════════════════════════════════════════\n');
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Execute the verify command
|
|
190
|
+
*/
|
|
191
|
+
export async function verifyCommand(flags: VerifyFlags): Promise<VerifyResult> {
|
|
192
|
+
// Check for help flag
|
|
193
|
+
if (flags.help || flags.h) {
|
|
194
|
+
return {
|
|
195
|
+
success: true,
|
|
196
|
+
message: 'Use --help with the main CLI for full help text',
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Validate required arguments
|
|
201
|
+
if (!flags.log) {
|
|
202
|
+
return {
|
|
203
|
+
success: false,
|
|
204
|
+
message: 'Error: --log is required. Usage: originals-cel verify --log <path>',
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Load the event log
|
|
209
|
+
let eventLog: EventLog;
|
|
210
|
+
try {
|
|
211
|
+
eventLog = loadEventLog(flags.log);
|
|
212
|
+
} catch (e) {
|
|
213
|
+
return {
|
|
214
|
+
success: false,
|
|
215
|
+
message: `Error: Failed to load event log: ${(e as Error).message}`,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Verify the event log
|
|
220
|
+
let result: VerificationResult;
|
|
221
|
+
try {
|
|
222
|
+
result = await verifyEventLog(eventLog);
|
|
223
|
+
} catch (e) {
|
|
224
|
+
return {
|
|
225
|
+
success: false,
|
|
226
|
+
message: `Error: Verification failed: ${(e as Error).message}`,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Output the result
|
|
231
|
+
outputResult(eventLog, result);
|
|
232
|
+
|
|
233
|
+
// Return result with exit code information
|
|
234
|
+
if (result.verified) {
|
|
235
|
+
return {
|
|
236
|
+
success: true,
|
|
237
|
+
verified: true,
|
|
238
|
+
message: 'Verification passed: All proofs valid and hash chain intact',
|
|
239
|
+
result,
|
|
240
|
+
};
|
|
241
|
+
} else {
|
|
242
|
+
return {
|
|
243
|
+
success: true, // Command ran successfully, but verification failed
|
|
244
|
+
verified: false,
|
|
245
|
+
message: `Verification failed: ${result.errors.length} error(s) found`,
|
|
246
|
+
result,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
}
|
package/src/cel/hash.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CEL Hash Utilities
|
|
3
|
+
*
|
|
4
|
+
* Computes and verifies Multibase-encoded Multihash digests as specified
|
|
5
|
+
* in the CEL specification for external references.
|
|
6
|
+
*
|
|
7
|
+
* @see https://w3c-ccg.github.io/cel-spec/
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
11
|
+
import { multibase } from '../utils/encoding';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Computes a CEL-compliant digestMultibase from content.
|
|
15
|
+
*
|
|
16
|
+
* Uses sha2-256 hash algorithm and encodes as Multibase base64url-nopad (prefix 'u').
|
|
17
|
+
*
|
|
18
|
+
* @param content - The raw bytes to hash
|
|
19
|
+
* @returns Multibase-encoded digest string (e.g., "uEiDm9F...")
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const digest = computeDigestMultibase(new TextEncoder().encode("hello"));
|
|
24
|
+
* // Returns: "uLCA..."
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function computeDigestMultibase(content: Uint8Array): string {
|
|
28
|
+
// Compute SHA-256 hash
|
|
29
|
+
const hash = sha256(content);
|
|
30
|
+
|
|
31
|
+
// Encode as Multibase base64url-nopad (prefix 'u')
|
|
32
|
+
return multibase.encode(hash, 'base64url');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Verifies that content matches a given digestMultibase.
|
|
37
|
+
*
|
|
38
|
+
* @param content - The raw bytes to verify
|
|
39
|
+
* @param digest - The expected digestMultibase string
|
|
40
|
+
* @returns True if the content hash matches the digest, false otherwise
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const content = new TextEncoder().encode("hello");
|
|
45
|
+
* const digest = computeDigestMultibase(content);
|
|
46
|
+
* const isValid = verifyDigestMultibase(content, digest); // true
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function verifyDigestMultibase(content: Uint8Array, digest: string): boolean {
|
|
50
|
+
try {
|
|
51
|
+
// Compute hash of content
|
|
52
|
+
const computedDigest = computeDigestMultibase(content);
|
|
53
|
+
|
|
54
|
+
// Compare with expected digest
|
|
55
|
+
return computedDigest === digest;
|
|
56
|
+
} catch {
|
|
57
|
+
// Invalid digest format or encoding error
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Decodes a digestMultibase string back to raw hash bytes.
|
|
64
|
+
*
|
|
65
|
+
* @param digest - The Multibase-encoded digest string
|
|
66
|
+
* @returns The raw SHA-256 hash bytes
|
|
67
|
+
* @throws Error if the digest is not a valid Multibase base64url string
|
|
68
|
+
*/
|
|
69
|
+
export function decodeDigestMultibase(digest: string): Uint8Array {
|
|
70
|
+
return multibase.decode(digest);
|
|
71
|
+
}
|
package/src/cel/index.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CEL (Cryptographic Event Log) Module
|
|
3
|
+
*
|
|
4
|
+
* Implements W3C CCG CEL Specification for Originals Protocol
|
|
5
|
+
* @see https://w3c-ccg.github.io/cel-spec/
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export * from './types';
|
|
9
|
+
export * from './hash';
|
|
10
|
+
export * from './algorithms';
|
|
11
|
+
export * from './witnesses';
|
|
12
|
+
export * from './serialization';
|
|
13
|
+
export * from './ExternalReferenceManager';
|
|
14
|
+
export * from './layers';
|
|
15
|
+
export * from './OriginalsCel';
|
|
16
|
+
export { main as celCli } from './cli/index';
|