@agentunion/fastaun-browser 0.5.18 → 0.5.20

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 (149) hide show
  1. package/CHANGELOG.md +172 -79
  2. package/_packed_docs/CHANGELOG.md +172 -79
  3. package/_packed_docs/INDEX.md +244 -116
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +98 -69
  5. package/_packed_docs/agent.md/SCHEMA.md +245 -205
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +11 -11
  7. package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +42 -15
  8. package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -4
  9. package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +45 -134
  10. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
  11. package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +5 -20
  12. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +687 -668
  13. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +19 -28
  14. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
  15. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
  16. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
  17. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
  18. package/_packed_docs/protocol/agent.md/SCHEMA.md +4 -0
  19. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
  20. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +68 -61
  21. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
  22. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +279 -285
  23. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
  24. package/_packed_docs/sdk/09-group-rpc-manual.md +271 -235
  25. package/_packed_docs/sdk/09-message-rpc-manual.md +47 -6
  26. package/_packed_docs/sdk/09-storage-rpc-manual.md +70 -68
  27. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +63 -34
  28. package/_packed_docs/sdk/INDEX.md +105 -34
  29. package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
  30. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
  31. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
  32. package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
  33. package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +300 -0
  34. package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +382 -0
  35. package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
  36. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
  37. package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
  38. package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
  39. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
  40. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
  41. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
  42. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
  43. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
  44. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
  45. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
  46. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
  47. package/dist/agent-md-schema.d.ts +17 -3
  48. package/dist/agent-md-schema.d.ts.map +1 -1
  49. package/dist/agent-md-schema.js +94 -26
  50. package/dist/agent-md-schema.js.map +1 -1
  51. package/dist/agent-md.d.ts +54 -3
  52. package/dist/agent-md.d.ts.map +1 -1
  53. package/dist/agent-md.js +711 -65
  54. package/dist/agent-md.js.map +1 -1
  55. package/dist/aid-store.d.ts +58 -46
  56. package/dist/aid-store.d.ts.map +1 -1
  57. package/dist/aid-store.js +254 -248
  58. package/dist/aid-store.js.map +1 -1
  59. package/dist/aid.d.ts +4 -1
  60. package/dist/aid.d.ts.map +1 -1
  61. package/dist/aid.js +27 -33
  62. package/dist/aid.js.map +1 -1
  63. package/dist/auth.d.ts +4 -1
  64. package/dist/auth.d.ts.map +1 -1
  65. package/dist/auth.js +426 -39
  66. package/dist/auth.js.map +1 -1
  67. package/dist/bundle.js +38179 -32054
  68. package/dist/cert-utils.d.ts +50 -2
  69. package/dist/cert-utils.d.ts.map +1 -1
  70. package/dist/cert-utils.js +105 -47
  71. package/dist/cert-utils.js.map +1 -1
  72. package/dist/client/delivery.d.ts +22 -1
  73. package/dist/client/delivery.d.ts.map +1 -1
  74. package/dist/client/delivery.js +389 -78
  75. package/dist/client/delivery.js.map +1 -1
  76. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  77. package/dist/client/rpc-pipeline.js +103 -77
  78. package/dist/client/rpc-pipeline.js.map +1 -1
  79. package/dist/client/v2-e2ee.d.ts +1 -0
  80. package/dist/client/v2-e2ee.d.ts.map +1 -1
  81. package/dist/client/v2-e2ee.js +182 -89
  82. package/dist/client/v2-e2ee.js.map +1 -1
  83. package/dist/client.d.ts +100 -1
  84. package/dist/client.d.ts.map +1 -1
  85. package/dist/client.js +1220 -25
  86. package/dist/client.js.map +1 -1
  87. package/dist/crypto.d.ts.map +1 -1
  88. package/dist/crypto.js +8 -6
  89. package/dist/crypto.js.map +1 -1
  90. package/dist/errors.d.ts.map +1 -1
  91. package/dist/errors.js +3 -2
  92. package/dist/errors.js.map +1 -1
  93. package/dist/events.d.ts +9 -2
  94. package/dist/events.d.ts.map +1 -1
  95. package/dist/events.js +72 -13
  96. package/dist/events.js.map +1 -1
  97. package/dist/facades.d.ts +82 -2
  98. package/dist/facades.d.ts.map +1 -1
  99. package/dist/facades.js +100 -6
  100. package/dist/facades.js.map +1 -1
  101. package/dist/index.d.ts +7 -3
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +3 -2
  104. package/dist/index.js.map +1 -1
  105. package/dist/keystore/index.d.ts +17 -0
  106. package/dist/keystore/index.d.ts.map +1 -1
  107. package/dist/keystore/indexeddb-shared.d.ts +10 -1
  108. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  109. package/dist/keystore/indexeddb-shared.js +111 -0
  110. package/dist/keystore/indexeddb-shared.js.map +1 -1
  111. package/dist/keystore/indexeddb-token-store.d.ts +7 -1
  112. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  113. package/dist/keystore/indexeddb-token-store.js +30 -1
  114. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  115. package/dist/org-protocol.d.ts +98 -0
  116. package/dist/org-protocol.d.ts.map +1 -0
  117. package/dist/org-protocol.js +1802 -0
  118. package/dist/org-protocol.js.map +1 -0
  119. package/dist/ownership-proof.d.ts +93 -5
  120. package/dist/ownership-proof.d.ts.map +1 -1
  121. package/dist/ownership-proof.js +239 -53
  122. package/dist/ownership-proof.js.map +1 -1
  123. package/dist/ownership-v21.d.ts +194 -0
  124. package/dist/ownership-v21.d.ts.map +1 -0
  125. package/dist/ownership-v21.js +678 -0
  126. package/dist/ownership-v21.js.map +1 -0
  127. package/dist/ownership-workflow.d.ts +151 -0
  128. package/dist/ownership-workflow.d.ts.map +1 -0
  129. package/dist/ownership-workflow.js +1229 -0
  130. package/dist/ownership-workflow.js.map +1 -0
  131. package/dist/seq-tracker.d.ts +1 -0
  132. package/dist/seq-tracker.d.ts.map +1 -1
  133. package/dist/seq-tracker.js +10 -2
  134. package/dist/seq-tracker.js.map +1 -1
  135. package/dist/tools/cross-sdk-agent.d.ts +83 -0
  136. package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
  137. package/dist/tools/cross-sdk-agent.js +415 -7
  138. package/dist/tools/cross-sdk-agent.js.map +1 -1
  139. package/dist/transport.d.ts +7 -0
  140. package/dist/transport.d.ts.map +1 -1
  141. package/dist/transport.js +90 -2
  142. package/dist/transport.js.map +1 -1
  143. package/dist/v2/e2ee/decrypt.d.ts +1 -0
  144. package/dist/v2/e2ee/decrypt.d.ts.map +1 -1
  145. package/dist/v2/e2ee/decrypt.js +9 -1
  146. package/dist/v2/e2ee/decrypt.js.map +1 -1
  147. package/dist/version.d.ts +1 -1
  148. package/dist/version.js +1 -1
  149. package/package.json +1 -1
