@originals/sdk 1.8.1 → 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.
Files changed (145) hide show
  1. package/dist/utils/hash.js +1 -0
  2. package/package.json +6 -5
  3. package/src/adapters/FeeOracleMock.ts +9 -0
  4. package/src/adapters/index.ts +5 -0
  5. package/src/adapters/providers/OrdHttpProvider.ts +126 -0
  6. package/src/adapters/providers/OrdMockProvider.ts +101 -0
  7. package/src/adapters/types.ts +66 -0
  8. package/src/bitcoin/BitcoinManager.ts +329 -0
  9. package/src/bitcoin/BroadcastClient.ts +54 -0
  10. package/src/bitcoin/OrdinalsClient.ts +120 -0
  11. package/src/bitcoin/PSBTBuilder.ts +106 -0
  12. package/src/bitcoin/fee-calculation.ts +38 -0
  13. package/src/bitcoin/providers/OrdNodeProvider.ts +92 -0
  14. package/src/bitcoin/providers/OrdinalsProvider.ts +56 -0
  15. package/src/bitcoin/providers/types.ts +59 -0
  16. package/src/bitcoin/transactions/commit.ts +465 -0
  17. package/src/bitcoin/transactions/index.ts +13 -0
  18. package/src/bitcoin/transfer.ts +43 -0
  19. package/src/bitcoin/utxo-selection.ts +322 -0
  20. package/src/bitcoin/utxo.ts +113 -0
  21. package/src/cel/ExternalReferenceManager.ts +87 -0
  22. package/src/cel/OriginalsCel.ts +460 -0
  23. package/src/cel/algorithms/createEventLog.ts +68 -0
  24. package/src/cel/algorithms/deactivateEventLog.ts +109 -0
  25. package/src/cel/algorithms/index.ts +11 -0
  26. package/src/cel/algorithms/updateEventLog.ts +99 -0
  27. package/src/cel/algorithms/verifyEventLog.ts +306 -0
  28. package/src/cel/algorithms/witnessEvent.ts +87 -0
  29. package/src/cel/cli/create.ts +330 -0
  30. package/src/cel/cli/index.ts +383 -0
  31. package/src/cel/cli/inspect.ts +549 -0
  32. package/src/cel/cli/migrate.ts +473 -0
  33. package/src/cel/cli/verify.ts +249 -0
  34. package/src/cel/hash.ts +71 -0
  35. package/src/cel/index.ts +16 -0
  36. package/src/cel/layers/BtcoCelManager.ts +408 -0
  37. package/src/cel/layers/PeerCelManager.ts +371 -0
  38. package/src/cel/layers/WebVHCelManager.ts +361 -0
  39. package/src/cel/layers/index.ts +27 -0
  40. package/src/cel/serialization/cbor.ts +189 -0
  41. package/src/cel/serialization/index.ts +10 -0
  42. package/src/cel/serialization/json.ts +209 -0
  43. package/src/cel/types.ts +160 -0
  44. package/src/cel/witnesses/BitcoinWitness.ts +184 -0
  45. package/src/cel/witnesses/HttpWitness.ts +241 -0
  46. package/src/cel/witnesses/WitnessService.ts +51 -0
  47. package/src/cel/witnesses/index.ts +11 -0
  48. package/src/contexts/credentials-v1.json +237 -0
  49. package/src/contexts/credentials-v2-examples.json +5 -0
  50. package/src/contexts/credentials-v2.json +340 -0
  51. package/src/contexts/credentials.json +237 -0
  52. package/src/contexts/data-integrity-v2.json +81 -0
  53. package/src/contexts/dids.json +58 -0
  54. package/src/contexts/ed255192020.json +93 -0
  55. package/src/contexts/ordinals-plus.json +23 -0
  56. package/src/contexts/originals.json +22 -0
  57. package/src/core/OriginalsSDK.ts +420 -0
  58. package/src/crypto/Multikey.ts +194 -0
  59. package/src/crypto/Signer.ts +262 -0
  60. package/src/crypto/noble-init.ts +138 -0
  61. package/src/did/BtcoDidResolver.ts +231 -0
  62. package/src/did/DIDManager.ts +705 -0
  63. package/src/did/Ed25519Verifier.ts +68 -0
  64. package/src/did/KeyManager.ts +239 -0
  65. package/src/did/WebVHManager.ts +499 -0
  66. package/src/did/createBtcoDidDocument.ts +60 -0
  67. package/src/did/providers/OrdinalsClientProviderAdapter.ts +68 -0
  68. package/src/events/EventEmitter.ts +222 -0
  69. package/src/events/index.ts +19 -0
  70. package/src/events/types.ts +331 -0
  71. package/src/examples/basic-usage.ts +78 -0
  72. package/src/examples/create-module-original.ts +435 -0
  73. package/src/examples/full-lifecycle-flow.ts +514 -0
  74. package/src/examples/run.ts +60 -0
  75. package/src/index.ts +204 -0
  76. package/src/kinds/KindRegistry.ts +320 -0
  77. package/src/kinds/index.ts +74 -0
  78. package/src/kinds/types.ts +470 -0
  79. package/src/kinds/validators/AgentValidator.ts +257 -0
  80. package/src/kinds/validators/AppValidator.ts +211 -0
  81. package/src/kinds/validators/DatasetValidator.ts +242 -0
  82. package/src/kinds/validators/DocumentValidator.ts +311 -0
  83. package/src/kinds/validators/MediaValidator.ts +269 -0
  84. package/src/kinds/validators/ModuleValidator.ts +225 -0
  85. package/src/kinds/validators/base.ts +276 -0
  86. package/src/kinds/validators/index.ts +12 -0
  87. package/src/lifecycle/BatchOperations.ts +381 -0
  88. package/src/lifecycle/LifecycleManager.ts +2156 -0
  89. package/src/lifecycle/OriginalsAsset.ts +524 -0
  90. package/src/lifecycle/ProvenanceQuery.ts +280 -0
  91. package/src/lifecycle/ResourceVersioning.ts +163 -0
  92. package/src/migration/MigrationManager.ts +587 -0
  93. package/src/migration/audit/AuditLogger.ts +176 -0
  94. package/src/migration/checkpoint/CheckpointManager.ts +112 -0
  95. package/src/migration/checkpoint/CheckpointStorage.ts +101 -0
  96. package/src/migration/index.ts +33 -0
  97. package/src/migration/operations/BaseMigration.ts +126 -0
  98. package/src/migration/operations/PeerToBtcoMigration.ts +105 -0
  99. package/src/migration/operations/PeerToWebvhMigration.ts +62 -0
  100. package/src/migration/operations/WebvhToBtcoMigration.ts +105 -0
  101. package/src/migration/rollback/RollbackManager.ts +170 -0
  102. package/src/migration/state/StateMachine.ts +92 -0
  103. package/src/migration/state/StateTracker.ts +156 -0
  104. package/src/migration/types.ts +356 -0
  105. package/src/migration/validation/BitcoinValidator.ts +107 -0
  106. package/src/migration/validation/CredentialValidator.ts +62 -0
  107. package/src/migration/validation/DIDCompatibilityValidator.ts +151 -0
  108. package/src/migration/validation/LifecycleValidator.ts +64 -0
  109. package/src/migration/validation/StorageValidator.ts +79 -0
  110. package/src/migration/validation/ValidationPipeline.ts +213 -0
  111. package/src/resources/ResourceManager.ts +655 -0
  112. package/src/resources/index.ts +21 -0
  113. package/src/resources/types.ts +202 -0
  114. package/src/storage/LocalStorageAdapter.ts +64 -0
  115. package/src/storage/MemoryStorageAdapter.ts +29 -0
  116. package/src/storage/StorageAdapter.ts +25 -0
  117. package/src/storage/index.ts +3 -0
  118. package/src/types/bitcoin.ts +98 -0
  119. package/src/types/common.ts +92 -0
  120. package/src/types/credentials.ts +89 -0
  121. package/src/types/did.ts +31 -0
  122. package/src/types/external-shims.d.ts +53 -0
  123. package/src/types/index.ts +7 -0
  124. package/src/types/network.ts +178 -0
  125. package/src/utils/EventLogger.ts +298 -0
  126. package/src/utils/Logger.ts +324 -0
  127. package/src/utils/MetricsCollector.ts +358 -0
  128. package/src/utils/bitcoin-address.ts +132 -0
  129. package/src/utils/cbor.ts +31 -0
  130. package/src/utils/encoding.ts +135 -0
  131. package/src/utils/hash.ts +12 -0
  132. package/src/utils/retry.ts +46 -0
  133. package/src/utils/satoshi-validation.ts +196 -0
  134. package/src/utils/serialization.ts +102 -0
  135. package/src/utils/telemetry.ts +44 -0
  136. package/src/utils/validation.ts +123 -0
  137. package/src/vc/CredentialManager.ts +955 -0
  138. package/src/vc/Issuer.ts +105 -0
  139. package/src/vc/Verifier.ts +54 -0
  140. package/src/vc/cryptosuites/bbs.ts +253 -0
  141. package/src/vc/cryptosuites/bbsSimple.ts +21 -0
  142. package/src/vc/cryptosuites/eddsa.ts +99 -0
  143. package/src/vc/documentLoader.ts +81 -0
  144. package/src/vc/proofs/data-integrity.ts +33 -0
  145. package/src/vc/utils/jsonld.ts +18 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * HttpWitness - HTTP-based witness service for CEL event logs
