@solidus-network/sdk 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,12 +6,14 @@
6
6
  * and `solidus_bbsVerifyCredentialProof`) which runs the IRTF
7
7
  * `draft-irtf-cfrg-bbs-signatures` ProofVerify routine via zkryptium.
8
8
  *
9
- * Client-side proof generation lives in a separate `@solidus-network/bbs`
10
- * package (still in design) so this SDK does not require WASM.
9
+ * Client-side signing and proof generation live in the shipped
10
+ * `@solidus-network/bbs` package (pure JS via `@digitalbazaar/bbs-signatures`,
11
+ * byte-compatible with zkryptium) — this SDK stays verification-only so it
12
+ * carries no BBS crypto dependency.
11
13
  */
12
14
  import type { RpcClient } from './rpc.js';
13
15
  import type { ChainConfig } from './index.js';
14
- import { bytesToHex } from './transaction.js';
16
+ import { bytesToHex, type RpcReceipt } from './transaction.js';
15
17
  /**
16
18
  * One disclosed message in a BBS+ proof. `index` is the zero-based position
17
19
  * in the original signed vector. `message` is hex-encoded bytes.
@@ -52,17 +54,6 @@ export interface BbsCredentialRecord {
52
54
  bbs_pubkey?: string | null;
53
55
  bbs_message_count?: number | null;
54
56
  }
55
- interface RpcReceipt {
56
- tx_hash: string;
57
- status: string;
58
- block_height: number;
59
- fee_paid: number;
60
- events: Array<{
61
- type: string;
62
- credentialId?: string;
63
- [key: string]: unknown;
64
- }>;
65
- }
66
57
  export declare function createChainBbs(rpc: RpcClient, config: ChainConfig): {
67
58
  /**
68
59
  * Issue a BBS+ credential by submitting a `CredentialIssueBbs` transaction.
@@ -124,5 +115,4 @@ export declare const toHex: typeof bytesToHex;
124
115
  * disclosed-message field or header/ph value).
125
116
  */
126
117
  export declare function utf8ToHex(s: string): string;
127
- export {};
128
118
  //# sourceMappingURL=bbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bbs.d.ts","sourceRoot":"","sources":["../../src/chain/bbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAuC,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAA;CAC/E;AAqCD,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAE9D;;;;;;;;;OASG;4BAC2B;QAC5B,gBAAgB,EAAE,MAAM,CAAA;QACxB,UAAU,EAAE,MAAM,CAAA;QAClB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,UAAU,CAAA;QACvB,SAAS,EAAE,UAAU,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;KACxB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,CAAA;KAAE,CAAC;IA4C1E;;;;OAIG;wBACuB;QACxB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;QACxC,iBAAiB,EAAE,MAAM,CAAA;KAC1B,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpB;;;;;;;OAOG;kCACiC;QAClC,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;KACzC,GAAG,OAAO,CAAC,wBAAwB,CAAC;EAqCxC;AAID;;GAEG;AACH,eAAO,MAAM,KAAK,mBAAa,CAAA;AAE/B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C"}
