ecash-lib 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +2 -0
  2. package/dist/consts.d.ts +20 -0
  3. package/dist/consts.d.ts.map +1 -1
  4. package/dist/consts.js +21 -1
  5. package/dist/consts.js.map +1 -1
  6. package/dist/ffi/ecash_lib_wasm_bg_browser.js +2597 -1753
  7. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  8. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +5 -1
  9. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  10. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +5 -1
  11. package/dist/ffi/ecash_lib_wasm_browser.d.ts +22 -1
  12. package/dist/ffi/ecash_lib_wasm_browser.js +115 -0
  13. package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +17 -0
  14. package/dist/ffi/ecash_lib_wasm_nodejs.js +116 -1
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +16 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/initBrowser.js +7 -2
  20. package/dist/initBrowser.js.map +1 -1
  21. package/dist/initNodeJs.js +6 -1
  22. package/dist/initNodeJs.js.map +1 -1
  23. package/dist/io/bytes.d.ts +2 -0
  24. package/dist/io/bytes.d.ts.map +1 -1
  25. package/dist/io/bytes.js +10 -2
  26. package/dist/io/bytes.js.map +1 -1
  27. package/dist/payment/action.d.ts +107 -0
  28. package/dist/payment/action.d.ts.map +1 -0
  29. package/dist/payment/action.js +13 -0
  30. package/dist/payment/action.js.map +1 -0
  31. package/dist/payment/asn1.d.ts +61 -0
  32. package/dist/payment/asn1.d.ts.map +1 -0
  33. package/dist/payment/asn1.js +322 -0
  34. package/dist/payment/asn1.js.map +1 -0
  35. package/dist/payment/index.d.ts +5 -0
  36. package/dist/payment/index.d.ts.map +1 -0
  37. package/dist/payment/index.js +39 -0
  38. package/dist/payment/index.js.map +1 -0
  39. package/dist/payment/output.d.ts +31 -0
  40. package/dist/payment/output.d.ts.map +1 -0
  41. package/dist/payment/output.js +6 -0
  42. package/dist/payment/output.js.map +1 -0
  43. package/dist/payment/x509.d.ts +17 -0
  44. package/dist/payment/x509.d.ts.map +1 -0
  45. package/dist/payment/x509.js +23 -0
  46. package/dist/payment/x509.js.map +1 -0
  47. package/dist/publicKeyCrypto.d.ts +25 -0
  48. package/dist/publicKeyCrypto.d.ts.map +1 -0
  49. package/dist/publicKeyCrypto.js +48 -0
  50. package/dist/publicKeyCrypto.js.map +1 -0
  51. package/dist/token/alp.d.ts +28 -0
  52. package/dist/token/alp.d.ts.map +1 -1
  53. package/dist/token/alp.js +25 -2
  54. package/dist/token/alp.js.map +1 -1
  55. package/dist/token/alp.parse.d.ts +73 -0
  56. package/dist/token/alp.parse.d.ts.map +1 -0
  57. package/dist/token/alp.parse.js +168 -0
  58. package/dist/token/alp.parse.js.map +1 -0
  59. package/dist/token/common.d.ts +31 -0
  60. package/dist/token/common.d.ts.map +1 -1
  61. package/dist/token/common.js +23 -5
  62. package/dist/token/common.js.map +1 -1
  63. package/dist/token/empp.d.ts +10 -0
  64. package/dist/token/empp.d.ts.map +1 -1
  65. package/dist/token/empp.js +38 -1
  66. package/dist/token/empp.js.map +1 -1
  67. package/dist/token/slp.d.ts +20 -0
  68. package/dist/token/slp.d.ts.map +1 -1
  69. package/dist/token/slp.js +17 -2
  70. package/dist/token/slp.js.map +1 -1
  71. package/dist/token/slp.parse.d.ts +91 -0
  72. package/dist/token/slp.parse.d.ts.map +1 -0
  73. package/dist/token/slp.parse.js +251 -0
  74. package/dist/token/slp.parse.js.map +1 -0
  75. package/package.json +2 -2
  76. package/src/consts.ts +20 -0
  77. package/src/ffi/ecash_lib_wasm_bg_browser.js +2597 -1753
  78. package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  79. package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +5 -1
  80. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  81. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +5 -1
  82. package/src/ffi/ecash_lib_wasm_browser.d.ts +22 -1
  83. package/src/ffi/ecash_lib_wasm_browser.js +115 -0
  84. package/src/ffi/ecash_lib_wasm_nodejs.d.ts +17 -0
  85. package/src/ffi/ecash_lib_wasm_nodejs.js +116 -1
  86. package/src/index.ts +3 -0
  87. package/src/initBrowser.ts +7 -3
  88. package/src/initNodeJs.ts +6 -1
  89. package/src/io/bytes.ts +11 -2
  90. package/src/payment/action.ts +123 -0
  91. package/src/payment/asn1.ts +440 -0
  92. package/src/payment/index.ts +11 -0
  93. package/src/payment/output.ts +37 -0
  94. package/src/payment/x509.ts +21 -0
  95. package/src/publicKeyCrypto.ts +62 -0
  96. package/src/token/alp.parse.ts +258 -0
  97. package/src/token/alp.ts +41 -1
  98. package/src/token/common.ts +43 -4
  99. package/src/token/empp.ts +42 -1
  100. package/src/token/slp.parse.ts +386 -0
  101. package/src/token/slp.ts +42 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/payment/action.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,MAAM;IACnB;;;;OAIG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACjB,aAAa,GACb,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GENESIS_TOKEN_ID_PLACEHOLDER = void 0;