@@ -1,37 +1,108 @@
1
1
  import { canonicalJson } from './v2/crypto/canonical.js';
2
+ import { sha256 } from '@noble/hashes/sha2.js';
2
3
  import { validateAIDFormat } from './validators.js';
3
- import { isStrictBase64, verifySignatureWithCert, certFingerprint } from './cert-utils.js';
4
+ import { isStrictBase64, verifySignatureWithCert, certFingerprint, parseCertMetadata } from './cert-utils.js';
4
5
  import { ValidationError } from './errors.js';
5
6
  export const OWNERSHIP_RELATION_DOMAIN = 'AUN-AID-OWNER-RELATION-V1;';
7
+ export const OWNERSHIP_RELEASE_DOMAIN = 'AUN-AID-OWNER-RELEASE-V1;';
8
+ export const OWNERSHIP_MESSAGE_TYPE = 'aun.ownership.v1';
9
+ export const CERT_ESCROW_VERSION = 1;
10
+ export const CERT_ESCROW_ITERATIONS = 200_000;
11
+ export const CERT_ESCROW_AAD = 'AUN-CERT-ESCROW-V1';
6
12
  const PROOF_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
7
13
  const FINGERPRINT_RE = /^sha256:[0-9a-f]{64}$/i;
8
- function sha256Hex(input) {
9
- const K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
10
- const bytes = new Uint8Array(input.length + 1 + ((55 - input.length) % 64 + 64) % 64 + 8);
11
- bytes.set(input);
12
- bytes[input.length] = 0x80;
13
- const bits = input.length * 8;
14
- new DataView(bytes.buffer).setUint32(bytes.length - 4, bits >>> 0, false);
15
- new DataView(bytes.buffer).setUint32(bytes.length - 8, Math.floor(bits / 0x100000000), false);
16
- let h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];
17
- const rotr = (x, n) => (x >>> n) | (x << (32 - n));
18
- for (let o = 0; o < bytes.length; o += 64) {
19
- const w = new Uint32Array(64);
20
- for (let i = 0; i < 16; i++)
21
- w[i] = new DataView(bytes.buffer).getUint32(o + i * 4, false);
22
- for (let i = 16; i < 64; i++) {
23
- const x = w[i - 15], y = w[i - 2];
24
- w[i] = (w[i - 16] + (rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3)) + w[i - 7] + (rotr(y, 17) ^ rotr(y, 19) ^ (y >>> 10))) >>> 0;
25
- }
26
- let [a, b, c, d, e, f, g, hh] = h;
27
- for (let i = 0; i < 64; i++) {
28
- const s1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25), ch = (e & f) ^ (~e & g), t1 = (hh + s1 + ch + K[i] + w[i]) >>> 0;
29
- const s0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22), maj = (a & b) ^ (a & c) ^ (b & c), t2 = (s0 + maj) >>> 0;
30
- [hh, g, f, e, d, c, b, a] = [g, f, e, (d + t1) >>> 0, c, b, a, (t1 + t2) >>> 0];
31
- }
32
- h = h.map((v, i) => (v + [a, b, c, d, e, f, g, hh][i]) >>> 0);
14
+ function base64Encode(bytes) {
15
+ let binary = '';
16
+ for (const value of bytes)
17
+ binary += String.fromCharCode(value);
18
+ return btoa(binary);
19
+ }
20
+ function base64Decode(value) {
21
+ const binary = atob(value);
22
+ const result = new Uint8Array(binary.length);
23
+ for (let index = 0; index < binary.length; index += 1)
24
+ result[index] = binary.charCodeAt(index);
25
+ return result;
26
+ }
27
+ function webCrypto() {
28
+ const value = globalThis.crypto;
29
+ if (!value?.subtle)
30
+ throw new ValidationError('Web Crypto API is unavailable');
31
+ return value;
32
+ }
33
+ function asArrayBuffer(value) {
34
+ const copy = new Uint8Array(value.byteLength);
35
+ copy.set(value);
36
+ return copy.buffer;
37
+ }
38
+ async function encryptEscrowBytes(plaintext, password) {
39
+ if (!plaintext.length)
40
+ throw new ValidationError('certificate escrow plaintext is empty');
41
+ const crypto = webCrypto();
42
+ const secret = String(password ?? '').trim() || base64Encode(crypto.getRandomValues(new Uint8Array(24))).replace(/[^A-Za-z0-9]/g, '');
43
+ const salt = crypto.getRandomValues(new Uint8Array(16));
44
+ const nonce = crypto.getRandomValues(new Uint8Array(12));
45
+ const material = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), 'PBKDF2', false, ['deriveKey']);
46
+ const key = await crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: asArrayBuffer(salt), iterations: CERT_ESCROW_ITERATIONS }, material, { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
47
+ const ciphertext = new Uint8Array(await crypto.subtle.encrypt({ name: 'AES-GCM', iv: asArrayBuffer(nonce), additionalData: asArrayBuffer(new TextEncoder().encode(CERT_ESCROW_AAD)), tagLength: 128 }, key, asArrayBuffer(plaintext)));
48
+ const digest = sha256Hex(plaintext);
49
+ return {
50
+ envelope: { version: CERT_ESCROW_VERSION, alg: 'AES-256-GCM', kdf: 'PBKDF2-SHA256', iterations: CERT_ESCROW_ITERATIONS, salt: base64Encode(salt), nonce: base64Encode(nonce), ciphertext: base64Encode(ciphertext), sha256: digest },
51
+ password: secret,
52
+ };
53
+ }
54
+ async function decryptEscrowBytes(envelope, password) {
55
+ if (!envelope || envelope.version !== CERT_ESCROW_VERSION || envelope.alg !== 'AES-256-GCM' || envelope.kdf !== 'PBKDF2-SHA256' || envelope.iterations !== CERT_ESCROW_ITERATIONS)
56
+ throw new ValidationError('unsupported certificate escrow envelope');
57
+ const crypto = webCrypto();
58
+ const salt = base64Decode(String(envelope.salt ?? ''));
59
+ const nonce = base64Decode(String(envelope.nonce ?? ''));
60
+ const ciphertext = base64Decode(String(envelope.ciphertext ?? ''));
61
+ if (salt.length !== 16 || nonce.length !== 12 || ciphertext.length <= 16)
62
+ throw new ValidationError('invalid certificate escrow fields');
63
+ const material = await crypto.subtle.importKey('raw', new TextEncoder().encode(String(password ?? '')), 'PBKDF2', false, ['deriveKey']);
64
+ const key = await crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: asArrayBuffer(salt), iterations: CERT_ESCROW_ITERATIONS }, material, { name: 'AES-GCM', length: 256 }, false, ['decrypt']);
65
+ let plaintext;
66
+ try {
67
+ plaintext = new Uint8Array(await crypto.subtle.decrypt({ name: 'AES-GCM', iv: asArrayBuffer(nonce), additionalData: asArrayBuffer(new TextEncoder().encode(CERT_ESCROW_AAD)), tagLength: 128 }, key, asArrayBuffer(ciphertext)));
33
68
  }