1
+ {"version":3,"file":"bbs.d.ts","sourceRoot":"","sources":["../../src/chain/bbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAwB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIpF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AA2BD,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAE9D;;;;;;;;;OASG;4BAC2B;QAC5B,gBAAgB,EAAE,MAAM,CAAA;QACxB,UAAU,EAAE,MAAM,CAAA;QAClB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,UAAU,CAAA;QACvB,SAAS,EAAE,UAAU,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;KACxB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,CAAA;KAAE,CAAC;IAwC1E;;;;OAIG;wBACuB;QACxB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;QACxC,iBAAiB,EAAE,MAAM,CAAA;KAC1B,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpB;;;;;;;OAOG;kCACiC;QAClC,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;KACzC,GAAG,OAAO,CAAC,wBAAwB,CAAC;EAqCxC;AAID;;GAEG;AACH,eAAO,MAAM,KAAK,mBAAa,CAAA;AAE/B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C"}
package/dist/chain/bbs.js CHANGED
@@ -1,15 +1,5 @@
1
- import { buildTransaction, getAddressFromKey, bytesToHex } from './transaction.js';
1
+ import { bytesToHex, submitWithNonceRetry } from './transaction.js';
2
2
  // ---------- helpers ----------
3
- async function pollReceipt(rpc, txHash) {
4
- const maxAttempts = 20;
5
- for (let i = 0; i < maxAttempts; i++) {
6
- const receipt = await rpc.call('solidus_getReceipt', [txHash]);
7
- if (receipt)
8
- return receipt;
9
- await new Promise((resolve) => setTimeout(resolve, 500));
10
- }
11
- throw new Error(`Transaction ${txHash} not confirmed after 10 seconds`);
12
- }
13
3
  function validateDisclosed(disclosed, totalMessageCount) {
14
4
  const seen = new Set();
15
5
  for (const dm of disclosed) {
@@ -53,8 +43,6 @@ export function createChainBbs(rpc, config) {
53
43
  params.bbsMessageCount > 64) {
54
44
  throw new Error(`bbsMessageCount must be an integer in [1, 64], got ${params.bbsMessageCount}`);
55
45
  }
56
- const address = await getAddressFromKey(params.issuerPrivateKey);
57
- const nonce = await rpc.call('solidus_getNonce', [address]);
58
46
  const payload = {
59
47
  CredentialIssueBbs: {
60
48
  subject_did: params.subjectDid,
@@ -64,16 +52,11 @@ export function createChainBbs(rpc, config) {
64
52
  bbs_message_count: params.bbsMessageCount,
65
53
  },
66
54
  };
67
- const tx = await buildTransaction(params.issuerPrivateKey, nonce, payload);
68
- const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
69
- const receipt = await pollReceipt(rpc, txHash);
70
- if (!receipt.status.startsWith('success')) {
71
- throw new Error(`CredentialIssueBbs failed: ${receipt.status}`);
72
- }
55
+ const receipt = await submitWithNonceRetry(rpc, params.issuerPrivateKey, payload, 'CredentialIssueBbs');
73
56
  const issuedEvent = receipt.events.find((e) => e.type === 'CredentialIssued');
74
57
  const credentialId = issuedEvent?.credentialId ??
75
- `urn:solidus:credential:${txHash}`;
76
- return { txHash, credentialId, receipt };
58
+ `urn:solidus:credential:${receipt.tx_hash}`;
59
+ return { txHash: receipt.tx_hash, credentialId, receipt };
77
60
  },
78
61
  /**
79
62
  * Verify a BBS+ selective-disclosure proof statelessly. Delegates to
@@ -1 +1 @@
1
- {"version":3,"file":"bbs.js","sourceRoot":"","sources":["../../src/chain/bbs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bbs.js","sourceRoot":"","sources":["../../src/chain/bbs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/chain/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAsG7C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;kBAElD,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;iBAoEtD,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;yBAyB5B,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;sBAc5C,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;EAQnE"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/chain/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAgG7C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;kBAElD,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;iBA8DtD,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;yBAyB5B,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;sBAK5C,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;EAQnE"}
@@ -1,4 +1,4 @@
1
- import { buildTransaction, getAddressFromKey, bytesToHex, pollReceipt, } from './transaction.js';
1
+ import { bytesToHex, submitWithNonceRetry } from './transaction.js';
2
2
  import { blake3 } from '@noble/hashes/blake3';
3
3
  // ---------- helpers ----------
4
4
  /**
@@ -70,10 +70,6 @@ function recordToVC(record) {
70
70
  export function createChainCredentials(rpc, config) {
71
71
  return {
72
72
  async issue(params) {
73
- // Use the issuer's private key to sign the transaction
74
- const signerKey = params.issuerPrivateKey;
75
- const address = await getAddressFromKey(signerKey);
76
- const nonce = await rpc.call('solidus_getNonce', [address]);
77
73
  // Compute BLAKE3 hash of the credential payload
78
74
  const payloadHash = hashCredentialPayload(params);
79
75
  // Build CredentialIssue payload (Rust serde tagged enum)
@@ -84,17 +80,12 @@ export function createChainCredentials(rpc, config) {
84
80
  hash: Array.from(payloadHash),
85
81
  },
86
82
  };
87
- // Build and sign transaction
88
- const tx = await buildTransaction(signerKey, nonce, payload);
89
- // Submit and wait for receipt
90
- const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
91
- const receipt = await pollReceipt(rpc, txHash);
92
- if (!receipt.status.startsWith('success')) {
93
- throw new Error(`CredentialIssue failed: ${receipt.status}`);
94
- }
83
+ // Sign with the issuer's key; submit and wait for receipt
84
+ const receipt = await submitWithNonceRetry(rpc, params.issuerPrivateKey, payload, 'CredentialIssue');
95
85
  // Extract credential ID from the CredentialIssued event
96
86
  const issuedEvent = receipt.events.find((e) => e.type === 'CredentialIssued');
97
- const credentialId = issuedEvent?.credentialId ?? `urn:solidus:credential:${txHash}`;
87
+ const credentialId = issuedEvent?.credentialId ??
88
+ `urn:solidus:credential:${receipt.tx_hash}`;
98
89
  // Query back the credential to get the full record
99
90
  const records = await rpc.call('solidus_credentialsBySubject', [params.subjectDid]);
100
91
  const record = records.find((r) => r.id === credentialId);
@@ -143,15 +134,8 @@ export function createChainCredentials(rpc, config) {
143
134
  };
144
135
  },
145
136
  async revoke(credentialId, issuerKey) {
146
- const address = await getAddressFromKey(issuerKey);
147
- const nonce = await rpc.call('solidus_getNonce', [address]);
148
137
  const payload = { CredentialRevoke: { credential_id: credentialId } };
149
- const tx = await buildTransaction(issuerKey, nonce, payload);
150
- const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
151
- const receipt = await pollReceipt(rpc, txHash);
152
- if (!receipt.status.startsWith('success')) {
153
- throw new Error(`CredentialRevoke failed: ${receipt.status}`);
154
- }
138
+ await submitWithNonceRetry(rpc, issuerKey, payload, 'CredentialRevoke');
155
139
  },
156
140
  async query(subjectDid) {
157
141
  const records = await rpc.call('solidus_credentialsBySubject', [subjectDid]);
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/chain/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/chain/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export interface DerivedKeypair {
2
+ /** 32-byte private key, hex. Never log or transmit. */
3
+ privateKey: string;
4
+ /** 32-byte ed25519 public key, hex. */
5
+ publicKey: string;
6
+ privateKeyBytes: Uint8Array;
7
+ publicKeyBytes: Uint8Array;
8
+ /** Chain address: base58(BLAKE3(publicKey)[0..20]). */
9
+ address: string;
10
+ }
11
+ /**
12
+ * Derive value account `index` (0, 1, 2, …). Value keys hold and move
13
+ * funds; the identity key never can (the chain's DID-anchor guard
14
+ * rejects it), so spend flows must route through these.
15
+ */
16
+ export declare function deriveValueKeyFromSeed(seed64: Uint8Array, index: number): Promise<DerivedKeypair>;
17
+ /**
18
+ * Derive the pairwise key for one verifier. The wallet MUST derive under
19
+ * the verifier's own AUTHENTICATED identity (bound to the TLS origin) —
20
+ * never a verifier_id copied blindly from a challenge, or verifier A can
21
+ * request B's pseudonym and collude (§5.4 authenticity caveat).
22
+ */
23
+ export declare function derivePairwiseKeyFromSeed(seed64: Uint8Array, verifierId: Uint8Array | string): Promise<DerivedKeypair>;
24
+ /**
25
+ * AES-256-GCM key for encrypting the credential bundle at rest in the
26
+ * user's pod (fallback prover substrate + multi-device sync). Only the
27
+ * device ever derives this — Solidus never has it.
28
+ */
29
+ export declare function derivePodWrapKey(seed64: Uint8Array): Uint8Array;
30
+ /**
31
+ * Mechanism-C per-holder secret (BBS+ native pseudonyms) — SEAM ONLY.
32
+ * Derivable today so the hierarchy is frozen; nothing consumes it until
33
+ * mechanism C ships (vendored pseudonym crypto + blind issuance + audit).
34
+ */
35
+ export declare function derivePidFromSeed(seed64: Uint8Array): Uint8Array;
36
+ /**
37
+ * Pairwise DID string: `did:solidus:{network}:{address}` (same format as
38
+ * `chain/did.ts`). A pairwise DID is a STRING the wallet presents for
39
+ * re-recognition — it is NEVER registered on-chain (an on-chain anchor
40
+ * would itself be a correlation handle, BD-7).
41
+ */
42
+ export declare function pairwiseDid(network: string, publicKeyBytes: Uint8Array): string;
43
+ export interface ValueAccount {
44
+ index: number;
45
+ address: string;
46
+ publicKey: string;
47
+ }
48
+ /**
49
+ * BIP-44-style value-account discovery on seed import: derive accounts
50
+ * 0, 1, 2, … and probe each address for use, stopping after `gap`
51
+ * consecutive unused indices. Deterministic from the seed alone; the
52
+ * probe is injected (e.g. `balance > 0 || nonce > 0` via RPC) so this
53
+ * module stays transport-free.
54
+ */
55
+ export declare function scanValueAccounts(seed64: Uint8Array, isUsed: (address: string) => Promise<boolean>, opts?: {
56
+ gap?: number;
57
+ maxIndex?: number;
58
+ }): Promise<ValueAccount[]>;
59
+ //# sourceMappingURL=derivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derivation.d.ts","sourceRoot":"","sources":["../../src/chain/derivation.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,UAAU,CAAA;IAC3B,cAAc,EAAE,UAAU,CAAA;IAC1B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;CAChB;AAqCD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,UAAU,GAAG,MAAM,GAC9B,OAAO,CAAC,cAAc,CAAC,CAQzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,GAAG,MAAM,CAG/E;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * One-seed HKDF key hierarchy (privacy rebuild §5.1).
3
+ *
4
+ * Everything a wallet needs derives from the single 64-byte BIP-39 seed:
5
+ *
6
+ * identity_priv = seed64[0..32] (UNCHANGED — the DID anchor key, BD-4)
7
+ * value_priv(i) = HKDF(SHA-512, seed64, ∅, "solidus.value.v1" ‖ u32le(i), 32)
8
+ * pairwise_priv(v) = HKDF(SHA-512, seed64, ∅, "solidus.pairwise.v1" ‖ verifier_id, 32)
9
+ * pod_wrap_key = HKDF(SHA-512, seed64, ∅, "solidus.pod.bundlewrap.v1", 32)
10
+ * pid = HKDF(SHA-512, seed64, ∅, "solidus.bbs.pid.v1", 32) (mechanism-C seam)
11
+ *
12
+ * The IKM is the FULL 64-byte seed (binds derived keys to the whole seed,
13
+ * not the identity prefix); salt is empty per RFC 5869; all domain
14
+ * separation lives in the versioned `info`. Outputs are 32 bytes — valid
15
+ * ed25519 private scalars (`@noble/ed25519` clamps on getPublicKey),
16
+ * exactly as `seed.slice(0, 32)` is used for the identity key today.
17
+ *
18
+ * Pure crypto — no RPC, node, or postgres imports (stub-mode-safe;
19
+ * browser-safe). Mirrored byte-identically in identity-FE
20
+ * `src/lib/crypto.ts` (the frontend cannot import this SDK); identity-BE
21
+ * wraps these functions directly. All three are locked by the same
22
+ * frozen golden vectors.
23
+ *
24
+ * On-chain honesty (a.2 scope): multiple value accounts give
25
+ * ADDRESS-LEVEL separation only — they can still be clustered by funding
26
+ * source, timing, and amounts. That is layer (c), out of scope here.
27
+ */
28
+ import { hkdf } from '@noble/hashes/hkdf';
29
+ import { sha512 } from '@noble/hashes/sha512';
30
+ import * as ed from '@noble/ed25519';
31
+ import { addressFromPublicKey, bytesToHex } from './transaction.js';
32
+ const VALUE_INFO_TAG = 'solidus.value.v1';
33
+ const PAIRWISE_INFO_TAG = 'solidus.pairwise.v1';
34
+ const POD_WRAP_INFO_TAG = 'solidus.pod.bundlewrap.v1';
35
+ const PID_INFO_TAG = 'solidus.bbs.pid.v1';
36
+ function assertSeed64(seed64) {
37
+ if (seed64.length !== 64) {
38
+ throw new Error(`seed must be the 64-byte BIP-39 seed, got ${seed64.length} bytes`);
39
+ }
40
+ }
41
+ function u32le(n) {
42
+ const b = new Uint8Array(4);
43
+ new DataView(b.buffer).setUint32(0, n, true);
44
+ return b;
45
+ }
46
+ function info(tag, suffix = new Uint8Array(0)) {
47
+ const t = new TextEncoder().encode(tag);
48
+ const out = new Uint8Array(t.length + suffix.length);
49
+ out.set(t, 0);
50
+ out.set(suffix, t.length);
51
+ return out;
52
+ }
53
+ function derive32(seed64, infoBytes) {
54
+ return hkdf(sha512, seed64, new Uint8Array(0), infoBytes, 32);
55
+ }
56
+ async function toKeypair(privateKeyBytes) {
57
+ const publicKeyBytes = await ed.getPublicKeyAsync(privateKeyBytes);
58
+ return {
59
+ privateKey: bytesToHex(privateKeyBytes),
60
+ publicKey: bytesToHex(publicKeyBytes),
61
+ privateKeyBytes,
62
+ publicKeyBytes,
63
+ address: addressFromPublicKey(publicKeyBytes),
64
+ };
65
+ }
66
+ /**
67
+ * Derive value account `index` (0, 1, 2, …). Value keys hold and move
68
+ * funds; the identity key never can (the chain's DID-anchor guard
69
+ * rejects it), so spend flows must route through these.
70
+ */
71
+ export async function deriveValueKeyFromSeed(seed64, index) {
72
+ assertSeed64(seed64);
73
+ if (!Number.isInteger(index) || index < 0) {
74
+ throw new Error(`value account index must be a non-negative integer, got ${index}`);
75
+ }
76
+ return toKeypair(derive32(seed64, info(VALUE_INFO_TAG, u32le(index))));
77
+ }
78
+ /**
79
+ * Derive the pairwise key for one verifier. The wallet MUST derive under
80
+ * the verifier's own AUTHENTICATED identity (bound to the TLS origin) —
81
+ * never a verifier_id copied blindly from a challenge, or verifier A can
82
+ * request B's pseudonym and collude (§5.4 authenticity caveat).
83
+ */
84
+ export async function derivePairwiseKeyFromSeed(seed64, verifierId) {
85
+ assertSeed64(seed64);
86
+ const idBytes = typeof verifierId === 'string' ? new TextEncoder().encode(verifierId) : verifierId;
87
+ if (idBytes.length === 0) {
88
+ throw new Error('verifierId must be non-empty');
89
+ }
90
+ return toKeypair(derive32(seed64, info(PAIRWISE_INFO_TAG, idBytes)));
91
+ }
92
+ /**
93
+ * AES-256-GCM key for encrypting the credential bundle at rest in the
94
+ * user's pod (fallback prover substrate + multi-device sync). Only the
95
+ * device ever derives this — Solidus never has it.
96
+ */
97
+ export function derivePodWrapKey(seed64) {
98
+ assertSeed64(seed64);
99
+ return derive32(seed64, info(POD_WRAP_INFO_TAG));
100
+ }
101
+ /**
102
+ * Mechanism-C per-holder secret (BBS+ native pseudonyms) — SEAM ONLY.
103
+ * Derivable today so the hierarchy is frozen; nothing consumes it until
104
+ * mechanism C ships (vendored pseudonym crypto + blind issuance + audit).
105
+ */
106
+ export function derivePidFromSeed(seed64) {
107
+ assertSeed64(seed64);
108
+ return derive32(seed64, info(PID_INFO_TAG));
109
+ }
110
+ /**
111
+ * Pairwise DID string: `did:solidus:{network}:{address}` (same format as
112
+ * `chain/did.ts`). A pairwise DID is a STRING the wallet presents for
113
+ * re-recognition — it is NEVER registered on-chain (an on-chain anchor
114
+ * would itself be a correlation handle, BD-7).
115
+ */
116
+ export function pairwiseDid(network, publicKeyBytes) {
117
+ if (!network)
118
+ throw new Error('network must be non-empty');
119
+ return `did:solidus:${network}:${addressFromPublicKey(publicKeyBytes)}`;
120
+ }
121
+ /**
122
+ * BIP-44-style value-account discovery on seed import: derive accounts
123
+ * 0, 1, 2, … and probe each address for use, stopping after `gap`
124
+ * consecutive unused indices. Deterministic from the seed alone; the
125
+ * probe is injected (e.g. `balance > 0 || nonce > 0` via RPC) so this
126
+ * module stays transport-free.
127
+ */
128
+ export async function scanValueAccounts(seed64, isUsed, opts) {
129
+ assertSeed64(seed64);
130
+ const gap = opts?.gap ?? 20;
131
+ const maxIndex = opts?.maxIndex ?? 1000;
132
+ if (!Number.isInteger(gap) || gap < 1) {
133
+ throw new Error(`gap must be a positive integer, got ${gap}`);
134
+ }
135
+ const found = [];
136
+ let consecutiveUnused = 0;
137
+ for (let index = 0; index <= maxIndex && consecutiveUnused < gap; index++) {
138
+ const key = await deriveValueKeyFromSeed(seed64, index);
139
+ if (await isUsed(key.address)) {
140
+ found.push({ index, address: key.address, publicKey: key.publicKey });
141
+ consecutiveUnused = 0;
142
+ }
143
+ else {
144
+ consecutiveUnused++;
145
+ }
146
+ }
147
+ return found;
148
+ }
149
+ //# sourceMappingURL=derivation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derivation.js","sourceRoot":"","sources":["../../src/chain/derivation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/chain/did.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAuCnD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAC/B,mBAAmB,EAAE;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB;;;;4CAIoC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,qBAAqB,EAAE;QACrB,WAAW,EAAE,sBAAsB,CAAA;QACnC,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;KAClC,CAAA;IACD;;gFAE4E;IAC5E,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAuDD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAA;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;wBAU/B,qBAAqB,KAAG,OAAO,CAAC,gBAAgB,CAAC;6BA4C5C,gBAAgB,GAAG,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC;IAwD5E;;;;;;;;;OASG;sBACqB,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;iBAgB1B,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUvD;;;;;;;;OAQG;6BAC4B,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;oBAmC9C,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/D;;;;;;;;;;;;;;;;;OAiBG;uBAEI,MAAM,iBACI,MAAM,aACV,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;EAmBnB"}
1
+ {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/chain/did.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAuCnD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAC/B,mBAAmB,EAAE;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB;;;;4CAIoC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,qBAAqB,EAAE;QACrB,WAAW,EAAE,sBAAsB,CAAA;QACnC,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;KAClC,CAAA;IACD;;gFAE4E;IAC5E,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAuDD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAA;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;wBAU/B,qBAAqB,KAAG,OAAO,CAAC,gBAAgB,CAAC;6BA4C5C,gBAAgB,GAAG,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC;IAwD5E;;;;;;;;;OASG;sBACqB,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;iBAgB1B,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUvD;;;;;;;;OAQG;6BAC4B,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;oBAmC9C,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;;;;;;;;;;;;;;;OAiBG;uBAEI,MAAM,iBACI,MAAM,aACV,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;EAUnB"}
package/dist/chain/did.js CHANGED
@@ -1,4 +1,4 @@
1
- import { buildTransaction, getAddressFromKey, addressFromPublicKey, hexToBytes, hexToArray, bytesToHex, pollReceipt, } from './transaction.js';
1
+ import { buildTransaction, addressFromPublicKey, hexToBytes, hexToArray, bytesToHex, pollReceipt, submitWithNonceRetry, } from './transaction.js';
2
2
  import * as ed from '@noble/ed25519';
3
3
  import bs58 from 'bs58';
4
4
  // ---------- helpers ----------
@@ -216,16 +216,7 @@ export function createChainDid(rpc, config) {
216
216
  };
217
217
  },
218
218
  async deactivate(did, signerKey) {
219
- // Derive address from the provided signing key
220
- const address = await getAddressFromKey(signerKey);
221
- const nonce = await rpc.call('solidus_getNonce', [address]);
222
- const payload = { DidDeactivate: { did } };
223
- const tx = await buildTransaction(signerKey, nonce, payload);
224
- const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
225
- const receipt = await pollReceipt(rpc, txHash);
226
- if (!receipt.status.startsWith('success')) {
227
- throw new Error(`DidDeactivate failed: ${receipt.status}`);
228
- }
219
+ await submitWithNonceRetry(rpc, signerKey, { DidDeactivate: { did } }, 'DidDeactivate');
229
220
  },
230
221
  /**
231
222
  * Reassign a DID's controller to a different DID (W3C DID Core
@@ -246,20 +237,13 @@ export function createChainDid(rpc, config) {
246
237
  * current controller.
247
238
  */
248
239
  async setController(did, newController, signerKey) {
249
- const address = await getAddressFromKey(signerKey);
250
- const nonce = await rpc.call('solidus_getNonce', [address]);
251
240
  const payload = {
252
241
  DidUpdate: {
253
242
  did,
254
243
  patches: [{ SetController: newController }],
255
244
  },
256
245
  };
257
- const tx = await buildTransaction(signerKey, nonce, payload);
258
- const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
259
- const receipt = await pollReceipt(rpc, txHash);
260
- if (!receipt.status.startsWith('success')) {
261
- throw new Error(`SetController failed: ${receipt.status}`);
262
- }
246
+ await submitWithNonceRetry(rpc, signerKey, payload, 'SetController');
263
247
  },
264
248
  };
265
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/chain/did.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/chain/did.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Pod credential-bundle encryption (privacy rebuild §5.6).
3
+ *
4
+ * The wallet seals its credential bundle (BBS signature + 8 messages +
5
+ * header + epoch + issuer pubkey) under `pod_wrap_key` — HKDF'd from the
6
+ * seed on the device (§5.1, `derivePodWrapKey`) — before storing it as a
7
+ * Solid resource in the user's pod. Solidus never holds `pod_wrap_key`, so
8
+ * the at-rest resource is opaque to us: the same encrypted blob serves the
9
+ * BD-1 fallback (the wallet reads + decrypts it locally, then ferries the
10
+ * plaintext to the stateless prover) and multi-device sync (a fresh device
11
+ * with the same seed re-derives the key and decrypts).
12
+ *
13
+ * AES-256-GCM via WebCrypto (`globalThis.crypto.subtle`) — identical in the
14
+ * browser wallet and in node. The version tag is bound as AES-GCM
15
+ * additional-authenticated-data, so a format downgrade fails the tag.
16
+ */
17
+ export declare const POD_BUNDLE_V1 = "solidus.podbundle.v1";
18
+ export interface SealedBundle {
19
+ /** Format tag — bound as GCM AAD. */
20
+ v: string;
21
+ /** 12-byte AES-GCM nonce, hex. Fresh per seal. */
22
+ iv: string;
23
+ /** Ciphertext ‖ 16-byte GCM tag, hex. */
24
+ ct: string;
25
+ }
26
+ /** Seal a plaintext bundle under `podWrapKey`. Fresh random IV per call. */
27
+ export declare function sealCredentialBundle(podWrapKey: Uint8Array, plaintext: Uint8Array): Promise<SealedBundle>;
28
+ /** Open a sealed bundle. Throws on wrong key, tampered ciphertext, or version mismatch. */
29
+ export declare function openCredentialBundle(podWrapKey: Uint8Array, sealed: SealedBundle): Promise<Uint8Array>;
30
+ //# sourceMappingURL=podbundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podbundle.d.ts","sourceRoot":"","sources":["../../src/chain/podbundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,aAAa,yBAAyB,CAAA;AAEnD,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,CAAC,EAAE,MAAM,CAAA;IACT,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAA;IACV,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAA;CACX;AA8BD,4EAA4E;AAC5E,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,YAAY,CAAC,CAavB;AAED,2FAA2F;AAC3F,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,CAAC,CAarB"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Pod credential-bundle encryption (privacy rebuild §5.6).
3
+ *
4
+ * The wallet seals its credential bundle (BBS signature + 8 messages +
5
+ * header + epoch + issuer pubkey) under `pod_wrap_key` — HKDF'd from the
6
+ * seed on the device (§5.1, `derivePodWrapKey`) — before storing it as a
7
+ * Solid resource in the user's pod. Solidus never holds `pod_wrap_key`, so
8
+ * the at-rest resource is opaque to us: the same encrypted blob serves the
9
+ * BD-1 fallback (the wallet reads + decrypts it locally, then ferries the
10
+ * plaintext to the stateless prover) and multi-device sync (a fresh device
11
+ * with the same seed re-derives the key and decrypts).
12
+ *
13
+ * AES-256-GCM via WebCrypto (`globalThis.crypto.subtle`) — identical in the
14
+ * browser wallet and in node. The version tag is bound as AES-GCM
15
+ * additional-authenticated-data, so a format downgrade fails the tag.
16
+ */
17
+ export const POD_BUNDLE_V1 = 'solidus.podbundle.v1';
18
+ function subtle() {
19
+ const c = globalThis.crypto;
20
+ if (!c?.subtle) {
21
+ throw new Error('WebCrypto SubtleCrypto is unavailable in this runtime');
22
+ }
23
+ return c.subtle;
24
+ }
25
+ function assertKey(key) {
26
+ if (key.length !== 32) {
27
+ throw new Error(`pod wrap key must be 32 bytes (AES-256), got ${key.length}`);
28
+ }
29
+ }
30
+ function toHex(bytes) {
31
+ let out = '';
32
+ for (let i = 0; i < bytes.length; i++)
33
+ out += bytes[i].toString(16).padStart(2, '0');
34
+ return out;
35
+ }
36
+ function fromHex(hex) {
37
+ const bytes = new Uint8Array(hex.length / 2);
38
+ for (let i = 0; i < bytes.length; i++) {
39
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
40
+ }
41
+ return bytes;
42
+ }
43
+ /** Seal a plaintext bundle under `podWrapKey`. Fresh random IV per call. */
44
+ export async function sealCredentialBundle(podWrapKey, plaintext) {
45
+ assertKey(podWrapKey);
46
+ const s = subtle();
47
+ const iv = globalThis.crypto.getRandomValues(new Uint8Array(12));
48
+ const key = await s.importKey('raw', ab(podWrapKey), 'AES-GCM', false, ['encrypt']);
49
+ const ct = new Uint8Array(await s.encrypt({ name: 'AES-GCM', iv: ab(iv), additionalData: ab(aad()) }, key, ab(plaintext)));
50
+ return { v: POD_BUNDLE_V1, iv: toHex(iv), ct: toHex(ct) };
51
+ }
52
+ /** Open a sealed bundle. Throws on wrong key, tampered ciphertext, or version mismatch. */
53
+ export async function openCredentialBundle(podWrapKey, sealed) {
54
+ assertKey(podWrapKey);
55
+ if (sealed.v !== POD_BUNDLE_V1) {
56
+ throw new Error(`unsupported sealed-bundle version ${sealed.v}`);
57
+ }
58
+ const s = subtle();
59
+ const key = await s.importKey('raw', ab(podWrapKey), 'AES-GCM', false, ['decrypt']);
60
+ const pt = await s.decrypt({ name: 'AES-GCM', iv: ab(fromHex(sealed.iv)), additionalData: ab(aad()) }, key, ab(fromHex(sealed.ct)));
61
+ return new Uint8Array(pt);
62
+ }
63
+ function aad() {
64
+ return new TextEncoder().encode(POD_BUNDLE_V1);
65
+ }
66
+ // WebCrypto wants a plain-ArrayBuffer-backed source; copy into a fresh
67
+ // ArrayBuffer so a SharedArrayBuffer-backed input can't leak in and the
68
+ // current lib.dom `ArrayBufferView<ArrayBuffer>` constraint is satisfied.
69
+ function ab(bytes) {
70
+ const out = new ArrayBuffer(bytes.byteLength);
71
+ new Uint8Array(out).set(bytes);
72
+ return out;
73
+ }
74
+ //# sourceMappingURL=podbundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podbundle.js","sourceRoot":"","sources":["../../src/chain/podbundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { SealedBundle } from './podbundle.js';
2
+ /**
3
+ * Deterministic opaque resource locator for the pod bundle:
4
+ * `hex(HKDF-SHA-512(seed64, ∅, "solidus.pod.bundlelocator.v1", 16))`.
5
+ * Seed-bound (device B finds it) but non-correlatable (16 opaque bytes).
6
+ */
7
+ export declare function derivePodBundleLocator(seed64: Uint8Array): string;
8
+ /** Abstract pod resource store — put/get a sealed bundle by locator. */
9
+ export interface PodBundleClient {
10
+ put(locator: string, sealed: SealedBundle): Promise<void>;
11
+ get(locator: string): Promise<SealedBundle | null>;
12
+ }
13
+ /** Seal-and-store: write the sealed bundle to the seed's pod locator. */
14
+ export declare function syncBundleToPod(client: PodBundleClient, seed64: Uint8Array, sealed: SealedBundle): Promise<void>;
15
+ /** Fetch the sealed bundle for a seed (null if none synced). Caller decrypts. */
16
+ export declare function restoreBundleFromPod(client: PodBundleClient, seed64: Uint8Array): Promise<SealedBundle | null>;
17
+ export declare function createInMemoryPodBundleClient(): PodBundleClient;
18
+ /**
19
+ * A pod bundle client backed by an HTTP Solid resource:
20
+ * `PUT/GET {baseUrl}/credentials/kyc/{locator}.bundle.enc`. `authToken` is the
21
+ * wallet's Solid access token; `fetchImpl` is injectable for tests. A 404 on
22
+ * GET means "no bundle yet" → null (not an error). Only the sealed (opaque)
23
+ * bytes ever leave the device.
24
+ */
25
+ export declare function createHttpPodBundleClient(opts: {
26
+ baseUrl: string;
27
+ authToken?: string;
28
+ fetchImpl?: typeof fetch;
29
+ }): PodBundleClient;
30
+ //# sourceMappingURL=podsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podsync.d.ts","sourceRoot":"","sources":["../../src/chain/podsync.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAiBlD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAGjE;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;CACnD;AAED,yEAAyE;AACzE,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,iFAAiF;AACjF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAE9B;AAMD,wBAAgB,6BAA6B,IAAI,eAAe,CAU/D;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB,GAAG,eAAe,CA0BlB"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Pod multi-device sync (privacy rebuild §5.6).
3
+ *
4
+ * The single AES-256-GCM bundle sealed under `pod_wrap_key` (see
5
+ * `podbundle.ts`) doubles as multi-device continuity: a fresh device with the
6
+ * SAME seed re-derives both the wrap key AND a deterministic resource locator,
7
+ * pulls the sealed resource from the pod, and decrypts it — reconstructing a
8
+ * working credential with no prior local state.
9
+ *
10
+ * The locator is HKDF-derived from the seed so device B knows where to look
11
+ * without any prior coordination, yet it is an opaque 16-byte id — not a DID,
12
+ * not correlatable to identity. A different seed derives a different locator
13
+ * and cannot even find (let alone read) the resource.
14
+ *
15
+ * NON-BLOCKING (§5.6): nothing here is on the core unlinkability path. Proof
16
+ * generation is pure local crypto over the bundle and never calls the pod, so
17
+ * an offline/unhealthy Solid server cannot break a presentation. Sync is a
18
+ * convenience layer on top.
19
+ */
20
+ import { hkdf } from '@noble/hashes/hkdf';
21
+ import { sha512 } from '@noble/hashes/sha512';
22
+ import { POD_BUNDLE_V1 } from './podbundle.js';
23
+ const LOCATOR_INFO_TAG = 'solidus.pod.bundlelocator.v1';
24
+ function assertSeed64(seed64) {
25
+ if (seed64.length !== 64) {
26
+ throw new Error(`seed must be the 64-byte BIP-39 seed, got ${seed64.length} bytes`);
27
+ }
28
+ }
29
+ function toHex(bytes) {
30
+ let out = '';
31
+ for (let i = 0; i < bytes.length; i++)
32
+ out += bytes[i].toString(16).padStart(2, '0');
33
+ return out;
34
+ }
35
+ /**
36
+ * Deterministic opaque resource locator for the pod bundle:
37
+ * `hex(HKDF-SHA-512(seed64, ∅, "solidus.pod.bundlelocator.v1", 16))`.
38
+ * Seed-bound (device B finds it) but non-correlatable (16 opaque bytes).
39
+ */
40
+ export function derivePodBundleLocator(seed64) {
41
+ assertSeed64(seed64);
42
+ return toHex(hkdf(sha512, seed64, new Uint8Array(0), new TextEncoder().encode(LOCATOR_INFO_TAG), 16));
43
+ }
44
+ /** Seal-and-store: write the sealed bundle to the seed's pod locator. */
45
+ export async function syncBundleToPod(client, seed64, sealed) {
46
+ await client.put(derivePodBundleLocator(seed64), sealed);
47
+ }
48
+ /** Fetch the sealed bundle for a seed (null if none synced). Caller decrypts. */
49
+ export async function restoreBundleFromPod(client, seed64) {
50
+ return client.get(derivePodBundleLocator(seed64));
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // In-memory client — tests + single-process use.
54
+ // ---------------------------------------------------------------------------
55
+ export function createInMemoryPodBundleClient() {
56
+ const store = new Map();
57
+ return {
58
+ async put(locator, sealed) {
59
+ store.set(locator, sealed);
60
+ },
61
+ async get(locator) {
62
+ return store.get(locator) ?? null;
63
+ },
64
+ };
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // HTTP (Solid resource) client.
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * A pod bundle client backed by an HTTP Solid resource:
71
+ * `PUT/GET {baseUrl}/credentials/kyc/{locator}.bundle.enc`. `authToken` is the
72
+ * wallet's Solid access token; `fetchImpl` is injectable for tests. A 404 on
73
+ * GET means "no bundle yet" → null (not an error). Only the sealed (opaque)
74
+ * bytes ever leave the device.
75
+ */
76
+ export function createHttpPodBundleClient(opts) {
77
+ const doFetch = opts.fetchImpl ?? globalThis.fetch;
78
+ if (!doFetch)
79
+ throw new Error('no fetch implementation available');
80
+ const base = opts.baseUrl.replace(/\/$/, '');
81
+ const url = (locator) => `${base}/credentials/kyc/${locator}.bundle.enc`;
82
+ const headers = (extra = {}) => opts.authToken ? { ...extra, authorization: `Bearer ${opts.authToken}` } : extra;
83
+ return {
84
+ async put(locator, sealed) {
85
+ const res = await doFetch(url(locator), {
86
+ method: 'PUT',
87
+ headers: headers({ 'content-type': 'application/json' }),
88
+ body: JSON.stringify(sealed),
89
+ });
90
+ if (!res.ok)
91
+ throw new Error(`pod PUT failed: ${res.status}`);
92
+ },
93
+ async get(locator) {
94
+ const res = await doFetch(url(locator), { method: 'GET', headers: headers() });
95
+ if (res.status === 404)
96
+ return null;
97
+ if (!res.ok)
98
+ throw new Error(`pod GET failed: ${res.status}`);
99
+ const body = (await res.json());
100
+ if (body?.v !== POD_BUNDLE_V1)
101
+ throw new Error('pod resource is not a valid sealed bundle');
102
+ return body;
103
+ },
104
+ };
105
+ }
106
+ //# sourceMappingURL=podsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"podsync.js","sourceRoot":"","sources":["../../src/chain/podsync.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,25 @@ export interface RpcReceipt {
32
32
  export declare function pollReceipt(rpc: {
33
33
  call<T>(method: string, params: unknown[]): Promise<T>;
34
34
  }, txHash: string): Promise<RpcReceipt>;
35
+ /**
36
+ * Fetch the signer's nonce, build, submit, and confirm a one-shot
37
+ * transaction — retrying when the receipt reports `invalid nonce`.
38
+ *
39
+ * `solidus_getNonce` can lag the previous transaction's receipt by a
40
+ * beat, so an immediate follow-up tx from the same signer races it
41
+ * (observed live 2026-07-13: create → deactivate failed with
42
+ * "invalid nonce: expected 1, got 0"). The failed receipt names the
43
+ * expected nonce, so the retry is deterministic — no sleep-and-hope.
44
+ *
45
+ * Exactly ONE retry, on purpose: the observed race is a one-beat lag,
46
+ * and a caller that abandons this promise (e.g. behind a 5s
47
+ * withChainTimeout) cannot cancel it — every extra attempt widens the
48
+ * window in which an abandoned loop and a caller-level retry both land
49
+ * a non-idempotent payload (duplicate CredentialIssue) on chain.
50
+ */
51
+ export declare function submitWithNonceRetry(rpc: {
52
+ call<T>(method: string, params: unknown[]): Promise<T>;
53
+ }, signerKey: string, payload: unknown, label: string): Promise<RpcReceipt>;
35
54
  /**
36
55
  * Build and sign a transaction for the Solidus chain.
37
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/chain/transaction.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAA;CACxD;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE;IAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,EAC/D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAIlE;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/chain/transaction.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAA;CACxD;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE;IAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,EAC/D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE;IAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,EAC/D,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAcrB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAIlE;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD"}
@@ -35,6 +35,38 @@ export async function pollReceipt(rpc, txHash) {
35
35
  }
36
36
  throw new Error(`Transaction ${txHash} not confirmed after 10 seconds`);
37
37
  }
38
+ /**
39
+ * Fetch the signer's nonce, build, submit, and confirm a one-shot
40
+ * transaction — retrying when the receipt reports `invalid nonce`.
41
+ *
42
+ * `solidus_getNonce` can lag the previous transaction's receipt by a
43
+ * beat, so an immediate follow-up tx from the same signer races it
44
+ * (observed live 2026-07-13: create → deactivate failed with
45
+ * "invalid nonce: expected 1, got 0"). The failed receipt names the
46
+ * expected nonce, so the retry is deterministic — no sleep-and-hope.
47
+ *
48
+ * Exactly ONE retry, on purpose: the observed race is a one-beat lag,
49
+ * and a caller that abandons this promise (e.g. behind a 5s
50
+ * withChainTimeout) cannot cancel it — every extra attempt widens the
51
+ * window in which an abandoned loop and a caller-level retry both land
52
+ * a non-idempotent payload (duplicate CredentialIssue) on chain.
53
+ */
54
+ export async function submitWithNonceRetry(rpc, signerKey, payload, label) {
55
+ const address = await getAddressFromKey(signerKey);
56
+ let nonce = await rpc.call('solidus_getNonce', [address]);
57
+ for (let attempt = 0;; attempt++) {
58
+ const tx = await buildTransaction(signerKey, nonce, payload);
59
+ const txHash = await rpc.call('solidus_sendTransaction', [JSON.stringify(tx)]);
60
+ const receipt = await pollReceipt(rpc, txHash);
61
+ if (receipt.status.startsWith('success'))
62
+ return receipt;
63
+ const expected = /invalid nonce: expected (\d+)/.exec(receipt.status);
64
+ if (expected === null || attempt >= 1) {
65
+ throw new Error(`${label} failed: ${receipt.status}`);
66
+ }
67
+ nonce = Number(expected[1]);
68
+ }
69
+ }
38
70
  /**
39
71
  * Build and sign a transaction for the Solidus chain.
40
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/chain/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/chain/transaction.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,12 @@ import type { DID, DIDDocument, VerifiableCredential, IssueCredentialParams, Ver
2
2
  import type { ChainTransaction } from './chain/transaction.js';
3
3
  export type { ChainTransaction } from './chain/transaction.js';
4
4
  export { addressFromPublicKey, getAddressFromKey } from './chain/transaction.js';
5
+ export { deriveValueKeyFromSeed, derivePairwiseKeyFromSeed, derivePodWrapKey, derivePidFromSeed, pairwiseDid, scanValueAccounts, } from './chain/derivation.js';
6
+ export type { DerivedKeypair, ValueAccount } from './chain/derivation.js';
7
+ export { sealCredentialBundle, openCredentialBundle, POD_BUNDLE_V1, } from './chain/podbundle.js';
8
+ export type { SealedBundle } from './chain/podbundle.js';
9
+ export { derivePodBundleLocator, syncBundleToPod, restoreBundleFromPod, createInMemoryPodBundleClient, createHttpPodBundleClient, } from './chain/podsync.js';
10
+ export type { PodBundleClient } from './chain/podsync.js';
5
11
  import type { BbsDisclosedMessage, BbsCredentialProofResult } from './chain/bbs.js';
6
12
  import type { ChainInfo } from './chain/chainInfo.js';
7
13
  export type { DID, DIDDocument, VerifiableCredential, IssueCredentialParams, VerificationResult, AuthResult, };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,12 @@ import { credentialsIssue, credentialsVerify, credentialsRevoke, credentialsQuer
4
4
  import { getSql } from './stub/db.js';
5
5
  import { createChainClient } from './chain/index.js';
6
6
  export { addressFromPublicKey, getAddressFromKey } from './chain/transaction.js';
7
+ // One-seed HKDF key hierarchy (privacy rebuild §5.1) — value/pairwise/pod-wrap/pid.
8
+ export { deriveValueKeyFromSeed, derivePairwiseKeyFromSeed, derivePodWrapKey, derivePidFromSeed, pairwiseDid, scanValueAccounts, } from './chain/derivation.js';
9
+ // Pod credential-bundle encryption (privacy rebuild §5.6) — AES-256-GCM at rest.
10
+ export { sealCredentialBundle, openCredentialBundle, POD_BUNDLE_V1, } from './chain/podbundle.js';
11
+ // Pod multi-device sync (privacy rebuild §5.6) — deterministic locator + client.
12
+ export { derivePodBundleLocator, syncBundleToPod, restoreBundleFromPod, createInMemoryPodBundleClient, createHttpPodBundleClient, } from './chain/podsync.js';
7
13
  export { runMigrations, closeConnection } from './stub/db.js';
8
14
  export { generateKeypair, decodePublicKey } from './stub/crypto.js';
9
15
  export { createChainClient } from './chain/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@solidus-network/sdk",
3
- "version": "0.6.0",
4
- "description": "Solidus Network SDK — DID resolution, verifiable credential issuance and verification, SD-JWT VC (EUDI-compatible), and on-chain queries via JSON-RPC.",
3
+ "version": "0.6.2",
4
+ "description": "Solidus Network SDK — DID resolution, verifiable credential issuance and verification, and on-chain queries via JSON-RPC.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -9,28 +9,49 @@
9
9
  ".": {
10
10
  "import": "./dist/index.js",
11
11
  "types": "./dist/index.d.ts"
12
+ },
13
+ "./sdjwt": {
14
+ "import": "./dist/sdjwt/index.js",
15
+ "types": "./dist/sdjwt/index.d.ts"
12
16
  }
13
17
  },
14
- "files": ["dist", "README.md", "LICENSE"],
18
+ "files": [
19
+ "dist",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
15
23
  "dependencies": {
16
24
  "@noble/ed25519": "^2.1.0",
17
25
  "@noble/hashes": "^1.5.0",
26
+ "@sd-jwt/jwt-status-list": "^0.19.0",
18
27
  "@sd-jwt/sd-jwt-vc": "^0.19.0",
19
28
  "@sd-jwt/types": "^0.19.0",
20
- "@solidus-network/auth": "0.6.0",
21
- "@solidus-network/types": "0.6.0",
29
+ "@solidus-network/auth": "0.6.2",
30
+ "@solidus-network/types": "0.6.2",
22
31
  "bs58": "^6.0.0",
23
32
  "postgres": "^3.4.4"
24
33
  },
25
- "keywords": ["solidus", "did", "verifiable-credentials", "vc", "sd-jwt", "sd-jwt-vc", "eudi", "blockchain", "decentralized-identity", "sdk"],
34
+ "keywords": [
35
+ "solidus",
36
+ "did",
37
+ "verifiable-credentials",
38
+ "vc",
39
+ "blockchain",
40
+ "decentralized-identity",
41
+ "sdk"
42
+ ],
26
43
  "author": "Solidus Network (https://solidus.network)",
27
44
  "license": "Apache-2.0",
28
45
  "homepage": "https://solidus.network",
29
- "bugs": { "url": "https://github.com/solidusnetwork/sdk/issues" },
46
+ "bugs": {
47
+ "url": "https://github.com/solidusnetwork/sdk/issues"
48
+ },
30
49
  "repository": {
31
50
  "type": "git",
32
51
  "url": "git+https://github.com/solidusnetwork/sdk.git",
33
52
  "directory": "sdk"
34
53
  },
35
- "publishConfig": { "access": "public" }
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
36
57
  }