signet-protocol 1.1.0 → 1.2.1
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 +1 -1
- package/dist/connections.d.ts +5 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +24 -0
- package/dist/connections.js.map +1 -1
- package/dist/constants.d.ts +5 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/package.json +1 -1
- package/src/connections.ts +24 -0
- package/src/constants.ts +5 -1
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ Layer 3: General-purpose ZK (future, if needed)
|
|
|
82
82
|
|
|
83
83
|
**v1.0.0** — spec complete, TypeScript library implemented, reference apps functional. Seeking community feedback.
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
All identity attestations use kind 31000 (NIP-VA, Verifiable Attestations), differentiated by `type` tag.
|
|
86
86
|
|
|
87
87
|
## Implementation
|
|
88
88
|
|
package/dist/connections.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ export interface ContactInfo {
|
|
|
4
4
|
email?: string;
|
|
5
5
|
address?: string;
|
|
6
6
|
childPubkeys?: string[];
|
|
7
|
+
/** Additional personas — each is a pubkey with an optional label. */
|
|
8
|
+
personas?: Array<{
|
|
9
|
+
pubkey: string;
|
|
10
|
+
label?: string;
|
|
11
|
+
}>;
|
|
7
12
|
}
|
|
8
13
|
/** SECURITY NOTE: sharedSecret is stored as a plain hex string in memory.
|
|
9
14
|
* For production use, secrets should be encrypted at rest (e.g. via OS keychain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED;;sEAEsE;AACtE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAID;;yFAEyF;AACzF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAWxF;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAOhF;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAE7D;AAsDD;0EAC0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA2BtD;AAID,yEAAyE;AACzE,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,GACnB,UAAU,CAUZ;AAID,sEAAsE;AACtE,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAsC;IAEzD,4FAA4F;IAC5F,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIjC,6CAA6C;IAC7C,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI3C,4BAA4B;IAC5B,IAAI,IAAI,UAAU,EAAE;IAIpB,0FAA0F;IAC1F,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI/B,kEAAkE;IAClE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,8DAA8D;IAC9D,MAAM,IAAI,UAAU,EAAE;IAItB,iGAAiG;IACjG,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;CAmBxC"}
|
package/dist/connections.js
CHANGED
|
@@ -43,6 +43,7 @@ export function serializeQRPayload(payload) {
|
|
|
43
43
|
}
|
|
44
44
|
const MAX_CONTACT_FIELD_LENGTH = 256;
|
|
45
45
|
const MAX_CHILD_PUBKEYS = 20;
|
|
46
|
+
const MAX_PERSONAS = 20;
|
|
46
47
|
/** Validate ContactInfo field sizes to prevent oversized payloads from untrusted sources. */
|
|
47
48
|
function validateContactInfo(info) {
|
|
48
49
|
if (typeof info !== 'object' || info === null) {
|
|
@@ -70,6 +71,29 @@ function validateContactInfo(info) {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
74
|
+
if (ci.personas !== undefined) {
|
|
75
|
+
if (!Array.isArray(ci.personas))
|
|
76
|
+
throw new SignetValidationError('Invalid ContactInfo: personas must be an array');
|
|
77
|
+
if (ci.personas.length > MAX_PERSONAS) {
|
|
78
|
+
throw new SignetValidationError(`Invalid ContactInfo: personas exceeds ${MAX_PERSONAS} entries`);
|
|
79
|
+
}
|
|
80
|
+
for (const entry of ci.personas) {
|
|
81
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
82
|
+
throw new SignetValidationError('Invalid ContactInfo: each persona must be an object');
|
|
83
|
+
}
|
|
84
|
+
const e = entry;
|
|
85
|
+
if (typeof e.pubkey !== 'string' || !/^[0-9a-f]{64}$/i.test(e.pubkey)) {
|
|
86
|
+
throw new SignetValidationError('Invalid ContactInfo: persona pubkey must be a valid 64-char hex pubkey');
|
|
87
|
+
}
|
|
88
|
+
if (e.label !== undefined) {
|
|
89
|
+
if (typeof e.label !== 'string')
|
|
90
|
+
throw new SignetValidationError('Invalid ContactInfo: persona label must be a string');
|
|
91
|
+
if (e.label.length > MAX_CONTACT_FIELD_LENGTH) {
|
|
92
|
+
throw new SignetValidationError(`Invalid ContactInfo: persona label exceeds ${MAX_CONTACT_FIELD_LENGTH} characters`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
73
97
|
}
|
|
74
98
|
/** Parse and validate a QR payload from a JSON string.
|
|
75
99
|
* Throws if the data is not valid JSON or is missing required fields. */
|
package/dist/connections.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,+DAA+D;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { ATTESTATION_KIND } from 'nostr-attestations';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Generic Verifiable Attestation kind (NIP-VA, kind 31000).
|
|
4
|
+
* Used for all Signet identity attestations (credentials, vouches, verifier registration,
|
|
5
|
+
* challenges, revocations, identity bridges, delegation).
|
|
6
|
+
*/
|
|
3
7
|
export { ATTESTATION_KIND };
|
|
4
8
|
/** NIP-78 App-specific Data kind (existing Nostr kind) */
|
|
5
9
|
export declare const APP_DATA_KIND = 30078;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,0DAA0D;AAC1D,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,mCAAmC;AACnC,eAAO,MAAM,iBAAiB;;;;;;;;CAQpB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,oDAAoD;AACpD,eAAO,MAAM,iCAAiC,QAAyB,CAAC;AAExE,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,sEAAsE;AACtE,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,iEAAiE;AACjE,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,2BAA2B;AAC3B,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yBAAyB;AACzB,eAAO,MAAM,YAAY,+LAUf,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzD,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUhD,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AAEnD,8DAA8D;AAC9D,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAE3D,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,8CAA+C,CAAC;AAErF;sFACsF;AACtF,eAAO,MAAM,wBAAwB,EAAG,WAAoB,CAAC;AAE7D,uCAAuC;AACvC,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AACpD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,+CAA+C;AAC/C,eAAO,MAAM,aAAa,4PAMhB,CAAC;AAEX,0CAA0C;AAC1C,eAAO,MAAM,eAAe,6GAMlB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// Signet Protocol Constants
|
|
2
2
|
import { ATTESTATION_KIND } from 'nostr-attestations';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Generic Verifiable Attestation kind (NIP-VA, kind 31000).
|
|
5
|
+
* Used for all Signet identity attestations (credentials, vouches, verifier registration,
|
|
6
|
+
* challenges, revocations, identity bridges, delegation).
|
|
7
|
+
*/
|
|
4
8
|
export { ATTESTATION_KIND };
|
|
5
9
|
/** NIP-78 App-specific Data kind (existing Nostr kind) */
|
|
6
10
|
export const APP_DATA_KIND = 30078;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/connections.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface ContactInfo {
|
|
|
14
14
|
email?: string;
|
|
15
15
|
address?: string;
|
|
16
16
|
childPubkeys?: string[];
|
|
17
|
+
/** Additional personas — each is a pubkey with an optional label. */
|
|
18
|
+
personas?: Array<{ pubkey: string; label?: string }>;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
/** SECURITY NOTE: sharedSecret is stored as a plain hex string in memory.
|
|
@@ -79,6 +81,7 @@ export function serializeQRPayload(payload: QRPayload): string {
|
|
|
79
81
|
|
|
80
82
|
const MAX_CONTACT_FIELD_LENGTH = 256;
|
|
81
83
|
const MAX_CHILD_PUBKEYS = 20;
|
|
84
|
+
const MAX_PERSONAS = 20;
|
|
82
85
|
|
|
83
86
|
/** Validate ContactInfo field sizes to prevent oversized payloads from untrusted sources. */
|
|
84
87
|
function validateContactInfo(info: unknown): void {
|
|
@@ -105,6 +108,27 @@ function validateContactInfo(info: unknown): void {
|
|
|
105
108
|
}
|
|
106
109
|
}
|
|
107
110
|
}
|
|
111
|
+
if (ci.personas !== undefined) {
|
|
112
|
+
if (!Array.isArray(ci.personas)) throw new SignetValidationError('Invalid ContactInfo: personas must be an array');
|
|
113
|
+
if (ci.personas.length > MAX_PERSONAS) {
|
|
114
|
+
throw new SignetValidationError(`Invalid ContactInfo: personas exceeds ${MAX_PERSONAS} entries`);
|
|
115
|
+
}
|
|
116
|
+
for (const entry of ci.personas) {
|
|
117
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
118
|
+
throw new SignetValidationError('Invalid ContactInfo: each persona must be an object');
|
|
119
|
+
}
|
|
120
|
+
const e = entry as Record<string, unknown>;
|
|
121
|
+
if (typeof e.pubkey !== 'string' || !/^[0-9a-f]{64}$/i.test(e.pubkey)) {
|
|
122
|
+
throw new SignetValidationError('Invalid ContactInfo: persona pubkey must be a valid 64-char hex pubkey');
|
|
123
|
+
}
|
|
124
|
+
if (e.label !== undefined) {
|
|
125
|
+
if (typeof e.label !== 'string') throw new SignetValidationError('Invalid ContactInfo: persona label must be a string');
|
|
126
|
+
if (e.label.length > MAX_CONTACT_FIELD_LENGTH) {
|
|
127
|
+
throw new SignetValidationError(`Invalid ContactInfo: persona label exceeds ${MAX_CONTACT_FIELD_LENGTH} characters`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
108
132
|
}
|
|
109
133
|
|
|
110
134
|
/** Parse and validate a QR payload from a JSON string.
|
package/src/constants.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// Signet Protocol Constants
|
|
2
2
|
import { ATTESTATION_KIND } from 'nostr-attestations';
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Generic Verifiable Attestation kind (NIP-VA, kind 31000).
|
|
6
|
+
* Used for all Signet identity attestations (credentials, vouches, verifier registration,
|
|
7
|
+
* challenges, revocations, identity bridges, delegation).
|
|
8
|
+
*/
|
|
5
9
|
export { ATTESTATION_KIND };
|
|
6
10
|
|
|
7
11
|
/** NIP-78 App-specific Data kind (existing Nostr kind) */
|