34
- return h.map((v) => v.toString(16).padStart(8, '0')).join('');
69
+ catch (error) {
70
+ throw new ValidationError(`certificate escrow decryption failed: ${String(error)}`);
71
+ }
72
+ if (sha256Hex(plaintext) !== String(envelope.sha256 ?? '').toLowerCase())
73
+ throw new ValidationError('certificate escrow hash mismatch');
74
+ return plaintext;
75
+ }
76
+ export async function encryptCertificate(certPem, password) {
77
+ return encryptEscrowBytes(new TextEncoder().encode(String(certPem ?? '')), password);
78
+ }
79
+ export async function decryptCertificate(envelope, password) {
80
+ return new TextDecoder().decode(await decryptEscrowBytes(envelope, password));
81
+ }
82
+ export async function encryptIdentity(identity, password) {
83
+ if (!identity || typeof identity !== 'object' || Array.isArray(identity))
84
+ throw new ValidationError('identity escrow package must be an object');
85
+ if (!String(identity.aid ?? '').trim() || !String(identity.private_key_pem ?? '').trim() || !String(identity.cert ?? '').trim())
86
+ throw new ValidationError('identity escrow package is incomplete');
87
+ return encryptEscrowBytes(new TextEncoder().encode(JSON.stringify(identity)), password);
88
+ }
89
+ export async function decryptIdentity(envelope, password) {
90
+ let value;
91
+ try {
92
+ value = JSON.parse(new TextDecoder().decode(await decryptEscrowBytes(envelope, password)));
93
+ }
94
+ catch (error) {
95
+ throw new ValidationError(`certificate escrow identity package is invalid JSON: ${String(error)}`);
96
+ }
97
+ if (!value || typeof value !== 'object' || Array.isArray(value))
98
+ throw new ValidationError('certificate escrow identity package must be an object');
99
+ const result = value;
100
+ if (!String(result.aid ?? '').trim() || !String(result.private_key_pem ?? '').trim() || !String(result.cert ?? '').trim())
101
+ throw new ValidationError('certificate escrow identity package is incomplete');
102
+ return result;
103
+ }
104
+ function sha256Hex(input) {
105
+ return Array.from(sha256(input), (value) => value.toString(16).padStart(2, '0')).join('');
35
106
  }