7
+ /**
8
+ * We do not yet know the tokenId of a token involved in a GenesisAction
9
+ * We use a placeholder token to distinguish GENESIS PaymentTokenOutput[] from MINT
10
+ * PaymentTokenOutput[]; see payment/output.ts
11
+ */
12
+ exports.GENESIS_TOKEN_ID_PLACEHOLDER = 'GENESIS_TOKEN_ID_PLACEHOLDER';
13
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/payment/action.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAoDtE;;;;GAIG;AACU,QAAA,4BAA4B,GAAG,8BAA8B,CAAC"}
@@ -0,0 +1,61 @@
1
+ /** Identifier of a signature algorithm */
2
+ export interface AlgIdent {
3
+ /** OID of the algorithm */
4
+ oid: string;
5
+ /** OID of the params */
6
+ params: string | undefined;
7
+ }
8
+ /** Entry of an issuer/subject */
9
+ export interface Entry {
10
+ /** OID of the entry */
11
+ oid: string;
12
+ /** Value of the entry */
13
+ value: string;
14
+ }
15
+ /** Time range of the validity of the certificate */
16
+ export interface Validity {
17
+ /** Certificate is not valid before this UNIX timestamp */
18
+ notBefore: number;
19
+ /** Certificate is not valid after this UNIX timestamp */
20
+ notAfter: number;
21
+ }
22
+ /** Public key of a certificate */
23
+ export interface PubKey {
24
+ /** Signature algorithm of the public key */
25
+ alg: AlgIdent;
26
+ /** Bytes of the public key */
27
+ data: Uint8Array;
28
+ }
29
+ /** To-be-signed data of the certificate */
30
+ export interface TBS {
31
+ /** Version of the certificate data */
32
+ version: number | undefined;
33
+ /** Serial number of the certificate */
34
+ serial: Uint8Array;
35
+ /** Signature algorithm used by the certificate */
36
+ sigAlg: AlgIdent;
37
+ /** Fields of the issuer of the certificate */
38
+ issuer: Entry[];
39
+ /** Time range the certificate is valid */
40
+ validity: Validity;
41
+ /** Fields of the subject of the certificate */
42
+ subject: Entry[];
43
+ /** Public key of the certificate */
44
+ pubkey: PubKey;
45
+ /** Raw bytes of the data to be signed */
46
+ raw: Uint8Array;
47
+ }
48
+ export interface Cert {
49
+ /** Data to be signed by the signature */
50
+ tbs: TBS;
51
+ /** Algorithm used for the signature */
52
+ sigAlg: AlgIdent;
53
+ /** Signature signing `tbs` */
54
+ sig: Uint8Array;
55
+ /** Raw bytes of the certificate */
56
+ raw: Uint8Array;
57
+ }
58
+ /** Parse a ASN1 certificate from the given bytes */
59
+ export declare function parseCertRaw(rawCert: Uint8Array): Cert;
60
+ export declare function parseCertPem(pem: string): Cert;
61
+ //# sourceMappingURL=asn1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asn1.d.ts","sourceRoot":"","sources":["../../src/payment/asn1.ts"],"names":[],"mappings":"AAaA,0CAA0C;AAC1C,MAAM,WAAW,QAAQ;IACrB,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,iCAAiC;AACjC,MAAM,WAAW,KAAK;IAClB,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,QAAQ;IACrB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,kCAAkC;AAClC,MAAM,WAAW,MAAM;IACnB,4CAA4C;IAC5C,GAAG,EAAE,QAAQ,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,GAAG;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uCAAuC;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,kDAAkD;IAClD,MAAM,EAAE,QAAQ,CAAC;IACjB,8CAA8C;IAC9C,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,+CAA+C;IAC/C,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,GAAG,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,IAAI;IACjB,yCAAyC;IACzC,GAAG,EAAE,GAAG,CAAC;IACT,uCAAuC;IACvC,MAAM,EAAE,QAAQ,CAAC;IACjB,8BAA8B;IAC9B,GAAG,EAAE,UAAU,CAAC;IAChB,mCAAmC;IACnC,GAAG,EAAE,UAAU,CAAC;CACnB;AAuVD,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAStD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAU9C"}
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseCertPem = exports.parseCertRaw = void 0;
7
+ const str_js_1 = require("../io/str.js");
8
+ const bytes_js_1 = require("../io/bytes.js");
9
+ const TAG_VERSION = 0x00;
10
+ const TAG_INT = 0x02;
11
+ const TAG_BITSTR = 0x03;
12
+ const TAG_OCTSTR = 0x04;
13
+ const TAG_NULL = 0x05;
14
+ const TAG_OID = 0x06;
15
+ const TAG_UTF8STR = 0x0c;
16
+ const TAG_SEQ = 0x10;
17
+ const TAG_SET = 0x11;
18
+ const TAG_NUMSTR = 0x12;
19
+ const TAG_PRINSTR = 0x13;
20
+ const TAG_T61STR = 0x14;
21
+ const TAG_VIDEOSTR = 0x15;
22
+ const TAG_IA5STR = 0x16;
23
+ const TAG_UTCTIME = 0x17;
24
+ const TAG_GENTIME = 0x18;
25
+ const TAG_GRAPHSTR = 0x19;
26
+ const TAG_ISO646STR = 0x1a;
27
+ const TAG_GENSTR = 0x1b;
28
+ const TAG_UNISTR = 0x1c;
29
+ const TAG_CHARSTR = 0x1d;
30
+ const TAG_BMPSTR = 0x1e;
31
+ const REGEX_PEM_CERT = /-----BEGIN CERTIFICATE-----(.*?)-----END CERTIFICATE-----/s;
32
+ const REGEX_DIGITS = /\d+/;
33
+ function readSize(bytes, isPrimitive) {
34
+ let size = bytes.readU8();
35
+ // Indefinite form
36
+ if (!isPrimitive && size === 0x80) {
37
+ throw new Error('Indefinite size.');
38
+ }
39
+ // Definite form
40
+ if ((size & 0x80) === 0) {
41
+ // Short form
42
+ return size;
43
+ }
44
+ // Long form
45
+ const numBytes = size & 0x7f;
46
+ if (numBytes > 3) {
47
+ throw new Error('Length octet is too long.');
48
+ }
49
+ size = 0;
50
+ for (let i = 0; i < numBytes; i++) {
51
+ size <<= 8;
52
+ size |= bytes.readU8();
53
+ }
54
+ return size;
55
+ }
56
+ function readTag(bytes) {
57
+ let type = bytes.readU8();
58
+ const isPrimitive = (type & 0x20) === 0;
59
+ if ((type & 0x1f) === 0x1f) {
60
+ let oct = type;
61
+ type = 0;
62
+ while ((oct & 0x80) === 0x80) {
63
+ oct = bytes.readU8();
64
+ type <<= 7;
65
+ type |= oct & 0x7f;
66
+ }
67
+ }
68
+ else {
69
+ type &= 0x1f;
70
+ }
71
+ return {
72
+ type,
73
+ isPrimitive,
74
+ size: readSize(bytes, isPrimitive),
75
+ };
76
+ }
77
+ function readSeq(bytes) {
78
+ const tag = readTag(bytes);
79
+ if (tag.type !== TAG_SEQ) {
80
+ throw new Error(`Expected sequence type ${TAG_SEQ}, but got ${tag.type}`);
81
+ }
82
+ return bytes.readBytes(tag.size);
83
+ }
84
+ function alignBitstr(data) {
85
+ const padding = data[0];
86
+ const bits = (data.length - 1) * 8 - padding;
87
+ const buf = data.slice(1);
88
+ const shift = 8 - (bits % 8);
89
+ if (shift === 8 || buf.length === 0) {
90
+ return buf;
91
+ }
92
+ const out = Buffer.allocUnsafe(buf.length);
93
+ out[0] = buf[0] >>> shift;
94
+ for (let i = 1; i < buf.length; i++) {
95
+ out[i] = buf[i - 1] << (8 - shift);
96
+ out[i] |= buf[i] >>> shift;
97
+ }
98
+ return out;
99
+ }
100
+ function readBitstr(bytes) {
101
+ const tag = readTag(bytes);
102
+ if (tag.type !== TAG_BITSTR) {
103
+ throw new Error(`Expected sequence type ${TAG_BITSTR}, but got ${tag.type}`);
104
+ }
105
+ return alignBitstr(bytes.readBytes(tag.size));
106
+ }
107
+ function readString(bytes) {
108
+ const tag = readTag(bytes);
109
+ switch (tag.type) {
110
+ case TAG_BITSTR: {
111
+ return alignBitstr(bytes.readBytes(tag.size));
112
+ }
113
+ case TAG_OCTSTR:
114
+ case TAG_NUMSTR:
115
+ case TAG_PRINSTR:
116
+ case TAG_T61STR:
117
+ case TAG_VIDEOSTR:
118
+ case TAG_IA5STR:
119
+ case TAG_GRAPHSTR:
120
+ case TAG_UTF8STR:
121
+ case TAG_ISO646STR:
122
+ case TAG_GENSTR:
123
+ case TAG_UNISTR:
124
+ case TAG_CHARSTR:
125
+ case TAG_BMPSTR: {
126
+ return bytes.readBytes(tag.size);
127
+ }
128
+ default: {
129
+ throw new Error(`Expected string tag, got ${tag.type}`);
130
+ }
131
+ }
132
+ }
133
+ function readInt(bytes) {
134
+ const tag = readTag(bytes);
135
+ if (tag.type !== TAG_INT) {
136
+ throw new Error(`Expected integer type ${TAG_INT}, but got ${tag.type}`);
137
+ }
138
+ return bytes.readBytes(tag.size);
139
+ }
140
+ function bytesToBE(bytes) {
141
+ let num = 0;
142
+ for (const b of bytes) {
143
+ num <<= 8;
144
+ num |= b;
145
+ }
146
+ return num;
147
+ }
148
+ function readVersion(bytes) {
149
+ const startIdx = bytes.idx;
150
+ const tag = readTag(bytes);
151
+ if (tag.type != TAG_VERSION) {
152
+ bytes.idx = startIdx;
153
+ return undefined;
154
+ }
155
+ return bytesToBE(readInt(bytes));
156
+ }
157
+ function readAlgIdent(bytes) {
158
+ let params = undefined;
159
+ bytes = new bytes_js_1.Bytes(readSeq(bytes));
160
+ const oid = readOID(bytes);
161
+ if (oid === undefined) {
162
+ throw new Error('Algorithm cannot be NULL');
163
+ }
164
+ if (bytes.idx < bytes.data.length) {
165
+ params = readOID(bytes);
166
+ }
167
+ return { oid, params };
168
+ }
169
+ function readOID(bytes) {
170
+ const tag = readTag(bytes);
171
+ if (tag.type === TAG_NULL) {
172
+ return undefined;
173
+ }
174
+ if (tag.type !== TAG_OID) {
175
+ throw new Error(`Expected OID tag ${TAG_OID}, but got ${tag.type}`);
176
+ }
177
+ const data = bytes.readBytes(tag.size);
178
+ const ids = [];
179
+ let ident = 0;
180
+ let subident = 0;
181
+ for (const byte of data) {
182
+ subident = byte;
183
+ ident <<= 7;
184
+ ident |= subident & 0x7f;
185
+ if ((subident & 0x80) === 0) {
186
+ ids.push(ident);
187
+ ident = 0;
188
+ }
189
+ }
190
+ if (subident & 0x80) {
191
+ ids.push(ident);
192
+ }
193
+ const first = (ids[0] / 40) | 0;
194
+ const second = ids[0] % 40;
195
+ const result = [first, second].concat(ids.slice(1));
196
+ return result.join('.');
197
+ }
198
+ function readEntries(bytes) {
199
+ const values = [];
200
+ bytes = new bytes_js_1.Bytes(readSeq(bytes));
201
+ while (bytes.idx < bytes.data.length) {
202
+ const tagSet = readTag(bytes);
203
+ if (tagSet.type !== TAG_SET) {
204
+ throw new Error(`Expected set tag ${TAG_SET}, but got ${tagSet.type}`);
205
+ }
206
+ const tagSeq = readTag(bytes);
207
+ if (tagSeq.type !== TAG_SEQ) {
208
+ throw new Error(`Expected seq tag ${TAG_SEQ}, but got ${tagSeq.type}`);
209
+ }
210
+ const oid = readOID(bytes);
211
+ if (oid === undefined) {
212
+ throw new Error('OID for issuer or subject cannot be NULL');
213
+ }
214
+ values.push({
215
+ oid: oid,
216
+ value: (0, str_js_1.bytesToStr)(readString(bytes)),
217
+ });
218
+ }
219
+ return values;
220
+ }
221
+ function readTime(bytes) {
222
+ const tag = readTag(bytes);
223
+ const decoder = new TextDecoder('ascii', { fatal: true });
224
+ const str = decoder.decode(bytes.readBytes(tag.size));
225
+ let year;
226
+ let mon;
227
+ let day;
228
+ let hour;
229
+ let min;
230
+ let sec;
231
+ let pos = 0;
232
+ const readDigits = (numDigits) => {
233
+ const digits = str.slice(pos, pos + numDigits);
234
+ if (!REGEX_DIGITS.test(digits)) {
235
+ throw new Error(`Expected ${numDigits} decimal digits`);
236
+ }
237
+ pos += numDigits;
238
+ return Number(digits) | 0;
239
+ };
240
+ switch (tag.type) {
241
+ case TAG_UTCTIME: {
242
+ year = readDigits(2);
243
+ mon = readDigits(2);
244
+ day = readDigits(2);
245
+ hour = readDigits(2);
246
+ min = readDigits(2);
247
+ sec = readDigits(2);
248
+ if (year < 70) {
249
+ year = 2000 + year;
250
+ }
251
+ else {
252
+ year = 1900 + year;
253
+ }
254
+ break;
255
+ }
256
+ case TAG_GENTIME: {
257
+ year = readDigits(4);
258
+ mon = readDigits(2);
259
+ day = readDigits(2);
260
+ hour = readDigits(2);
261
+ min = readDigits(2);
262
+ sec = readDigits(2);
263
+ break;
264
+ }
265
+ default: {
266
+ throw new Error(`Unexpected tag: ${tag.type}.`);
267
+ }
268
+ }
269
+ return Date.UTC(year, mon - 1, day, hour, min, sec, 0) / 1000;
270
+ }
271
+ function readValidity(bytes) {
272
+ bytes = new bytes_js_1.Bytes(readSeq(bytes));
273
+ return {
274
+ notBefore: readTime(bytes),
275
+ notAfter: readTime(bytes),
276
+ };
277
+ }
278
+ function readPubkey(bytes) {
279
+ bytes = new bytes_js_1.Bytes(readSeq(bytes));
280
+ return {
281
+ alg: readAlgIdent(bytes),
282
+ data: readBitstr(bytes),
283
+ };
284
+ }
285
+ function readToBeSigned(bytes) {
286
+ const startIdx = bytes.idx;
287
+ const tbsBytes = new bytes_js_1.Bytes(readSeq(bytes));
288
+ const endIdx = bytes.idx;
289
+ return {
290
+ version: readVersion(tbsBytes),
291
+ serial: readInt(tbsBytes),
292
+ sigAlg: readAlgIdent(tbsBytes),
293
+ issuer: readEntries(tbsBytes),
294
+ validity: readValidity(tbsBytes),
295
+ subject: readEntries(tbsBytes),
296
+ pubkey: readPubkey(tbsBytes),
297
+ raw: bytes.data.slice(startIdx, endIdx),
298
+ };
299
+ }
300
+ /** Parse a ASN1 certificate from the given bytes */
301
+ function parseCertRaw(rawCert) {
302
+ const bytes = new bytes_js_1.Bytes(rawCert);
303
+ const certBytes = new bytes_js_1.Bytes(readSeq(bytes));
304
+ return {
305
+ tbs: readToBeSigned(certBytes),
306
+ sigAlg: readAlgIdent(certBytes),
307
+ sig: readBitstr(certBytes),
308
+ raw: rawCert,
309
+ };
310
+ }
311
+ exports.parseCertRaw = parseCertRaw;
312
+ function parseCertPem(pem) {
313
+ const match = REGEX_PEM_CERT.exec(pem);
314
+ if (match === null) {
315
+ throw new Error('No PEM encoded certificate found. It should start with ' +
316
+ '"-----BEGIN CERTIFICATE-----"');
317
+ }
318
+ const certRaw = Uint8Array.from(atob(match[1]), c => c.charCodeAt(0));
319
+ return parseCertRaw(certRaw);
320
+ }
321
+ exports.parseCertPem = parseCertPem;
322
+ //# sourceMappingURL=asn1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asn1.js","sourceRoot":"","sources":["../../src/payment/asn1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * as asn1 from './asn1.js';
2
+ export * as x509 from './x509.js';
3
+ export * from './action.js';
4
+ export * from './output.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.x509 = exports.asn1 = void 0;
33
+ exports.asn1 = __importStar(require("./asn1.js"));
34
+ exports.x509 = __importStar(require("./x509.js"));
35
+ // We classify these types as payment, since we have various Output types
36
+ // already in the namespace (TxOutput, TxBuilderOutput, etc)
37
+ __exportStar(require("./action.js"), exports);
38
+ __exportStar(require("./output.js"), exports);
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,kDAAkC;AAClC,kDAAkC;AAElC,yEAAyE;AACzE,4DAA4D;AAC5D,8CAA4B;AAC5B,8CAA4B"}
@@ -0,0 +1,31 @@
1
+ import { Script } from '../script.js';
2
+ /** A special output type used to prepare an Action (see action.ts) */
3
+ export type PaymentOutput = PaymentNonTokenOutput | PaymentTokenOutput;
4
+ /**
5
+ * All "XEC-only" transaction outputs specified in
6
+ * Action will have this shape
7
+ *
8
+ * Note than an OP_RETURN output is a NonTokenPaymentOutput
9
+ */
10
+ export interface PaymentNonTokenOutput {
11
+ /** The amount of satoshis in this tx output */
12
+ sats?: bigint;
13
+ /** The outputScript of this tx output */
14
+ script?: Script;
15
+ }
16
+ /**
17
+ * All token transaction outputs specified in Action have this shape
18
+ */
19
+ export interface PaymentTokenOutput extends PaymentNonTokenOutput {
20
+ /** The tokenId of the token associated with this tx output */
21
+ tokenId: string;
22
+ /**
23
+ * The atoms of this tokenId associated with this tx output
24
+ * Can be a MINT or SEND amount
25
+ * 0n for a mint baton
26
+ */
27
+ atoms: bigint;
28
+ /** Is this tx output a mint baton */
29
+ isMintBaton: boolean;
30
+ }
31
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/payment/output.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IAClC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC7D,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;CACxB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/payment/output.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE"}
@@ -0,0 +1,17 @@
1
+ export declare const OID_RSA_SHA256 = "1.2.840.113549.1.1.11";
2
+ export declare const OID_RSA_SHA384 = "1.2.840.113549.1.1.12";
3
+ export declare const OID_RSA_SHA512 = "1.2.840.113549.1.1.13";
4
+ export declare const OID_ECDSA_WITH_SHA256 = "1.2.840.10045.4.3.2";
5
+ export declare const OID_ECDSA_WITH_SHA384 = "1.2.840.10045.4.3.3";
6
+ export declare const OID_EC_PUBLIC_KEY = "1.2.840.10045.2.1";
7
+ export declare const OID_ANSIP256K1 = "1.3.132.0.10";
8
+ export declare const OID_PRIME256V1 = "1.2.840.10045.3.1.7";
9
+ export declare const OID_SECP384R1 = "1.3.132.0.34";
10
+ export declare const OID_COUNTRY_NAME = "2.5.4.6";
11
+ export declare const OID_STATE_OR_PROVINCE_NAME = "2.5.4.8";
12
+ export declare const OID_LOCALITY_NAME = "2.5.4.7";
13
+ export declare const OID_ORGANIZATION_NAME = "2.5.4.10";
14
+ export declare const OID_ORGANIZATIONAL_UNIT_NAME = "2.5.4.11";
15
+ export declare const OID_COMMON_NAME = "2.5.4.3";
16
+ export declare const OID_EMAIL_ADDRESS = "1.2.840.113549.1.9.1";
17
+ //# sourceMappingURL=x509.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x509.d.ts","sourceRoot":"","sources":["../../src/payment/x509.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,cAAc,wBAAwB,CAAC;AACpD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AACvD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,iBAAiB,yBAAyB,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OID_EMAIL_ADDRESS = exports.OID_COMMON_NAME = exports.OID_ORGANIZATIONAL_UNIT_NAME = exports.OID_ORGANIZATION_NAME = exports.OID_LOCALITY_NAME = exports.OID_STATE_OR_PROVINCE_NAME = exports.OID_COUNTRY_NAME = exports.OID_SECP384R1 = exports.OID_PRIME256V1 = exports.OID_ANSIP256K1 = exports.OID_EC_PUBLIC_KEY = exports.OID_ECDSA_WITH_SHA384 = exports.OID_ECDSA_WITH_SHA256 = exports.OID_RSA_SHA512 = exports.OID_RSA_SHA384 = exports.OID_RSA_SHA256 = void 0;
7
+ exports.OID_RSA_SHA256 = '1.2.840.113549.1.1.11';
8
+ exports.OID_RSA_SHA384 = '1.2.840.113549.1.1.12';
9
+ exports.OID_RSA_SHA512 = '1.2.840.113549.1.1.13';
10
+ exports.OID_ECDSA_WITH_SHA256 = '1.2.840.10045.4.3.2';
11
+ exports.OID_ECDSA_WITH_SHA384 = '1.2.840.10045.4.3.3';
12
+ exports.OID_EC_PUBLIC_KEY = '1.2.840.10045.2.1';
13
+ exports.OID_ANSIP256K1 = '1.3.132.0.10';
14
+ exports.OID_PRIME256V1 = '1.2.840.10045.3.1.7';
15
+ exports.OID_SECP384R1 = '1.3.132.0.34';
16
+ exports.OID_COUNTRY_NAME = '2.5.4.6';
17
+ exports.OID_STATE_OR_PROVINCE_NAME = '2.5.4.8';
18
+ exports.OID_LOCALITY_NAME = '2.5.4.7';
19
+ exports.OID_ORGANIZATION_NAME = '2.5.4.10';
20
+ exports.OID_ORGANIZATIONAL_UNIT_NAME = '2.5.4.11';
21
+ exports.OID_COMMON_NAME = '2.5.4.3';
22
+ exports.OID_EMAIL_ADDRESS = '1.2.840.113549.1.9.1';
23
+ //# sourceMappingURL=x509.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x509.js","sourceRoot":"","sources":["../../src/payment/x509.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEzD,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAC9C,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAC9C,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,cAAc,GAAG,cAAc,CAAC;AAChC,QAAA,cAAc,GAAG,qBAAqB,CAAC;AACvC,QAAA,aAAa,GAAG,cAAc,CAAC;AAE/B,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,0BAA0B,GAAG,SAAS,CAAC;AACvC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,qBAAqB,GAAG,UAAU,CAAC;AACnC,QAAA,4BAA4B,GAAG,UAAU,CAAC;AAC1C,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,iBAAiB,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Algorithm instance for public key cryptography */
2
+ export declare class PkcAlgo {
3
+ algoOid: string;
4
+ params: string | undefined;
5
+ private constructor();
6
+ /**
7
+ * Return a PkcAlgo instance for the given algorithm OID and
8
+ * elliptic curve params (undefined for RSA).
9
+ * Throw an exception if the given algo is not supported, otherwise do nothing.
10
+ */
11
+ static fromOid(algoOid: string, params?: string): PkcAlgo;
12
+ /**
13
+ * Verify a signature for the given cryptographic algorithm.
14
+ * Intended to be used in X509 certificate verification.
15
+ * Throw an exception if the algorithm is not supported.
16
+ */
17
+ verify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
18
+ }
19
+ interface EcashLibPkc {
20
+ verify?: (algoOid: string, params: string | undefined, sig: Uint8Array, msg: Uint8Array, pk: Uint8Array) => void;
21
+ algoSupported?: (algoOid: string, params?: string) => void;
22
+ }
23
+ export declare function __setPkc(pkc: EcashLibPkc): void;
24
+ export {};
25
+ //# sourceMappingURL=publicKeyCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicKeyCrypto.d.ts","sourceRoot":"","sources":["../src/publicKeyCrypto.ts"],"names":[],"mappings":"AAIA,qDAAqD;AACrD,qBAAa,OAAO;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,OAAO;IAQP;;;;OAIG;WACW,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAShE;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU;CAOjE;AAED,UAAU,WAAW;IACjB,MAAM,CAAC,EAAE,CACL,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,KACb,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,QAGxC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.__setPkc = exports.PkcAlgo = void 0;
7
+ /** Algorithm instance for public key cryptography */
8
+ class PkcAlgo {
9
+ constructor(params) {
10
+ this.algoOid = params.algoOid;
11
+ this.params = params.params;
12
+ }
13
+ /**
14
+ * Return a PkcAlgo instance for the given algorithm OID and
15
+ * elliptic curve params (undefined for RSA).
16
+ * Throw an exception if the given algo is not supported, otherwise do nothing.
17
+ */
18
+ static fromOid(algoOid, params) {
19
+ try {
20
+ PKC.algoSupported(algoOid, params);
21
+ }
22
+ catch (ex) {
23
+ throw new Error(ex);
24
+ }
25
+ return new PkcAlgo({ algoOid, params });
26
+ }
27
+ /**
28
+ * Verify a signature for the given cryptographic algorithm.
29
+ * Intended to be used in X509 certificate verification.
30
+ * Throw an exception if the algorithm is not supported.
31
+ */
32
+ verify(sig, msg, pk) {
33
+ try {
34
+ PKC.verify(this.algoOid, this.params, sig, msg, pk);
35
+ }
36
+ catch (ex) {
37
+ throw new Error(ex);
38
+ }
39
+ }
40
+ }
41
+ exports.PkcAlgo = PkcAlgo;
42
+ const PKC = {};
43
+ function __setPkc(pkc) {
44
+ PKC.verify = pkc.verify;
45
+ PKC.algoSupported = pkc.algoSupported;
46
+ }
47
+ exports.__setPkc = __setPkc;
48
+ //# sourceMappingURL=publicKeyCrypto.js.map