3
+ *
4
+ * Implements the WitnessService interface for HTTP-based witness endpoints.
5
+ * Used primarily for the did:webvh layer to obtain third-party attestations
6
+ * from remote witness services.
7
+ *
8
+ * @see https://w3c-ccg.github.io/cel-spec/
9
+ */
10
+
11
+ import type { WitnessProof } from '../types';
12
+ import type { WitnessService } from './WitnessService';
13
+
14
+ /**
15
+ * Configuration options for HttpWitness
16
+ */
17
+ export interface HttpWitnessOptions {
18
+ /** Request timeout in milliseconds (default: 30000) */
19
+ timeout?: number;
20
+ /** Custom headers to include in requests */
21
+ headers?: Record<string, string>;
22
+ /** Custom fetch implementation (for testing or alternative HTTP clients) */
23
+ fetch?: typeof globalThis.fetch;
24
+ }
25
+
26
+ /**
27
+ * Error thrown when the HTTP witness service is unavailable or returns an error
28
+ */
29
+ export class HttpWitnessError extends Error {
30
+ /** HTTP status code if available */
31
+ readonly statusCode?: number;
32
+ /** Response body if available */
33
+ readonly responseBody?: string;
34
+ /** The witness URL that failed */
35
+ readonly witnessUrl: string;
36
+
37
+ constructor(
38
+ message: string,
39
+ witnessUrl: string,
40
+ statusCode?: number,
41
+ responseBody?: string
42
+ ) {
43
+ super(message);
44
+ this.name = 'HttpWitnessError';
45
+ this.witnessUrl = witnessUrl;
46
+ this.statusCode = statusCode;
47
+ this.responseBody = responseBody;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * HTTP-based witness service implementation
53
+ *
54
+ * Posts digestMultibase to a witness endpoint and parses the WitnessProof response.
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const witness = new HttpWitness('https://witness.example.com/api/attest');
59
+ * const proof = await witness.witness('uEiD...');
60
+ * console.log(proof.witnessedAt); // ISO timestamp of attestation
61
+ * ```
62
+ */
63
+ export class HttpWitness implements WitnessService {
64
+ private readonly witnessUrl: string;
65
+ private readonly timeout: number;
66
+ private readonly headers: Record<string, string>;
67
+ private readonly fetchFn: typeof globalThis.fetch;
68
+
69
+ /**
70
+ * Creates a new HttpWitness instance
71
+ *
72
+ * @param witnessUrl - The URL of the witness endpoint to POST to
73
+ * @param options - Optional configuration options
74
+ */
75
+ constructor(witnessUrl: string, options: HttpWitnessOptions = {}) {
76
+ if (!witnessUrl || typeof witnessUrl !== 'string') {
77
+ throw new Error('witnessUrl must be a non-empty string');
78
+ }
79
+
80
+ // Validate URL format
81
+ try {
82
+ new URL(witnessUrl);
83
+ } catch {
84
+ throw new Error(`Invalid witness URL: ${witnessUrl}`);
85
+ }
86
+
87
+ this.witnessUrl = witnessUrl;
88
+ this.timeout = options.timeout ?? 30000;
89
+ this.headers = {
90
+ 'Content-Type': 'application/json',
91
+ 'Accept': 'application/json',
92
+ ...options.headers,
93
+ };
94
+ this.fetchFn = options.fetch ?? globalThis.fetch;
95
+ }
96
+
97
+ /**
98
+ * Witnesses a digest by posting to the HTTP endpoint
99
+ *
100
+ * @param digestMultibase - The Multibase-encoded digest to witness
101
+ * @returns A WitnessProof containing the attestation and witnessedAt timestamp
102
+ * @throws HttpWitnessError if the witness service is unavailable or returns an error
103
+ */
104
+ async witness(digestMultibase: string): Promise<WitnessProof> {
105
+ if (!digestMultibase || typeof digestMultibase !== 'string') {
106
+ throw new Error('digestMultibase must be a non-empty string');
107
+ }
108
+
109
+ // Create abort controller for timeout
110
+ const controller = new AbortController();
111
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
112
+
113
+ try {
114
+ const response = await this.fetchFn(this.witnessUrl, {
115
+ method: 'POST',
116
+ headers: this.headers,
117
+ body: JSON.stringify({ digest: digestMultibase }),
118
+ signal: controller.signal,
119
+ });
120
+
121
+ clearTimeout(timeoutId);
122
+
123
+ // Handle non-OK responses
124
+ if (!response.ok) {
125
+ let responseBody: string | undefined;
126
+ try {
127
+ responseBody = await response.text();
128
+ } catch {
129
+ // Ignore body read errors
130
+ }
131
+
132
+ throw new HttpWitnessError(
133
+ `Witness service returned ${response.status} ${response.statusText}`,
134
+ this.witnessUrl,
135
+ response.status,
136
+ responseBody
137
+ );
138
+ }
139
+
140
+ // Parse response
141
+ let data: unknown;
142
+ try {
143
+ data = await response.json();
144
+ } catch {
145
+ throw new HttpWitnessError(
146
+ 'Witness service returned invalid JSON response',
147
+ this.witnessUrl,
148
+ response.status
149
+ );
150
+ }
151
+
152
+ // Validate WitnessProof structure
153
+ const proof = this.validateWitnessProof(data);
154
+ return proof;
155
+
156
+ } catch (error) {
157
+ clearTimeout(timeoutId);
158
+
159
+ // Re-throw HttpWitnessError as-is
160
+ if (error instanceof HttpWitnessError) {
161
+ throw error;
162
+ }
163
+
164
+ // Handle abort/timeout
165
+ if (error instanceof Error && error.name === 'AbortError') {
166
+ throw new HttpWitnessError(
167
+ `Witness service request timed out after ${this.timeout}ms`,
168
+ this.witnessUrl
169
+ );
170
+ }
171
+
172
+ // Handle network errors
173
+ if (error instanceof TypeError) {
174
+ throw new HttpWitnessError(
175
+ `Witness service unavailable: ${error.message}`,
176
+ this.witnessUrl
177
+ );
178
+ }
179
+
180
+ // Re-throw other errors
181
+ throw new HttpWitnessError(
182
+ `Witness request failed: ${error instanceof Error ? error.message : String(error)}`,
183
+ this.witnessUrl
184
+ );
185
+ }
186
+ }
187
+
188
+ /**
189
+ * Validates that the response data is a valid WitnessProof
190
+ *
191
+ * @param data - The parsed JSON response
192
+ * @returns A validated WitnessProof
193
+ * @throws HttpWitnessError if the response is not a valid WitnessProof
194
+ */
195
+ private validateWitnessProof(data: unknown): WitnessProof {
196
+ if (!data || typeof data !== 'object') {
197
+ throw new HttpWitnessError(
198
+ 'Witness service returned invalid proof: expected object',
199
+ this.witnessUrl
200
+ );
201
+ }
202
+
203
+ const proof = data as Record<string, unknown>;
204
+
205
+ // Check required DataIntegrityProof fields
206
+ const requiredFields = ['type', 'cryptosuite', 'created', 'verificationMethod', 'proofPurpose', 'proofValue'];
207
+ for (const field of requiredFields) {
208
+ if (typeof proof[field] !== 'string') {
209
+ throw new HttpWitnessError(
210
+ `Witness service returned invalid proof: missing or invalid '${field}' field`,
211
+ this.witnessUrl
212
+ );
213
+ }
214
+ }
215
+
216
+ // Check WitnessProof-specific field
217
+ if (typeof proof.witnessedAt !== 'string') {
218
+ throw new HttpWitnessError(
219
+ "Witness service returned invalid proof: missing or invalid 'witnessedAt' field",
220
+ this.witnessUrl
221
+ );
222
+ }
223
+
224
+ return {
225
+ type: proof.type as string,
226
+ cryptosuite: proof.cryptosuite as string,
227
+ created: proof.created as string,
228
+ verificationMethod: proof.verificationMethod as string,
229
+ proofPurpose: proof.proofPurpose as string,
230
+ proofValue: proof.proofValue as string,
231
+ witnessedAt: proof.witnessedAt as string,
232
+ };
233
+ }
234
+
235
+ /**
236
+ * Gets the witness URL this instance is configured to use
237
+ */
238
+ get url(): string {
239
+ return this.witnessUrl;
240
+ }
241
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * WitnessService Interface
3
+ *
4
+ * Defines a pluggable interface for witness services that attest to the
5
+ * existence of events at a point in time. Witnesses add trust anchors
6
+ * to event logs by providing third-party attestations.
7
+ *
8
+ * @see https://w3c-ccg.github.io/cel-spec/
9
+ */
10
+
11
+ import type { WitnessProof } from '../types';
12
+
13
+ /**
14
+ * Interface for witness services that can attest to event digests.
15
+ *
16
+ * Implementations might include:
17
+ * - HTTP-based witness services (for did:webvh layer)
18
+ * - Bitcoin timestamping services (for did:btco layer)
19
+ * - Notary services
20
+ * - Blockchain-based attestation services
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * class MyHttpWitness implements WitnessService {
25
+ * constructor(private witnessUrl: string) {}
26
+ *
27
+ * async witness(digestMultibase: string): Promise<WitnessProof> {
28
+ * const response = await fetch(this.witnessUrl, {
29
+ * method: 'POST',
30
+ * body: JSON.stringify({ digest: digestMultibase })
31
+ * });
32
+ * return response.json();
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ export interface WitnessService {
38
+ /**
39
+ * Witnesses a digest and returns a proof of attestation.
40
+ *
41
+ * The witness should:
42
+ * 1. Record the digest at the current point in time
43
+ * 2. Generate a cryptographic proof of the attestation
44
+ * 3. Include a witnessedAt timestamp in the proof
45
+ *
46
+ * @param digestMultibase - The Multibase-encoded digest to witness (from computeDigestMultibase)
47
+ * @returns A WitnessProof containing the attestation and witnessedAt timestamp
48
+ * @throws Error if the witness service is unavailable or fails
49
+ */
50
+ witness(digestMultibase: string): Promise<WitnessProof>;
51
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CEL Witness Services
3
+ *
4
+ * Pluggable witness interfaces and implementations for third-party attestations.
5
+ */
6
+
7
+ export type { WitnessService } from './WitnessService';
8
+ export { HttpWitness, HttpWitnessError } from './HttpWitness';
9
+ export type { HttpWitnessOptions } from './HttpWitness';
10
+ export { BitcoinWitness, BitcoinWitnessError } from './BitcoinWitness';
11
+ export type { BitcoinWitnessOptions, BitcoinWitnessProof } from './BitcoinWitness';
@@ -0,0 +1,237 @@
1
+ {
2
+ "@context": {
3
+ "@version": 1.1,
4
+ "@protected": true,
5
+
6
+ "id": "@id",
7
+ "type": "@type",
8
+
9
+ "VerifiableCredential": {
10
+ "@id": "https://www.w3.org/2018/credentials#VerifiableCredential",
11
+ "@context": {
12
+ "@version": 1.1,
13
+ "@protected": true,
14
+
15
+ "id": "@id",
16
+ "type": "@type",
17
+
18
+ "cred": "https://www.w3.org/2018/credentials#",
19
+ "sec": "https://w3id.org/security#",
20
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
21
+
22
+ "credentialSchema": {
23
+ "@id": "cred:credentialSchema",
24
+ "@type": "@id",
25
+ "@context": {
26
+ "@version": 1.1,
27
+ "@protected": true,
28
+
29
+ "id": "@id",
30
+ "type": "@type",
31
+
32
+ "cred": "https://www.w3.org/2018/credentials#",
33
+
34
+ "JsonSchemaValidator2018": "cred:JsonSchemaValidator2018"
35
+ }
36
+ },
37
+ "credentialStatus": {"@id": "cred:credentialStatus", "@type": "@id"},
38
+ "credentialSubject": {"@id": "cred:credentialSubject", "@type": "@id"},
39
+ "evidence": {"@id": "cred:evidence", "@type": "@id"},
40
+ "expirationDate": {"@id": "cred:expirationDate", "@type": "xsd:dateTime"},
41
+ "holder": {"@id": "cred:holder", "@type": "@id"},
42
+ "issued": {"@id": "cred:issued", "@type": "xsd:dateTime"},
43
+ "issuer": {"@id": "cred:issuer", "@type": "@id"},
44
+ "issuanceDate": {"@id": "cred:issuanceDate", "@type": "xsd:dateTime"},
45
+ "proof": {"@id": "sec:proof", "@type": "@id", "@container": "@graph"},
46
+ "refreshService": {
47
+ "@id": "cred:refreshService",
48
+ "@type": "@id",
49
+ "@context": {
50
+ "@version": 1.1,
51
+ "@protected": true,
52
+
53
+ "id": "@id",
54
+ "type": "@type",
55
+
56
+ "cred": "https://www.w3.org/2018/credentials#",
57
+
58
+ "ManualRefreshService2018": "cred:ManualRefreshService2018"
59
+ }
60
+ },
61
+ "termsOfUse": {"@id": "cred:termsOfUse", "@type": "@id"},
62
+ "validFrom": {"@id": "cred:validFrom", "@type": "xsd:dateTime"},
63
+ "validUntil": {"@id": "cred:validUntil", "@type": "xsd:dateTime"}
64
+ }
65
+ },
66
+
67
+ "VerifiablePresentation": {
68
+ "@id": "https://www.w3.org/2018/credentials#VerifiablePresentation",
69
+ "@context": {
70
+ "@version": 1.1,
71
+ "@protected": true,
72
+
73
+ "id": "@id",
74
+ "type": "@type",
75
+
76
+ "cred": "https://www.w3.org/2018/credentials#",
77
+ "sec": "https://w3id.org/security#",
78
+
79
+ "holder": {"@id": "cred:holder", "@type": "@id"},
80
+ "proof": {"@id": "sec:proof", "@type": "@id", "@container": "@graph"},
81
+ "verifiableCredential": {"@id": "cred:verifiableCredential", "@type": "@id", "@container": "@graph"}
82
+ }
83
+ },
84
+
85
+ "EcdsaSecp256k1Signature2019": {
86
+ "@id": "https://w3id.org/security#EcdsaSecp256k1Signature2019",
87
+ "@context": {
88
+ "@version": 1.1,
89
+ "@protected": true,
90
+
91
+ "id": "@id",
92
+ "type": "@type",
93
+
94
+ "sec": "https://w3id.org/security#",
95
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
96
+
97
+ "challenge": "sec:challenge",
98
+ "created": {"@id": "http://purl.org/dc/terms/created", "@type": "xsd:dateTime"},
99
+ "domain": "sec:domain",
100
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
101
+ "jws": "sec:jws",
102
+ "nonce": "sec:nonce",
103
+ "proofPurpose": {
104
+ "@id": "sec:proofPurpose",
105
+ "@type": "@vocab",
106
+ "@context": {
107
+ "@version": 1.1,
108
+ "@protected": true,
109
+
110
+ "id": "@id",
111
+ "type": "@type",
112
+
113
+ "sec": "https://w3id.org/security#",
114
+
115
+ "assertionMethod": {"@id": "sec:assertionMethod", "@type": "@id", "@container": "@set"},
116
+ "authentication": {"@id": "sec:authenticationMethod", "@type": "@id", "@container": "@set"}
117
+ }
118
+ },
119
+ "proofValue": "sec:proofValue",
120
+ "verificationMethod": {"@id": "sec:verificationMethod", "@type": "@id"}
121
+ }
122
+ },
123
+
124
+ "EcdsaSecp256r1Signature2019": {
125
+ "@id": "https://w3id.org/security#EcdsaSecp256r1Signature2019",
126
+ "@context": {
127
+ "@version": 1.1,
128
+ "@protected": true,
129
+
130
+ "id": "@id",
131
+ "type": "@type",
132
+
133
+ "sec": "https://w3id.org/security#",
134
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
135
+
136
+ "challenge": "sec:challenge",
137
+ "created": {"@id": "http://purl.org/dc/terms/created", "@type": "xsd:dateTime"},
138
+ "domain": "sec:domain",
139
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
140
+ "jws": "sec:jws",
141
+ "nonce": "sec:nonce",
142
+ "proofPurpose": {
143
+ "@id": "sec:proofPurpose",
144
+ "@type": "@vocab",
145
+ "@context": {
146
+ "@version": 1.1,
147
+ "@protected": true,
148
+
149
+ "id": "@id",
150
+ "type": "@type",
151
+
152
+ "sec": "https://w3id.org/security#",
153
+
154
+ "assertionMethod": {"@id": "sec:assertionMethod", "@type": "@id", "@container": "@set"},
155
+ "authentication": {"@id": "sec:authenticationMethod", "@type": "@id", "@container": "@set"}
156
+ }
157
+ },
158
+ "proofValue": "sec:proofValue",
159
+ "verificationMethod": {"@id": "sec:verificationMethod", "@type": "@id"}
160
+ }
161
+ },
162
+
163
+ "Ed25519Signature2018": {
164
+ "@id": "https://w3id.org/security#Ed25519Signature2018",
165
+ "@context": {
166
+ "@version": 1.1,
167
+ "@protected": true,
168
+
169
+ "id": "@id",
170
+ "type": "@type",
171
+
172
+ "sec": "https://w3id.org/security#",
173
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
174
+
175
+ "challenge": "sec:challenge",
176
+ "created": {"@id": "http://purl.org/dc/terms/created", "@type": "xsd:dateTime"},
177
+ "domain": "sec:domain",
178
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
179
+ "jws": "sec:jws",
180
+ "nonce": "sec:nonce",
181
+ "proofPurpose": {
182
+ "@id": "sec:proofPurpose",
183
+ "@type": "@vocab",
184
+ "@context": {
185
+ "@version": 1.1,
186
+ "@protected": true,
187
+
188
+ "id": "@id",
189
+ "type": "@type",
190
+
191
+ "sec": "https://w3id.org/security#",
192
+
193
+ "assertionMethod": {"@id": "sec:assertionMethod", "@type": "@id", "@container": "@set"},
194
+ "authentication": {"@id": "sec:authenticationMethod", "@type": "@id", "@container": "@set"}
195
+ }
196
+ },
197
+ "proofValue": "sec:proofValue",
198
+ "verificationMethod": {"@id": "sec:verificationMethod", "@type": "@id"}
199
+ }
200
+ },
201
+
202
+ "RsaSignature2018": {
203
+ "@id": "https://w3id.org/security#RsaSignature2018",
204
+ "@context": {
205
+ "@version": 1.1,
206
+ "@protected": true,
207
+
208
+ "challenge": "sec:challenge",
209
+ "created": {"@id": "http://purl.org/dc/terms/created", "@type": "xsd:dateTime"},
210
+ "domain": "sec:domain",
211
+ "expires": {"@id": "sec:expiration", "@type": "xsd:dateTime"},
212
+ "jws": "sec:jws",
213
+ "nonce": "sec:nonce",
214
+ "proofPurpose": {
215
+ "@id": "sec:proofPurpose",
216
+ "@type": "@vocab",
217
+ "@context": {
218
+ "@version": 1.1,
219
+ "@protected": true,
220
+
221
+ "id": "@id",
222
+ "type": "@type",
223
+
224
+ "sec": "https://w3id.org/security#",
225
+
226
+ "assertionMethod": {"@id": "sec:assertionMethod", "@type": "@id", "@container": "@set"},
227
+ "authentication": {"@id": "sec:authenticationMethod", "@type": "@id", "@container": "@set"}
228
+ }
229
+ },
230
+ "proofValue": "sec:proofValue",
231
+ "verificationMethod": {"@id": "sec:verificationMethod", "@type": "@id"}
232
+ }
233
+ },
234
+
235
+ "proof": {"@id": "https://w3id.org/security#proof", "@type": "@id", "@container": "@graph"}
236
+ }
237
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "@context": {
3
+ "@vocab": "https://www.w3.org/ns/credentials/examples#"
4
+ }
5
+ }