36
107
  export class OwnershipStatement {
37
108
  proofId;
@@ -39,9 +110,19 @@ export class OwnershipStatement {
39
110
  ownerAid;
40
111
  canonicalFact;
41
112
  canonicalStatement;
42
- factHash;
43
- statementHash;
44
- constructor(proofId, subjectAid, ownerAid) { this.proofId = proofId; this.subjectAid = subjectAid; this.ownerAid = ownerAid; this.canonicalFact = canonicalJson({ subject_aid: subjectAid, owner_aid: ownerAid }); this.canonicalStatement = canonicalJson({ proof_id: proofId, subject_aid: subjectAid, owner_aid: ownerAid }); const signed = new Uint8Array(new TextEncoder().encode(OWNERSHIP_RELATION_DOMAIN).length + this.canonicalStatement.length); signed.set(new TextEncoder().encode(OWNERSHIP_RELATION_DOMAIN)); signed.set(this.canonicalStatement, new TextEncoder().encode(OWNERSHIP_RELATION_DOMAIN).length); this.factHash = sha256Hex(this.canonicalFact); this.statementHash = sha256Hex(signed); }
113
+ signerAid;
114
+ role;
115
+ extensions;
116
+ version;
117
+ signedAt;
118
+ constructor(proofId, subjectAid, ownerAid, signerAid = '', role = '', extensions, version = 1, signedAt = 0) { this.proofId = proofId; this.subjectAid = subjectAid; this.ownerAid = ownerAid; this.signerAid = signerAid; this.role = role; this.extensions = extensions && Object.keys(extensions).length ? { ...extensions } : undefined; this.version = version; this.signedAt = signedAt; this.canonicalFact = canonicalJson({ subject_aid: subjectAid, owner_aid: ownerAid }); const value = { proof_id: proofId, subject_aid: subjectAid, owner_aid: ownerAid }; if (version === 2) {
119
+ value.version = 2;
120
+ value.signer_aid = signerAid;
121
+ value.role = role;
122
+ value.signed_at = signedAt;
123
+ if (this.extensions)
124
+ value.extensions = this.extensions;
125
+ } this.canonicalStatement = canonicalJson(value); }
45
126
  static create(proofId, subjectAid, ownerAid) { const id = String(proofId ?? '').trim(); if (!PROOF_ID_RE.test(id))
46
127
  throw new ValidationError('invalid proof_id'); let s, o; try {
47
128
  s = validateAIDFormat(subjectAid, 'subject_aid');
@@ -50,25 +131,96 @@ export class OwnershipStatement {
50
131
  catch (e) {
51
132
  throw new ValidationError(String(e instanceof Error ? e.message : e));
52
133
  } return new OwnershipStatement(id, s, o); }
134
+ static createSigned(proofId, subjectAid, ownerAid, options) { const base = OwnershipStatement.create(proofId, subjectAid, ownerAid), signer = validateAIDFormat(options.signerAid, 'signer_aid'), expected = options.role === 'subject' ? base.subjectAid : options.role === 'owner' ? base.ownerAid : ''; if (!expected)
135
+ throw new ValidationError('ownership signer role must be subject or owner'); if (signer !== expected)
136
+ throw new ValidationError('ownership signer does not match role'); if (options.extensions !== undefined && (!options.extensions || typeof options.extensions !== 'object' || Array.isArray(options.extensions)))
137
+ throw new ValidationError('ownership extensions must be an object'); const signedAt = options.signedAt ?? Math.floor(Date.now() / 1000); if (!Number.isSafeInteger(signedAt) || signedAt <= 0)
138
+ throw new ValidationError('signed_at must be a positive integer'); return new OwnershipStatement(base.proofId, base.subjectAid, base.ownerAid, signer, options.role, options.extensions, 2, signedAt); }
139
+ static fromMapping(value) { const version = Number(value.version ?? 1) || 1; if (version === 2) {
140
+ if (!Number.isSafeInteger(value.signed_at) || Number(value.signed_at) <= 0)
141
+ throw new ValidationError('signed_at must be a positive integer');
142
+ return OwnershipStatement.createSigned(String(value.proof_id ?? ''), String(value.subject_aid ?? ''), String(value.owner_aid ?? ''), { signerAid: String(value.signer_aid ?? ''), role: String(value.role ?? ''), extensions: value.extensions, signedAt: value.signed_at });
143
+ } return OwnershipStatement.create(String(value.proof_id ?? ''), String(value.subject_aid ?? ''), String(value.owner_aid ?? '')); }
144
+ toMapping() { const value = { proof_id: this.proofId, subject_aid: this.subjectAid, owner_aid: this.ownerAid }; if (this.version === 2) {
145
+ value.version = 2;
146
+ value.signer_aid = this.signerAid;
147
+ value.role = this.role;
148
+ value.signed_at = this.signedAt;
149
+ if (this.extensions)
150
+ value.extensions = { ...this.extensions };
151
+ } return value; }
53
152
  get signingBytes() { const p = new TextEncoder().encode(OWNERSHIP_RELATION_DOMAIN), r = new Uint8Array(p.length + this.canonicalStatement.length); r.set(p); r.set(this.canonicalStatement, p.length); return r; }
54
153
  }
55
- export function validateOwnershipFrontmatter(frontmatter, expectedAid) { const op = Object.prototype.hasOwnProperty.call(frontmatter, 'owner'), pp = Object.prototype.hasOwnProperty.call(frontmatter, 'ownership_proof'); if (op !== pp)
56
- throw new ValidationError('owner and ownership_proof must appear together'); const type = String(frontmatter.type ?? '').trim().toLowerCase(); if (type === 'human' && (op || pp))
154
+ export function isOwnershipPayload(value) { return !!value && typeof value === 'object' && !Array.isArray(value) && String(value.type ?? '').trim() === OWNERSHIP_MESSAGE_TYPE; }
155
+ export function ownershipMessageBody(message) { if (!message || typeof message !== 'object' || Array.isArray(message))
156
+ return null; const record = message; if (record.payload && typeof record.payload === 'object' && !Array.isArray(record.payload))
157
+ return record.payload; return isOwnershipPayload(record) ? record : null; }
158
+ export function buildOwnershipMessage(action, options) { const payload = { type: OWNERSHIP_MESSAGE_TYPE, action: String(action ?? '').trim(), request_id: String(options.requestId ?? '').trim(), proof_id: String(options.proofId ?? '').trim(), subject_aid: String(options.subjectAid ?? '').trim().toLowerCase(), owner_aid: String(options.ownerAid ?? '').trim().toLowerCase() }; for (const [key, value] of Object.entries(options)) {
159
+ if (!['requestId', 'proofId', 'subjectAid', 'ownerAid'].includes(key) && value !== undefined)
160
+ payload[key] = value;
161
+ } return payload; }
162
+ function validSignature(s) { return !!s && FINGERPRINT_RE.test(String(s?.cert_fingerprint ?? '').trim()) && isStrictBase64(String(s?.signature ?? '')); }
163
+ function validateNestedSignature(signature, relation, expectedSigner, expectedRole, name) { if (signature.statement === undefined)
164
+ return; if (!signature.statement || typeof signature.statement !== 'object' || Array.isArray(signature.statement))
165
+ throw new ValidationError(`${name} statement is invalid`); const statement = OwnershipStatement.fromMapping(signature.statement); if (statement.version !== 2 || statement.proofId !== relation.proofId || statement.subjectAid !== relation.subjectAid || statement.ownerAid !== relation.ownerAid)
166
+ throw new ValidationError(`${name} statement does not match ownership relation`); if (statement.signerAid !== expectedSigner || statement.role !== expectedRole)
167
+ throw new ValidationError(`${name} statement signer does not match role`); if (signature.signer_aid && signature.signer_aid !== statement.signerAid)
168
+ throw new ValidationError(`${name} signer_aid mismatch`); if (signature.role && signature.role !== statement.role)
169
+ throw new ValidationError(`${name} role mismatch`); }
170
+ export function validateOwnershipFrontmatter(frontmatter, expectedAid) { const op = Object.prototype.hasOwnProperty.call(frontmatter, 'owner'), pp = Object.prototype.hasOwnProperty.call(frontmatter, 'ownership_proof'), rp = Object.prototype.hasOwnProperty.call(frontmatter, 'ownership_release'); if (rp) {
171
+ if (op || pp)
172
+ throw new ValidationError('ownership_release cannot be combined with owner or ownership_proof');
173
+ validateOwnershipRelease(frontmatter.ownership_release, String(frontmatter.aid ?? expectedAid ?? ''));
174
+ return;
175
+ } if (pp && !op)
176
+ throw new ValidationError('ownership_proof requires owner'); const type = String(frontmatter.type ?? '').trim().toLowerCase(); if (type === 'human' && (op || pp))
57
177
  throw new ValidationError('human AID cannot specify owner'); if (!op)
58
178
  return; const aid = validateAIDFormat(frontmatter.aid, 'aid'), owner = validateAIDFormat(frontmatter.owner, 'owner'); if (String(frontmatter.aid).trim() !== aid || String(frontmatter.owner).trim() !== owner)
59
179
  throw new ValidationError('owner and subject AID must be lowercase'); if (expectedAid && aid !== expectedAid.trim().toLowerCase())
60
- throw new ValidationError('ownership subject AID does not match expected AID'); if (!frontmatter.ownership_proof || typeof frontmatter.ownership_proof !== 'object' || Array.isArray(frontmatter.ownership_proof))
61
- throw new ValidationError('ownership_proof must be an object'); const raw = frontmatter.ownership_proof, allowed = new Set(['proof_id', 'subject_aid', 'owner_aid', 'fact_hash', 'statement_hash', 'subject_signature', 'owner_signature']); if (Object.keys(raw).some(k => !allowed.has(k)))
62
- throw new ValidationError('ownership_proof contains unknown fields'); const statement = OwnershipStatement.create(String(raw.proof_id ?? ''), String(raw.subject_aid ?? ''), String(raw.owner_aid ?? '')); if (statement.subjectAid !== aid || statement.ownerAid !== owner)
63
- throw new ValidationError('ownership_proof does not match agent.md owner'); if (raw.fact_hash !== undefined && String(raw.fact_hash).toLowerCase() !== statement.factHash)
64
- throw new ValidationError('fact_hash mismatch'); if (raw.statement_hash !== undefined && String(raw.statement_hash).toLowerCase() !== statement.statementHash)
65
- throw new ValidationError('statement_hash mismatch'); if (!validSignature(raw.subject_signature))
66
- throw new ValidationError('subject_signature is invalid'); if (aid === owner) {
67
- if (raw.owner_signature !== undefined)
180
+ throw new ValidationError('ownership subject AID does not match expected AID'); if (!pp)
181
+ return; if (!frontmatter.ownership_proof || typeof frontmatter.ownership_proof !== 'object' || Array.isArray(frontmatter.ownership_proof))
182
+ throw new ValidationError('ownership_proof must be an object'); const raw = frontmatter.ownership_proof, allowed = new Set(['proof_id', 'subject_aid', 'owner_aid', 'subject_signature', 'owner_signature']); if (Object.keys(raw).some(k => !allowed.has(k)))
183
+ throw new ValidationError('ownership_proof contains unknown fields'); if (raw.subject_aid !== undefined && raw.subject_aid !== aid || raw.owner_aid !== undefined && raw.owner_aid !== owner)
184
+ throw new ValidationError('ownership_proof does not match agent.md owner'); if (!('proof_id' in raw) && Object.keys(raw).every(k => ['subject_aid', 'owner_aid'].includes(k)))
185
+ return; const statement = OwnershipStatement.create(String(raw.proof_id ?? ''), String(raw.subject_aid ?? aid), String(raw.owner_aid ?? owner)); if ('subject_signature' in raw) {
186
+ const subjectSignature = raw.subject_signature;
187
+ if (!validSignature(subjectSignature) || Array.isArray(subjectSignature) || Object.keys(subjectSignature).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
188
+ throw new ValidationError('subject_signature is invalid');
189
+ validateNestedSignature(subjectSignature, statement, aid, 'subject', 'subject_signature');
190
+ } if (aid === owner) {
191
+ if ('owner_signature' in raw)
68
192
  throw new ValidationError('self-owner proof must not contain owner_signature');
69
193
  }
70
- else if (!raw.owner_signature || !validSignature(raw.owner_signature))
71
- throw new ValidationError('owner_signature is required'); }
194
+ else if ('owner_signature' in raw) {
195
+ const ownerSignature = raw.owner_signature;
196
+ if (!validSignature(ownerSignature) || Array.isArray(ownerSignature) || Object.keys(ownerSignature).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
197
+ throw new ValidationError('owner_signature is invalid');
198
+ validateNestedSignature(ownerSignature, statement, owner, 'owner', 'owner_signature');
199
+ } }
200
+ export function createOwnershipReleaseStatement(proofId, subjectAid, ownerAid, signedAt = Math.floor(Date.now() / 1000)) { const relation = OwnershipStatement.create(proofId, subjectAid, ownerAid); if (!Number.isSafeInteger(signedAt) || signedAt <= 0)
201
+ throw new ValidationError('signed_at must be a positive integer'); return { version: 1, action: 'release', proof_id: relation.proofId, subject_aid: relation.subjectAid, owner_aid: relation.ownerAid, signer_aid: relation.ownerAid, role: 'owner', signed_at: signedAt }; }
202
+ function parseOwnershipReleaseStatement(value) { if (!value || typeof value !== 'object' || Array.isArray(value))
203
+ throw new ValidationError('ownership_release statement is invalid'); const raw = value, allowed = new Set(['version', 'action', 'proof_id', 'subject_aid', 'owner_aid', 'signer_aid', 'role', 'signed_at']); if (Object.keys(raw).some(k => !allowed.has(k)))
204
+ throw new ValidationError('ownership_release statement contains unknown fields'); const statement = createOwnershipReleaseStatement(String(raw.proof_id ?? ''), String(raw.subject_aid ?? ''), String(raw.owner_aid ?? ''), Number(raw.signed_at)); if (raw.version !== 1 || raw.action !== 'release' || String(raw.signer_aid ?? '').trim().toLowerCase() !== statement.owner_aid || raw.role !== 'owner')
205
+ throw new ValidationError('ownership_release statement is invalid'); return statement; }
206
+ function ownershipReleaseBytes(statement) { const prefix = new TextEncoder().encode(OWNERSHIP_RELEASE_DOMAIN), canonical = canonicalJson(statement), result = new Uint8Array(prefix.length + canonical.length); result.set(prefix); result.set(canonical, prefix.length); return result; }
207
+ function validateOwnershipRelease(value, expectedSubject) { if (!value || typeof value !== 'object' || Array.isArray(value))
208
+ throw new ValidationError('ownership_release must be an object'); const release = value; if (Object.keys(release).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
209
+ throw new ValidationError('ownership_release contains unknown fields'); const signature = release; if (!validSignature(signature) || !signature.statement)
210
+ throw new ValidationError('ownership_release signature is invalid'); const statement = parseOwnershipReleaseStatement(signature.statement); if (expectedSubject && statement.subject_aid !== expectedSubject.trim().toLowerCase())
211
+ throw new ValidationError('ownership_release subject does not match agent.md AID'); if (signature.signer_aid && signature.signer_aid.trim().toLowerCase() !== statement.owner_aid)
212
+ throw new ValidationError('ownership_release signer does not match owner'); if (signature.role && signature.role !== 'owner')
213
+ throw new ValidationError('ownership_release role must be owner'); signature.statement = statement; return signature; }
214
+ export async function signOwnershipRelease(aid, statement) { const signed = await aid.sign(ownershipReleaseBytes(statement)); if (!signed.ok || !signed.data)
215
+ throw new ValidationError(signed.error?.message ?? 'ownership release signature failed'); if (!FINGERPRINT_RE.test(aid.certFingerprint))
216
+ throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: signed.data.signature, signer_aid: statement.owner_aid, role: 'owner', statement }; }
217
+ export async function verifyOwnershipRelease(certPem, value) { try {
218
+ const release = validateOwnershipRelease(value, ''), statement = release.statement, cert = parseCertMetadata(certPem);
219
+ return cert.subject.toLowerCase() === statement.owner_aid && cert.notBefore.getTime() <= statement.signed_at * 1000 && cert.notAfter.getTime() >= statement.signed_at * 1000 && (await certFingerprint(certPem)).toLowerCase() === release.cert_fingerprint.toLowerCase() && await verifySignatureWithCert(certPem, release.signature, ownershipReleaseBytes(statement));
220
+ }
221
+ catch {
222
+ return false;
223
+ } }
72
224
  export function validateOwnershipProof(proof, expectedSubject, expectedOwner) { let s, o; try {
73
225
  s = validateAIDFormat(expectedSubject, 'subject_aid');
74
226
  o = validateAIDFormat(expectedOwner, 'owner_aid');
@@ -76,22 +228,56 @@ export function validateOwnershipProof(proof, expectedSubject, expectedOwner) {
76
228
  catch (e) {
77
229
  throw new ValidationError(String(e instanceof Error ? e.message : e));
78
230
  } if (proof.statement.subjectAid !== s || proof.statement.ownerAid !== o)
79
- throw new ValidationError('ownership proof statement does not match owner or subject'); if (proof.fact_hash && proof.fact_hash.toLowerCase() !== proof.statement.factHash)
80
- throw new ValidationError('fact_hash mismatch'); if (proof.statement_hash && proof.statement_hash.toLowerCase() !== proof.statement.statementHash)
81
- throw new ValidationError('statement_hash mismatch'); if (!validSignature(proof.subject_signature))
82
- throw new ValidationError('subject_signature is invalid'); if (s === o) {
231
+ throw new ValidationError('ownership proof statement does not match owner or subject'); if (!validSignature(proof.subject_signature))
232
+ throw new ValidationError('subject_signature is invalid'); validateNestedSignature(proof.subject_signature, proof.statement, s, 'subject', 'subject_signature'); if (s === o) {
83
233
  if (proof.owner_signature)
84
234
  throw new ValidationError('self-owner proof must not contain owner_signature');
85
235
  }
86
236
  else if (!proof.owner_signature || !validSignature(proof.owner_signature))
87
- throw new ValidationError('owner_signature is required'); }
88
- function validSignature(s) { return !!s && FINGERPRINT_RE.test(String(s?.cert_fingerprint ?? '').trim()) && isStrictBase64(String(s?.signature ?? '')); }
237
+ throw new ValidationError('owner_signature is required');
238
+ else
239
+ validateNestedSignature(proof.owner_signature, proof.statement, o, 'owner', 'owner_signature'); }
89
240
  export async function signOwnershipStatement(aid, statement) { const sig = await aid.sign(statement.signingBytes); if (!sig.ok || !sig.data)
90
241
  throw new ValidationError(sig.error?.message ?? 'ownership signature failed'); if (!FINGERPRINT_RE.test(aid.certFingerprint))
91
- throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: sig.data.signature }; }
242
+ throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: sig.data.signature, ...(statement.version === 2 ? { signer_aid: statement.signerAid, role: statement.role, statement: statement.toMapping() } : {}) }; }
92
243
  export async function verifyOwnershipSignature(certPem, statement, signature) { if (!validSignature(signature))
93
- return false; if ((await certFingerprint(certPem)).toLowerCase() !== signature.cert_fingerprint.toLowerCase())
94
- return false; return verifySignatureWithCert(certPem, signature.signature, new TextEncoder().encode(new TextDecoder().decode(statement.signingBytes))); }
95
- export async function verifyOwnershipProof(proof, subjectCertPem, ownerCertPem) { validateOwnershipProof(proof, proof.statement.subjectAid, proof.statement.ownerAid); if (!await verifyOwnershipSignature(subjectCertPem, proof.statement, proof.subject_signature))
96
- return false; return proof.statement.subjectAid === proof.statement.ownerAid || !!ownerCertPem && !!proof.owner_signature && await verifyOwnershipSignature(ownerCertPem, proof.statement, proof.owner_signature); }
244
+ return false; try {
245
+ const signedStatement = signature.statement ? OwnershipStatement.fromMapping(signature.statement) : statement;
246
+ if (signedStatement.version !== 2 || signedStatement.proofId !== statement.proofId || signedStatement.subjectAid !== statement.subjectAid || signedStatement.ownerAid !== statement.ownerAid)
247
+ return false;
248
+ if (signature.signer_aid && signature.signer_aid !== signedStatement.signerAid || signature.role && signature.role !== signedStatement.role)
249
+ return false;
250
+ const cert = parseCertMetadata(certPem), signedAt = signedStatement.signedAt * 1000;
251
+ if (cert.subject.toLowerCase() !== signedStatement.signerAid || signedAt < cert.notBefore.getTime() || signedAt > cert.notAfter.getTime())
252
+ return false;
253
+ if ((await certFingerprint(certPem)).toLowerCase() !== signature.cert_fingerprint.toLowerCase())
254
+ return false;
255
+ return await verifySignatureWithCert(certPem, signature.signature, signedStatement.signingBytes);
256
+ }
257
+ catch {
258
+ return false;
259
+ } }
260
+ export async function verifyOwnershipProof(proof, subjectCertPem, ownerCertPem) { validateOwnershipProof(proof, proof.statement.subjectAid, proof.statement.ownerAid); if (parseCertMetadata(subjectCertPem).subject.toLowerCase() !== proof.statement.subjectAid.toLowerCase() || !await verifyOwnershipSignature(subjectCertPem, proof.statement, proof.subject_signature))
261
+ return false; return proof.statement.subjectAid === proof.statement.ownerAid || !!ownerCertPem && !!proof.owner_signature && parseCertMetadata(ownerCertPem).subject.toLowerCase() === proof.statement.ownerAid.toLowerCase() && await verifyOwnershipSignature(ownerCertPem, proof.statement, proof.owner_signature); }
262
+ export async function verifyOwnershipFrontmatterStatus(frontmatter, subjectCertPem, ownerCertPem) { try {
263
+ validateOwnershipFrontmatter(frontmatter);
264
+ if (!Object.prototype.hasOwnProperty.call(frontmatter, 'owner')) {
265
+ if (frontmatter.ownership_release !== undefined)
266
+ return ownerCertPem && await verifyOwnershipRelease(ownerCertPem, frontmatter.ownership_release) ? 'released' : 'invalid';
267
+ return 'unbound';
268
+ }
269
+ const raw = (frontmatter.ownership_proof ?? {}), subjectSignature = raw.subject_signature, ownerSignature = raw.owner_signature;
270
+ if (!subjectSignature && !ownerSignature)
271
+ return 'incomplete';
272
+ const statement = OwnershipStatement.create(String(raw.proof_id ?? ''), String(raw.subject_aid ?? frontmatter.aid), String(raw.owner_aid ?? frontmatter.owner));
273
+ if (subjectSignature && (!subjectCertPem || !await verifyOwnershipSignature(subjectCertPem, statement, subjectSignature)))
274
+ return 'invalid';
275
+ if (ownerSignature && (!ownerCertPem || !await verifyOwnershipSignature(ownerCertPem, statement, ownerSignature)))
276
+ return 'invalid';
277
+ return subjectSignature && (statement.subjectAid === statement.ownerAid || ownerSignature) ? 'complete' : 'incomplete';
278
+ }
279
+ catch {
280
+ return 'invalid';
281
+ } }
282
+ export async function verifyOwnershipFrontmatter(frontmatter, subjectCertPem, ownerCertPem) { const status = await verifyOwnershipFrontmatterStatus(frontmatter, subjectCertPem, ownerCertPem); return status === 'unbound' || status === 'complete'; }
97
283
  //# sourceMappingURL=ownership-proof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownership-proof.js","sourceRoot":"","sources":["../src/ownership-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownership-proof.js","sourceRoot":"","sources":["../src/ownership-proof.ts"],"names":[],"mappings":"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"}