@totemsdk/core 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -5
  3. package/dist/Streamable.js +54 -31
  4. package/dist/adapters/index.js +18 -8
  5. package/dist/adapters/types.js +19 -8
  6. package/dist/binio.js +5 -1
  7. package/dist/bip39.js +24 -14
  8. package/dist/derive.js +11 -7
  9. package/dist/index.js +130 -22
  10. package/dist/javaStreamables.js +49 -30
  11. package/dist/lease/LeaseMonitor.js +7 -3
  12. package/dist/lease/LeaseStore.js +7 -3
  13. package/dist/lease/WatermarkStore.js +7 -3
  14. package/dist/lease/index.js +13 -4
  15. package/dist/lease-client.js +8 -3
  16. package/dist/minima32.js +22 -13
  17. package/dist/minimaWireSerializer.js +20 -14
  18. package/dist/mmr.js +35 -23
  19. package/dist/mx.js +10 -1
  20. package/dist/params.js +9 -5
  21. package/dist/script.js +12 -7
  22. package/dist/scripts/contract-helpers.js +37 -26
  23. package/dist/scripts/dapp-types.js +11 -6
  24. package/dist/scripts/index.js +38 -4
  25. package/dist/scripts/types.js +26 -12
  26. package/dist/scripts/witness-serializer.js +48 -30
  27. package/dist/transaction.js +55 -46
  28. package/dist/treekey.js +74 -58
  29. package/dist/tx/TransactionLifecycle.js +11 -5
  30. package/dist/tx/TransactionReceiptStore.js +7 -3
  31. package/dist/tx/TransactionService.js +14 -10
  32. package/dist/tx/index.js +11 -3
  33. package/dist/tx/types.js +2 -1
  34. package/dist/util.js +5 -1
  35. package/dist/utils.js +12 -5
  36. package/dist/verify.js +36 -25
  37. package/dist/version.js +5 -2
  38. package/dist/wots.d.ts +2 -2
  39. package/dist/wots.js +94 -64
  40. package/package.json +50 -6
  41. package/src/Streamable.d.ts +0 -268
  42. package/src/Streamable.js +0 -416
  43. package/src/Streamable.ts +0 -567
  44. package/src/__tests__/Streamable.parity.test.ts +0 -422
  45. package/src/__tests__/perAddressDerivation.parity.test.ts +0 -152
  46. package/src/__tests__/roottree-prepare.test.ts +0 -101
  47. package/src/__tests__/wots-parity.test.ts +0 -289
  48. package/src/adapters/index.d.ts +0 -190
  49. package/src/adapters/index.js +0 -117
  50. package/src/adapters/index.ts +0 -301
  51. package/src/adapters/types.ts +0 -235
  52. package/src/addr.oracle.test.ts +0 -25
  53. package/src/address.test.ts +0 -55
  54. package/src/binio.ts +0 -21
  55. package/src/bip39.d.ts +0 -91
  56. package/src/bip39.js +0 -427
  57. package/src/bip39.ts +0 -432
  58. package/src/derive.d.ts +0 -2
  59. package/src/derive.js +0 -13
  60. package/src/derive.ts +0 -11
  61. package/src/index.d.ts +0 -26
  62. package/src/index.js +0 -128
  63. package/src/index.test.ts +0 -5
  64. package/src/index.ts +0 -221
  65. package/src/javaStreamables.d.ts +0 -233
  66. package/src/javaStreamables.js +0 -332
  67. package/src/javaStreamables.ts +0 -403
  68. package/src/lease/LeaseMonitor.d.ts +0 -44
  69. package/src/lease/LeaseMonitor.js +0 -111
  70. package/src/lease/LeaseMonitor.ts +0 -157
  71. package/src/lease/LeaseStore.d.ts +0 -57
  72. package/src/lease/LeaseStore.js +0 -148
  73. package/src/lease/LeaseStore.ts +0 -203
  74. package/src/lease/WatermarkStore.d.ts +0 -61
  75. package/src/lease/WatermarkStore.js +0 -206
  76. package/src/lease/WatermarkStore.ts +0 -270
  77. package/src/lease/index.d.ts +0 -14
  78. package/src/lease/index.js +0 -22
  79. package/src/lease/index.ts +0 -41
  80. package/src/lease-client.d.ts +0 -31
  81. package/src/lease-client.js +0 -44
  82. package/src/lease-client.ts +0 -69
  83. package/src/minima32.d.ts +0 -10
  84. package/src/minima32.js +0 -113
  85. package/src/minima32.test.ts +0 -11
  86. package/src/minima32.ts +0 -127
  87. package/src/minimaWireSerializer.d.ts +0 -189
  88. package/src/minimaWireSerializer.js +0 -311
  89. package/src/minimaWireSerializer.test.ts +0 -466
  90. package/src/minimaWireSerializer.ts +0 -117
  91. package/src/mmr.d.ts +0 -157
  92. package/src/mmr.js +0 -340
  93. package/src/mmr.oracle.test.ts +0 -28
  94. package/src/mmr.ts +0 -429
  95. package/src/mx.test.ts +0 -25
  96. package/src/mx.ts +0 -1
  97. package/src/params.d.ts +0 -29
  98. package/src/params.d.ts.map +0 -1
  99. package/src/params.js +0 -20
  100. package/src/params.js.map +0 -1
  101. package/src/params.ts +0 -44
  102. package/src/script.d.ts +0 -7
  103. package/src/script.js +0 -27
  104. package/src/script.ts +0 -24
  105. package/src/scripts/contract-helpers.ts +0 -609
  106. package/src/scripts/dapp-types.ts +0 -240
  107. package/src/scripts/index.ts +0 -22
  108. package/src/scripts/types.d.ts +0 -81
  109. package/src/scripts/types.js +0 -145
  110. package/src/scripts/types.ts +0 -247
  111. package/src/scripts/witness-serializer.ts +0 -384
  112. package/src/transaction.ts +0 -430
  113. package/src/treekey.d.ts +0 -383
  114. package/src/treekey.js +0 -774
  115. package/src/treekey.parity.test.ts +0 -459
  116. package/src/treekey.ts +0 -975
  117. package/src/tx/TransactionLifecycle.d.ts +0 -55
  118. package/src/tx/TransactionLifecycle.js +0 -188
  119. package/src/tx/TransactionLifecycle.ts +0 -280
  120. package/src/tx/TransactionReceiptStore.d.ts +0 -36
  121. package/src/tx/TransactionReceiptStore.js +0 -89
  122. package/src/tx/TransactionReceiptStore.ts +0 -112
  123. package/src/tx/TransactionService.d.ts +0 -31
  124. package/src/tx/TransactionService.js +0 -140
  125. package/src/tx/TransactionService.ts +0 -252
  126. package/src/tx/index.d.ts +0 -13
  127. package/src/tx/index.js +0 -20
  128. package/src/tx/index.ts +0 -44
  129. package/src/tx/types.d.ts +0 -80
  130. package/src/tx/types.js +0 -6
  131. package/src/tx/types.ts +0 -130
  132. package/src/util.d.ts +0 -1
  133. package/src/util.js +0 -5
  134. package/src/util.ts +0 -1
  135. package/src/utils.d.ts +0 -8
  136. package/src/utils.js +0 -42
  137. package/src/utils.ts +0 -38
  138. package/src/verify.ts +0 -210
  139. package/src/version.ts +0 -13
  140. package/src/wots.d.ts +0 -224
  141. package/src/wots.d.ts.map +0 -1
  142. package/src/wots.js +0 -565
  143. package/src/wots.js.map +0 -1
  144. package/src/wots.ts +0 -651
  145. package/test-vectors.json +0 -45
