nostr-attestations 2.3.0 → 2.4.0
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/README.md +8 -2
- package/dist/builders.d.ts.map +1 -1
- package/dist/builders.js +17 -0
- package/dist/builders.js.map +1 -1
- package/dist/filters.d.ts +1 -1
- package/dist/filters.js +1 -1
- package/dist/helpers.d.ts +2 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +4 -0
- package/dist/helpers.js.map +1 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +10 -1
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
- package/vectors/attestations.json +72 -72
package/README.md
CHANGED
|
@@ -155,6 +155,12 @@ const attestation = parseAttestation(event)
|
|
|
155
155
|
|----------|-----------|---------|
|
|
156
156
|
| `validateAttestation` | `(event: NostrEvent) => ValidationResult` | `{ valid: boolean, errors: string[] }` |
|
|
157
157
|
|
|
158
|
+
### Validity
|
|
159
|
+
|
|
160
|
+
| Function | Signature | Returns |
|
|
161
|
+
|----------|-----------|---------|
|
|
162
|
+
| `isValid` | `(event: NostrEvent, now?: number) => ValidityResult` | `{ valid: boolean, reason?: string }` |
|
|
163
|
+
|
|
158
164
|
### Filters
|
|
159
165
|
|
|
160
166
|
| Function | Signature | Returns |
|
|
@@ -174,11 +180,11 @@ const attestation = parseAttestation(event)
|
|
|
174
180
|
|
|
175
181
|
### Types
|
|
176
182
|
|
|
177
|
-
`AssertionRef`, `AttestationParams`, `RevocationParams`, `Attestation`, `ValidationResult`, `FilterParams`, `NostrFilter`, `NostrEvent`, `EventTemplate` — all exported from the package root and from `nostr-attestations/types` (zero-runtime import).
|
|
183
|
+
`AssertionRef`, `AttestationParams`, `RevocationParams`, `Attestation`, `ValidationResult`, `ValidityResult`, `FilterParams`, `NostrFilter`, `NostrEvent`, `EventTemplate` — all exported from the package root and from `nostr-attestations/types` (zero-runtime import).
|
|
178
184
|
|
|
179
185
|
## Test Vectors
|
|
180
186
|
|
|
181
|
-
`vectors/attestations.json` contains
|
|
187
|
+
`vectors/attestations.json` contains 20 frozen conformance test vectors covering the full range of attestation types (credential, endorsement, vouch, verifier, provenance) and states (active, revoked, self-attestation). Any conformant implementation must produce identical parse results from these inputs. The vectors are pinned — if tests against them fail, the implementation is broken, not the vector.
|
|
182
188
|
|
|
183
189
|
## Attested on Nostr
|
|
184
190
|
|
package/dist/builders.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEpF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAkI1E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAkDxE"}
|
package/dist/builders.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ATTESTATION_KIND } from './constants.js';
|
|
2
2
|
import { buildDTag, buildAssertionDTag } from './filters.js';
|
|
3
|
+
import { isHex64 } from './helpers.js';
|
|
3
4
|
/**
|
|
4
5
|
* Create an unsigned attestation event template.
|
|
5
6
|
* The caller is responsible for signing (adding pubkey, id, sig, created_at).
|
|
@@ -18,12 +19,17 @@ export function createAttestation(params) {
|
|
|
18
19
|
if (params.type === 'assertion')
|
|
19
20
|
throw new Error('type value "assertion" is reserved');
|
|
20
21
|
}
|
|
22
|
+
if (params.subject != null && !isHex64(params.subject)) {
|
|
23
|
+
throw new Error('subject must be a 64-character lowercase hex pubkey');
|
|
24
|
+
}
|
|
21
25
|
if (hasAssertion) {
|
|
22
26
|
const a = params.assertion;
|
|
23
27
|
if (a.id && a.address)
|
|
24
28
|
throw new Error('assertion must have id or address, not both');
|
|
25
29
|
if (!a.id && !a.address)
|
|
26
30
|
throw new Error('assertion must have id or address');
|
|
31
|
+
if (a.id && !isHex64(a.id))
|
|
32
|
+
throw new Error('assertion id must be a 64-character lowercase hex event ID');
|
|
27
33
|
}
|
|
28
34
|
if (params.validTo != null) {
|
|
29
35
|
if (!Number.isFinite(params.validTo))
|
|
@@ -112,7 +118,12 @@ export function createAttestation(params) {
|
|
|
112
118
|
tags.push(['l', params.type, 'nip-va']);
|
|
113
119
|
}
|
|
114
120
|
if (params.tags) {
|
|
121
|
+
// Reserved tag names that the library manages — reject user overrides
|
|
122
|
+
const reserved = new Set(['d', 'type', 'status', 'L', 'l']);
|
|
115
123
|
for (const tag of params.tags) {
|
|
124
|
+
if (reserved.has(tag[0])) {
|
|
125
|
+
throw new Error(`custom tags must not override reserved tag "${tag[0]}"`);
|
|
126
|
+
}
|
|
116
127
|
tags.push(tag);
|
|
117
128
|
}
|
|
118
129
|
}
|
|
@@ -138,6 +149,12 @@ export function createRevocation(params) {
|
|
|
138
149
|
if (params.assertionId && params.assertionAddress) {
|
|
139
150
|
throw new Error('provide assertionId or assertionAddress, not both');
|
|
140
151
|
}
|
|
152
|
+
if (hasTyped && params.type === 'assertion') {
|
|
153
|
+
throw new Error('type value "assertion" is reserved');
|
|
154
|
+
}
|
|
155
|
+
if (params.subject != null && !isHex64(params.subject)) {
|
|
156
|
+
throw new Error('subject must be a 64-character lowercase hex pubkey');
|
|
157
|
+
}
|
|
141
158
|
const tags = [];
|
|
142
159
|
if (hasTyped) {
|
|
143
160
|
tags.push(['d', buildDTag(params.type, params.identifier)]);
|
package/dist/builders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAGtC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;IAC7B,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAA;IAEvC,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,IAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC/E,IAAI,MAAM,CAAC,IAAK,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACzF,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,SAAU,CAAA;QAC3B,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QACrF,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC7E,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACxF,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,IAAI,GAAe,EAAE,CAAA;IAE3B,uDAAuD;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAU,CAAC,EAAE,IAAI,MAAM,CAAC,SAAU,CAAC,OAAQ,CAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAA;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,IAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAK,CAAC,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAK,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,2BAA2B;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,SAAU,CAAA;QAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YACxB,IAAI,CAAC,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;;gBAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;YAC7B,IAAI,CAAC,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;;gBAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAC9F,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC5F,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAC9F,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC3D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC3E,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;KAC9B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;IAC3D,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAA;IAEtE,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,IAAI,GAAe,EAAE,CAAA;IAE3B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,IAAK,EAAE,MAAM,CAAC,UAAW,CAAC,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAK,CAAC,CAAC,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,CAAE,CAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;IAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC5F,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,IAAI;QACJ,OAAO,EAAE,EAAE;KACZ,CAAA;AACH,CAAC"}
|
package/dist/filters.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare function buildAssertionDTag(ref: string): string;
|
|
|
12
12
|
/**
|
|
13
13
|
* Parse a d-tag into type and identifier.
|
|
14
14
|
* Returns null if the d-tag does not contain a colon.
|
|
15
|
-
* For assertion-only attestations (prefix `assertion:`),
|
|
15
|
+
* For assertion-only attestations (prefix `assertion:`), type is the string "assertion".
|
|
16
16
|
*/
|
|
17
17
|
export declare function parseDTag(dTag: string): {
|
|
18
18
|
type: string;
|
package/dist/filters.js
CHANGED
|
@@ -24,7 +24,7 @@ export function buildAssertionDTag(ref) {
|
|
|
24
24
|
/**
|
|
25
25
|
* Parse a d-tag into type and identifier.
|
|
26
26
|
* Returns null if the d-tag does not contain a colon.
|
|
27
|
-
* For assertion-only attestations (prefix `assertion:`),
|
|
27
|
+
* For assertion-only attestations (prefix `assertion:`), type is the string "assertion".
|
|
28
28
|
*/
|
|
29
29
|
export function parseDTag(dTag) {
|
|
30
30
|
const idx = dTag.indexOf(':');
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/** Find the first tag with the given name. Internal helper — not part of the public API. */
|
|
2
2
|
export declare function findTag(tags: string[][], name: string): string | null;
|
|
3
|
+
/** Validate that a string is a 64-character lowercase hex string (32-byte key or event ID). */
|
|
4
|
+
export declare function isHex64(value: string): boolean;
|
|
3
5
|
//# sourceMappingURL=helpers.d.ts.map
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C"}
|
package/dist/helpers.js
CHANGED
|
@@ -3,4 +3,8 @@ export function findTag(tags, name) {
|
|
|
3
3
|
const tag = tags.find(t => t[0] === name);
|
|
4
4
|
return tag?.[1] ?? null;
|
|
5
5
|
}
|
|
6
|
+
/** Validate that a string is a 64-character lowercase hex string (32-byte key or event ID). */
|
|
7
|
+
export function isHex64(value) {
|
|
8
|
+
return value.length === 64 && /^[0-9a-f]{64}$/.test(value);
|
|
9
|
+
}
|
|
6
10
|
//# sourceMappingURL=helpers.js.map
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,UAAU,OAAO,CAAC,IAAgB,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;IACzC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,UAAU,OAAO,CAAC,IAAgB,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;IACzC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AACzB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC"}
|
package/dist/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAwB9D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAwB9D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAwGvE"}
|
package/dist/validators.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ATTESTATION_KIND } from './constants.js';
|
|
2
|
-
import { findTag } from './helpers.js';
|
|
2
|
+
import { findTag, isHex64 } from './helpers.js';
|
|
3
3
|
/**
|
|
4
4
|
* Check whether an event has an e or a tag with the "assertion" marker.
|
|
5
5
|
*/
|
|
@@ -103,6 +103,15 @@ export function validateAttestation(event) {
|
|
|
103
103
|
errors.push('occurred_at must be a valid timestamp');
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
// p-tag hex validation
|
|
107
|
+
const subject = findTag(event.tags, 'p');
|
|
108
|
+
if (subject != null && !isHex64(subject)) {
|
|
109
|
+
errors.push('p tag must be a 64-character lowercase hex pubkey');
|
|
110
|
+
}
|
|
111
|
+
// pubkey hex validation
|
|
112
|
+
if (!isHex64(event.pubkey)) {
|
|
113
|
+
errors.push('pubkey must be a 64-character lowercase hex string');
|
|
114
|
+
}
|
|
106
115
|
// schema validation
|
|
107
116
|
const schema = findTag(event.tags, 'schema');
|
|
108
117
|
if (schema != null && !schema.trim()) {
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"tags": [
|
|
10
10
|
[
|
|
11
11
|
"d",
|
|
12
|
-
"credential:
|
|
12
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
13
13
|
],
|
|
14
14
|
[
|
|
15
15
|
"type",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
[
|
|
19
19
|
"p",
|
|
20
|
-
"
|
|
20
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
21
21
|
],
|
|
22
22
|
[
|
|
23
23
|
"expiration",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"type": "credential",
|
|
46
46
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
47
47
|
"createdAt": 1700000000,
|
|
48
|
-
"identifier": "
|
|
49
|
-
"subject": "
|
|
48
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
49
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
50
50
|
"summary": "Professional credential verified",
|
|
51
51
|
"expiration": 1735689600,
|
|
52
52
|
"revoked": false,
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"tags": [
|
|
55
55
|
[
|
|
56
56
|
"d",
|
|
57
|
-
"credential:
|
|
57
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
58
58
|
],
|
|
59
59
|
[
|
|
60
60
|
"type",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
],
|
|
63
63
|
[
|
|
64
64
|
"p",
|
|
65
|
-
"
|
|
65
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
66
66
|
],
|
|
67
67
|
[
|
|
68
68
|
"expiration",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"tags": [
|
|
166
166
|
[
|
|
167
167
|
"d",
|
|
168
|
-
"endorsement:
|
|
168
|
+
"endorsement:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
169
169
|
],
|
|
170
170
|
[
|
|
171
171
|
"type",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
],
|
|
174
174
|
[
|
|
175
175
|
"p",
|
|
176
|
-
"
|
|
176
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
177
177
|
],
|
|
178
178
|
[
|
|
179
179
|
"summary",
|
|
@@ -197,8 +197,8 @@
|
|
|
197
197
|
"type": "endorsement",
|
|
198
198
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
199
199
|
"createdAt": 1700000000,
|
|
200
|
-
"identifier": "
|
|
201
|
-
"subject": "
|
|
200
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
201
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
202
202
|
"summary": "Reliable provider",
|
|
203
203
|
"expiration": null,
|
|
204
204
|
"revoked": false,
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"tags": [
|
|
207
207
|
[
|
|
208
208
|
"d",
|
|
209
|
-
"endorsement:
|
|
209
|
+
"endorsement:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
210
210
|
],
|
|
211
211
|
[
|
|
212
212
|
"type",
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
],
|
|
215
215
|
[
|
|
216
216
|
"p",
|
|
217
|
-
"
|
|
217
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
218
218
|
],
|
|
219
219
|
[
|
|
220
220
|
"summary",
|
|
@@ -337,7 +337,7 @@
|
|
|
337
337
|
"tags": [
|
|
338
338
|
[
|
|
339
339
|
"d",
|
|
340
|
-
"credential:
|
|
340
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
341
341
|
],
|
|
342
342
|
[
|
|
343
343
|
"type",
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
],
|
|
346
346
|
[
|
|
347
347
|
"p",
|
|
348
|
-
"
|
|
348
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
349
349
|
],
|
|
350
350
|
[
|
|
351
351
|
"status",
|
|
@@ -369,8 +369,8 @@
|
|
|
369
369
|
"type": "credential",
|
|
370
370
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
371
371
|
"createdAt": 1700000000,
|
|
372
|
-
"identifier": "
|
|
373
|
-
"subject": "
|
|
372
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
373
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
374
374
|
"summary": "Credential revoked",
|
|
375
375
|
"expiration": null,
|
|
376
376
|
"revoked": true,
|
|
@@ -378,7 +378,7 @@
|
|
|
378
378
|
"tags": [
|
|
379
379
|
[
|
|
380
380
|
"d",
|
|
381
|
-
"credential:
|
|
381
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
382
382
|
],
|
|
383
383
|
[
|
|
384
384
|
"type",
|
|
@@ -386,7 +386,7 @@
|
|
|
386
386
|
],
|
|
387
387
|
[
|
|
388
388
|
"p",
|
|
389
|
-
"
|
|
389
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
390
390
|
],
|
|
391
391
|
[
|
|
392
392
|
"status",
|
|
@@ -423,7 +423,7 @@
|
|
|
423
423
|
"tags": [
|
|
424
424
|
[
|
|
425
425
|
"d",
|
|
426
|
-
"credential:
|
|
426
|
+
"credential:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
427
427
|
],
|
|
428
428
|
[
|
|
429
429
|
"type",
|
|
@@ -431,7 +431,7 @@
|
|
|
431
431
|
],
|
|
432
432
|
[
|
|
433
433
|
"p",
|
|
434
|
-
"
|
|
434
|
+
"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
435
435
|
],
|
|
436
436
|
[
|
|
437
437
|
"status",
|
|
@@ -455,8 +455,8 @@
|
|
|
455
455
|
"type": "credential",
|
|
456
456
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
457
457
|
"createdAt": 1700000000,
|
|
458
|
-
"identifier": "
|
|
459
|
-
"subject": "
|
|
458
|
+
"identifier": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
459
|
+
"subject": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
460
460
|
"summary": null,
|
|
461
461
|
"expiration": null,
|
|
462
462
|
"revoked": true,
|
|
@@ -464,7 +464,7 @@
|
|
|
464
464
|
"tags": [
|
|
465
465
|
[
|
|
466
466
|
"d",
|
|
467
|
-
"credential:
|
|
467
|
+
"credential:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
468
468
|
],
|
|
469
469
|
[
|
|
470
470
|
"type",
|
|
@@ -472,7 +472,7 @@
|
|
|
472
472
|
],
|
|
473
473
|
[
|
|
474
474
|
"p",
|
|
475
|
-
"
|
|
475
|
+
"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
476
476
|
],
|
|
477
477
|
[
|
|
478
478
|
"status",
|
|
@@ -509,7 +509,7 @@
|
|
|
509
509
|
"tags": [
|
|
510
510
|
[
|
|
511
511
|
"d",
|
|
512
|
-
"vouch:
|
|
512
|
+
"vouch:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
513
513
|
],
|
|
514
514
|
[
|
|
515
515
|
"type",
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
],
|
|
518
518
|
[
|
|
519
519
|
"p",
|
|
520
|
-
"
|
|
520
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
521
521
|
],
|
|
522
522
|
[
|
|
523
523
|
"expiration",
|
|
@@ -533,8 +533,8 @@
|
|
|
533
533
|
"type": "vouch",
|
|
534
534
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
535
535
|
"createdAt": 1700000000,
|
|
536
|
-
"identifier": "
|
|
537
|
-
"subject": "
|
|
536
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
537
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
538
538
|
"summary": null,
|
|
539
539
|
"expiration": 1735689600,
|
|
540
540
|
"revoked": false,
|
|
@@ -542,7 +542,7 @@
|
|
|
542
542
|
"tags": [
|
|
543
543
|
[
|
|
544
544
|
"d",
|
|
545
|
-
"vouch:
|
|
545
|
+
"vouch:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
546
546
|
],
|
|
547
547
|
[
|
|
548
548
|
"type",
|
|
@@ -550,7 +550,7 @@
|
|
|
550
550
|
],
|
|
551
551
|
[
|
|
552
552
|
"p",
|
|
553
|
-
"
|
|
553
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
554
554
|
],
|
|
555
555
|
[
|
|
556
556
|
"expiration",
|
|
@@ -579,7 +579,7 @@
|
|
|
579
579
|
"tags": [
|
|
580
580
|
[
|
|
581
581
|
"d",
|
|
582
|
-
"credential:
|
|
582
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
583
583
|
],
|
|
584
584
|
[
|
|
585
585
|
"type",
|
|
@@ -587,7 +587,7 @@
|
|
|
587
587
|
],
|
|
588
588
|
[
|
|
589
589
|
"p",
|
|
590
|
-
"
|
|
590
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
591
591
|
],
|
|
592
592
|
[
|
|
593
593
|
"L",
|
|
@@ -608,8 +608,8 @@
|
|
|
608
608
|
"type": "credential",
|
|
609
609
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
610
610
|
"createdAt": 1700000000,
|
|
611
|
-
"identifier": "
|
|
612
|
-
"subject": "
|
|
611
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
612
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
613
613
|
"summary": null,
|
|
614
614
|
"expiration": null,
|
|
615
615
|
"revoked": false,
|
|
@@ -617,7 +617,7 @@
|
|
|
617
617
|
"tags": [
|
|
618
618
|
[
|
|
619
619
|
"d",
|
|
620
|
-
"credential:
|
|
620
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
621
621
|
],
|
|
622
622
|
[
|
|
623
623
|
"type",
|
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
],
|
|
626
626
|
[
|
|
627
627
|
"p",
|
|
628
|
-
"
|
|
628
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
629
629
|
],
|
|
630
630
|
[
|
|
631
631
|
"L",
|
|
@@ -713,7 +713,7 @@
|
|
|
713
713
|
"tags": [
|
|
714
714
|
[
|
|
715
715
|
"d",
|
|
716
|
-
"credential:
|
|
716
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
717
717
|
],
|
|
718
718
|
[
|
|
719
719
|
"type",
|
|
@@ -721,7 +721,7 @@
|
|
|
721
721
|
],
|
|
722
722
|
[
|
|
723
723
|
"p",
|
|
724
|
-
"
|
|
724
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
725
725
|
]
|
|
726
726
|
],
|
|
727
727
|
"content": "{\"signatures\":[{\"type\":\"schnorr\",\"value\":\"deadbeef\"}],\"merkle_root\":\"cafebabe\"}",
|
|
@@ -733,8 +733,8 @@
|
|
|
733
733
|
"type": "credential",
|
|
734
734
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
735
735
|
"createdAt": 1700000000,
|
|
736
|
-
"identifier": "
|
|
737
|
-
"subject": "
|
|
736
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
737
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
738
738
|
"summary": null,
|
|
739
739
|
"expiration": null,
|
|
740
740
|
"revoked": false,
|
|
@@ -742,7 +742,7 @@
|
|
|
742
742
|
"tags": [
|
|
743
743
|
[
|
|
744
744
|
"d",
|
|
745
|
-
"credential:
|
|
745
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
746
746
|
],
|
|
747
747
|
[
|
|
748
748
|
"type",
|
|
@@ -750,7 +750,7 @@
|
|
|
750
750
|
],
|
|
751
751
|
[
|
|
752
752
|
"p",
|
|
753
|
-
"
|
|
753
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
754
754
|
]
|
|
755
755
|
],
|
|
756
756
|
"content": "{\"signatures\":[{\"type\":\"schnorr\",\"value\":\"deadbeef\"}],\"merkle_root\":\"cafebabe\"}",
|
|
@@ -785,7 +785,7 @@
|
|
|
785
785
|
],
|
|
786
786
|
[
|
|
787
787
|
"p",
|
|
788
|
-
"
|
|
788
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
789
789
|
]
|
|
790
790
|
],
|
|
791
791
|
"content": "I attest to this claim",
|
|
@@ -798,7 +798,7 @@
|
|
|
798
798
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
799
799
|
"createdAt": 1700000000,
|
|
800
800
|
"identifier": "evt999",
|
|
801
|
-
"subject": "
|
|
801
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
802
802
|
"assertionId": "evt999",
|
|
803
803
|
"assertionAddress": null,
|
|
804
804
|
"assertionRelay": "wss://relay.example.com",
|
|
@@ -823,7 +823,7 @@
|
|
|
823
823
|
],
|
|
824
824
|
[
|
|
825
825
|
"p",
|
|
826
|
-
"
|
|
826
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
827
827
|
]
|
|
828
828
|
],
|
|
829
829
|
"content": "I attest to this claim",
|
|
@@ -907,7 +907,7 @@
|
|
|
907
907
|
],
|
|
908
908
|
[
|
|
909
909
|
"p",
|
|
910
|
-
"
|
|
910
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
911
911
|
],
|
|
912
912
|
[
|
|
913
913
|
"e",
|
|
@@ -926,7 +926,7 @@
|
|
|
926
926
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
927
927
|
"createdAt": 1700000000,
|
|
928
928
|
"identifier": "evt999",
|
|
929
|
-
"subject": "
|
|
929
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
930
930
|
"assertionId": "evt999",
|
|
931
931
|
"assertionAddress": null,
|
|
932
932
|
"assertionRelay": "wss://relay.example.com",
|
|
@@ -949,7 +949,7 @@
|
|
|
949
949
|
],
|
|
950
950
|
[
|
|
951
951
|
"p",
|
|
952
|
-
"
|
|
952
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
953
953
|
],
|
|
954
954
|
[
|
|
955
955
|
"e",
|
|
@@ -973,7 +973,7 @@
|
|
|
973
973
|
"tags": [
|
|
974
974
|
[
|
|
975
975
|
"d",
|
|
976
|
-
"credential:
|
|
976
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
977
977
|
],
|
|
978
978
|
[
|
|
979
979
|
"type",
|
|
@@ -981,7 +981,7 @@
|
|
|
981
981
|
],
|
|
982
982
|
[
|
|
983
983
|
"p",
|
|
984
|
-
"
|
|
984
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
985
985
|
],
|
|
986
986
|
[
|
|
987
987
|
"valid_from",
|
|
@@ -1001,8 +1001,8 @@
|
|
|
1001
1001
|
"type": "credential",
|
|
1002
1002
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
1003
1003
|
"createdAt": 1700000000,
|
|
1004
|
-
"identifier": "
|
|
1005
|
-
"subject": "
|
|
1004
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1005
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1006
1006
|
"assertionId": null,
|
|
1007
1007
|
"assertionAddress": null,
|
|
1008
1008
|
"assertionRelay": null,
|
|
@@ -1017,7 +1017,7 @@
|
|
|
1017
1017
|
"tags": [
|
|
1018
1018
|
[
|
|
1019
1019
|
"d",
|
|
1020
|
-
"credential:
|
|
1020
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1021
1021
|
],
|
|
1022
1022
|
[
|
|
1023
1023
|
"type",
|
|
@@ -1025,7 +1025,7 @@
|
|
|
1025
1025
|
],
|
|
1026
1026
|
[
|
|
1027
1027
|
"p",
|
|
1028
|
-
"
|
|
1028
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1029
1029
|
],
|
|
1030
1030
|
[
|
|
1031
1031
|
"valid_from",
|
|
@@ -1051,7 +1051,7 @@
|
|
|
1051
1051
|
"tags": [
|
|
1052
1052
|
[
|
|
1053
1053
|
"d",
|
|
1054
|
-
"credential:
|
|
1054
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1055
1055
|
],
|
|
1056
1056
|
[
|
|
1057
1057
|
"type",
|
|
@@ -1059,7 +1059,7 @@
|
|
|
1059
1059
|
],
|
|
1060
1060
|
[
|
|
1061
1061
|
"p",
|
|
1062
|
-
"
|
|
1062
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1063
1063
|
],
|
|
1064
1064
|
[
|
|
1065
1065
|
"schema",
|
|
@@ -1075,8 +1075,8 @@
|
|
|
1075
1075
|
"type": "credential",
|
|
1076
1076
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
1077
1077
|
"createdAt": 1700000000,
|
|
1078
|
-
"identifier": "
|
|
1079
|
-
"subject": "
|
|
1078
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1079
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1080
1080
|
"assertionId": null,
|
|
1081
1081
|
"assertionAddress": null,
|
|
1082
1082
|
"assertionRelay": null,
|
|
@@ -1091,7 +1091,7 @@
|
|
|
1091
1091
|
"tags": [
|
|
1092
1092
|
[
|
|
1093
1093
|
"d",
|
|
1094
|
-
"credential:
|
|
1094
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1095
1095
|
],
|
|
1096
1096
|
[
|
|
1097
1097
|
"type",
|
|
@@ -1099,7 +1099,7 @@
|
|
|
1099
1099
|
],
|
|
1100
1100
|
[
|
|
1101
1101
|
"p",
|
|
1102
|
-
"
|
|
1102
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1103
1103
|
],
|
|
1104
1104
|
[
|
|
1105
1105
|
"schema",
|
|
@@ -1121,7 +1121,7 @@
|
|
|
1121
1121
|
"tags": [
|
|
1122
1122
|
[
|
|
1123
1123
|
"d",
|
|
1124
|
-
"credential:
|
|
1124
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1125
1125
|
],
|
|
1126
1126
|
[
|
|
1127
1127
|
"type",
|
|
@@ -1129,7 +1129,7 @@
|
|
|
1129
1129
|
],
|
|
1130
1130
|
[
|
|
1131
1131
|
"p",
|
|
1132
|
-
"
|
|
1132
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1133
1133
|
],
|
|
1134
1134
|
[
|
|
1135
1135
|
"request",
|
|
@@ -1145,8 +1145,8 @@
|
|
|
1145
1145
|
"type": "credential",
|
|
1146
1146
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
1147
1147
|
"createdAt": 1700000000,
|
|
1148
|
-
"identifier": "
|
|
1149
|
-
"subject": "
|
|
1148
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1149
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1150
1150
|
"assertionId": null,
|
|
1151
1151
|
"assertionAddress": null,
|
|
1152
1152
|
"assertionRelay": null,
|
|
@@ -1161,7 +1161,7 @@
|
|
|
1161
1161
|
"tags": [
|
|
1162
1162
|
[
|
|
1163
1163
|
"d",
|
|
1164
|
-
"credential:
|
|
1164
|
+
"credential:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1165
1165
|
],
|
|
1166
1166
|
[
|
|
1167
1167
|
"type",
|
|
@@ -1169,7 +1169,7 @@
|
|
|
1169
1169
|
],
|
|
1170
1170
|
[
|
|
1171
1171
|
"p",
|
|
1172
|
-
"
|
|
1172
|
+
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
1173
1173
|
],
|
|
1174
1174
|
[
|
|
1175
1175
|
"request",
|
|
@@ -1323,9 +1323,9 @@
|
|
|
1323
1323
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
1324
1324
|
"created_at": 1711000000,
|
|
1325
1325
|
"tags": [
|
|
1326
|
-
["d", "endorsement:
|
|
1326
|
+
["d", "endorsement:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"],
|
|
1327
1327
|
["type", "endorsement"],
|
|
1328
|
-
["p", "
|
|
1328
|
+
["p", "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"],
|
|
1329
1329
|
["occurred_at", "1710900000"],
|
|
1330
1330
|
["summary", "Completed frontend work ahead of schedule"]
|
|
1331
1331
|
],
|
|
@@ -1338,8 +1338,8 @@
|
|
|
1338
1338
|
"type": "endorsement",
|
|
1339
1339
|
"pubkey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
1340
1340
|
"createdAt": 1711000000,
|
|
1341
|
-
"identifier": "
|
|
1342
|
-
"subject": "
|
|
1341
|
+
"identifier": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1342
|
+
"subject": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
1343
1343
|
"assertionId": null,
|
|
1344
1344
|
"assertionAddress": null,
|
|
1345
1345
|
"assertionRelay": null,
|
|
@@ -1353,9 +1353,9 @@
|
|
|
1353
1353
|
"revoked": false,
|
|
1354
1354
|
"reason": null,
|
|
1355
1355
|
"tags": [
|
|
1356
|
-
["d", "endorsement:
|
|
1356
|
+
["d", "endorsement:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"],
|
|
1357
1357
|
["type", "endorsement"],
|
|
1358
|
-
["p", "
|
|
1358
|
+
["p", "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"],
|
|
1359
1359
|
["occurred_at", "1710900000"],
|
|
1360
1360
|
["summary", "Completed frontend work ahead of schedule"]
|
|
1361
1361
|
],
|