package/src/wots.d.ts DELETED
@@ -1,224 +0,0 @@
1
- /**
2
- * WOTS Implementation - BouncyCastle Compatible
3
- *
4
- * This implementation matches BouncyCastle's WinternitzOTSignature exactly,
5
- * which is used by Minima's Winternitz.java class.
6
- *
7
- * Key differences from standard WOTS/WOTS+:
8
- * - w=8 means 8 BITS per digit (not base-8), so each byte is one digit (0-255)
9
- * - Stateful PRNG (GMSSRandom) for chain seed derivation, not stateless H(i||seed)
10
- * - 34 total chains (32 message + 2 checksum), not 89
11
- * - Each chain hashed up to 255 times (2^8 - 1)
12
- *
13
- * Source: org.bouncycastle.pqc.crypto.gmss.util.{WinternitzOTSignature, WinternitzOTSVerify, GMSSRandom}
14
- */
15
- import { ParamSet } from "./params";
16
- import type { LoggerAdapter } from "./adapters";
17
- /**
18
- * Enable WOTS debug logging with a custom logger
19
- * Use this for parity testing to capture all intermediate values
20
- *
21
- * WARNING: Debug logging outputs sensitive cryptographic material including
22
- * private key chains and seeds. NEVER enable in production builds.
23
- * This is intended for development/testing parity verification only.
24
- */
25
- export declare function setWotsLogger(logger: LoggerAdapter): void;
26
- /**
27
- * Disable WOTS debug logging
28
- */
29
- export declare function disableWotsLogger(): void;
30
- /**
31
- * Check if WOTS debug logging is enabled
32
- */
33
- export declare function isWotsDebugEnabled(): boolean;
34
- export declare const F: (x: Uint8Array) => Uint8Array<ArrayBufferLike>;
35
- export declare const hex: (u: Uint8Array) => string;
36
- export declare const fromHex: (h: string) => Uint8Array<ArrayBuffer>;
37
- export declare const concatBytes: (...arrs: Uint8Array[]) => Uint8Array<ArrayBuffer>;
38
- export declare const u16be: (n: number) => Uint8Array<ArrayBuffer>;
39
- export declare const u32be: (n: number) => Uint8Array<ArrayBuffer>;
40
- export declare function assert32(u: Uint8Array, label?: string): void;
41
- export declare const h: (x: Uint8Array) => Uint8Array<ArrayBufferLike>;
42
- /**
43
- * GMSSRandom - BouncyCastle's stateful PRNG for WOTS chain seed derivation
44
- *
45
- * Algorithm from GMSSRandom.java:
46
- * rand = H(state)
47
- * state = state + rand + 1 (byte-wise addition with carry)
48
- * return rand
49
- *
50
- * The state is MUTATED in place after each call.
51
- */
52
- export declare class GMSSRandom {
53
- /**
54
- * Generate next random value and update state
55
- *
56
- * @param state - 32-byte state array (MUTATED in place)
57
- * @returns 32-byte random value
58
- */
59
- static nextSeed(state: Uint8Array): Uint8Array;
60
- /**
61
- * Add two byte arrays: a = a + b (little-endian, with carry)
62
- * Matches GMSSRandom.addByteArrays()
63
- */
64
- private static addByteArrays;
65
- /**
66
- * Add one to byte array: a = a + 1 (little-endian, with carry)
67
- * Matches GMSSRandom.addOne()
68
- */
69
- private static addOne;
70
- }
71
- /**
72
- * getLog - Calculate ceil(log2(x))
73
- *
74
- * Matches WinternitzOTSignature.getLog():
75
- * int log = 1;
76
- * int i = 2;
77
- * while (i < intValue) { i <<= 1; log++; }
78
- * return log;
79
- */
80
- export declare function getLog(intValue: number): number;
81
- /**
82
- * Expand master seed into L private key chains using GMSSRandom
83
- *
84
- * Matches WinternitzOTSignature constructor:
85
- * byte[] dummy = new byte[mdsize];
86
- * System.arraycopy(seed0, 0, dummy, 0, dummy.length);
87
- * for (int i = 0; i < keysize; i++) {
88
- * privateKeyOTS[i] = gmssRandom.nextSeed(dummy);
89
- * }
90
- */
91
- export declare function expandPrivateKey(seed: Uint8Array, ps?: ParamSet): Uint8Array[];
92
- /**
93
- * Convert message hash to Winternitz digits with checksum
94
- *
95
- * For w=8 (8 bits per digit), since 8 % 8 == 0:
96
- * - Each byte of the hash IS one digit (0-255)
97
- * - messagesize = 32 digits
98
- * - checksum = (messagesize << w) - sum = 8192 - sum
99
- * - checksumsize = 14 bits, extracted as 2 digits
100
- *
101
- * Matches WinternitzOTSignature.getSignature() for w=8 case
102
- */
103
- export declare function toWinternitzDigits(hash32: Uint8Array, ps?: ParamSet): {
104
- digits: number[];
105
- checksumDigits: number[];
106
- total: number;
107
- };
108
- /**
109
- * Decompose digest into base-w digits + checksum
110
- * Returns flat array of all L digits
111
- */
112
- export declare function baseWWithChecksum(msgHash: Uint8Array, paramSet?: ParamSet): number[];
113
- /**
114
- * Hash a value k times
115
- *
116
- * Matches WinternitzOTSignature.hashPrivateKeyBlock():
117
- * - If rounds < 1: return input unchanged
118
- * - Otherwise: hash `rounds` times
119
- */
120
- export declare function hashChain(x: Uint8Array, rounds: number): Uint8Array;
121
- export type WotsKeypair = {
122
- seed: Uint8Array;
123
- index: number;
124
- pk: Uint8Array;
125
- };
126
- /**
127
- * Derive unique seed for a specific key index
128
- *
129
- * DEPRECATED: Use deriveChainSeedJava for Java parity.
130
- * This function is preserved for backward compatibility only.
131
- *
132
- * The correct derivation matching Minima's TreeKeyNode.java:
133
- * MiniData seed = Crypto.getInstance().hashAllObjects(new MiniNumber(i), zPrivateSeed);
134
- *
135
- * This old implementation used H(seed || u32be(i)) which is NOT Java compatible.
136
- * @deprecated Use deriveChainSeedJava from javaStreamables.ts
137
- */
138
- export declare function deriveIndexedSeed(seed: Uint8Array, keyIndex: number): Uint8Array;
139
- /**
140
- * Derive WOTS public key digest from seed and key index
141
- *
142
- * The key index is mixed into the seed first (deriveIndexedSeed),
143
- * then expanded using GMSSRandom to get unique chain seeds.
144
- *
145
- * Matches WinternitzOTSignature.getPublicKey():
146
- * int rounds = (1 << w) - 1; // 255 for w=8
147
- * for (int i = 0; i < keysize; i++) {
148
- * hashPrivateKeyBlock(i, rounds, buf, pos);
149
- * }
150
- * return H(buf);
151
- */
152
- export declare function derivePKdigest(seed: Uint8Array, i: number, ps?: ParamSet): Uint8Array;
153
- /**
154
- * Derive full WOTS public key (L × 32 bytes) without final hash
155
- *
156
- * Returns the concatenation of all chain tops BEFORE hashing.
157
- * Required by Minima's SignatureProof which expects the full public key.
158
- */
159
- export declare function deriveFullPublicKey(seed: Uint8Array, i: number, ps?: ParamSet): Uint8Array;
160
- export declare function wotsKeypairFromSeed(seed: Uint8Array, index: number, paramSet?: ParamSet): WotsKeypair;
161
- export type WotsSignature = {
162
- index: number;
163
- w: number;
164
- sig: Uint8Array[];
165
- };
166
- /**
167
- * Sign a message hash using WOTS
168
- *
169
- * Matches WinternitzOTSignature.getSignature() for w=8:
170
- * for each digit d[i]:
171
- * sig[i] = hash(privateKey[i], d[i] times)
172
- *
173
- * @returns Flat signature (L × 32 = 1088 bytes)
174
- */
175
- export declare function wotsSign(seed: Uint8Array, i: number, msgHash: Uint8Array, ps?: ParamSet): Uint8Array;
176
- /**
177
- * Legacy wrapper returning structured signature
178
- */
179
- export declare function wotsSignLegacy(msgHash: Uint8Array, seed: Uint8Array, index: number, paramSet?: ParamSet): WotsSignature;
180
- /**
181
- * Recover public key from signature
182
- *
183
- * Matches WinternitzOTSVerify.Verify():
184
- * 1. Hash the message: hashedMsg = SHA3-256(message)
185
- * 2. for each digit d[i]:
186
- * top[i] = hash(sig[i], (255 - d[i]) times)
187
- * 3. return H(concat(tops))
188
- *
189
- * CRITICAL: This function hashes the message internally to match Java/BouncyCastle
190
- * Winternitz behavior. Both wotsSign and wotsPkFromSig hash internally for parity.
191
- */
192
- export declare function wotsPkFromSig(message: Uint8Array, signature: WotsSignature, paramSet?: ParamSet): Uint8Array;
193
- /**
194
- * Verify WOTS signature against a FULL 1088-byte public key
195
- *
196
- * Matches Java's Winternitz.verify():
197
- * 1. Recover FULL public key from signature using the msgHash (1088 bytes)
198
- * 2. Compare FULL reconstructed key to expected FULL public key
199
- *
200
- * CRITICAL: Java's Winternitz.verify() compares the FULL 1088-byte reconstructed
201
- * public key against the FULL 1088-byte stored public key, NOT a 32-byte digest!
202
- *
203
- * IMPORTANT: This function expects a PRE-HASHED message (32-byte digest),
204
- * just like wotsSign. The caller should hash the message before passing it.
205
- *
206
- * @param sig - The 1088-byte WOTS signature
207
- * @param msgHash - The pre-hashed message (32-byte digest)
208
- * @param pkFull - The FULL 1088-byte WOTS public key (L=34 × 32 bytes)
209
- * @param ps - WOTS parameter set (default: minima)
210
- */
211
- export declare function wotsVerify(sig: Uint8Array, message: Uint8Array, pkFull: Uint8Array, ps?: ParamSet): boolean;
212
- /**
213
- * Legacy verify function that accepts a 32-byte digest
214
- * @deprecated Use wotsVerify with full 1088-byte public key instead
215
- */
216
- export declare function wotsVerifyDigest(sig: Uint8Array, message: Uint8Array, pkDigest: Uint8Array, ps?: ParamSet): boolean;
217
- /**
218
- * Generate WOTS public key from seed (convenience wrapper)
219
- */
220
- export declare function wotsPublicKeyFromSeed(seed: Uint8Array, index?: number, paramSet?: ParamSet): Uint8Array;
221
- /**
222
- * @deprecated Use expandPrivateKey instead
223
- */
224
- export declare function prfChainSeed(seed: Uint8Array, i: number, j: number, _paramSet: ParamSet): Uint8Array;
package/src/wots.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"wots.d.ts","sourceRoot":"","sources":["wots.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGjD,eAAO,MAAM,CAAC,GAAI,GAAG,UAAU,gCAAgB,CAAC;AAChD,eAAO,MAAM,GAAG,GAAI,GAAG,UAAU,WAAmC,CAAC;AACrE,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,4BAA8D,CAAC;AAChG,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,UAAU,EAAE,4BAKhD,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,4BAAiD,CAAC;AACjF,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,4BAAoE,CAAC;AACpG,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,SAAQ,QAGpD;AAID,eAAO,MAAM,CAAC,MAlBO,UAAU,gCAkBb,CAAC;AAMnB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAKnG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2D/H;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAepF;AAeD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,UAAU,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,QAAwB,GAAG,UAAU,CAYpG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAiBrG;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,UAAU,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAE,QAAwB,GAAG,UAAU,CAcnH;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAQvH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAoB5G;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAE,QAAwB,GAAG,OAAO,CAe5H;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAG5H;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAI1G"}