@bsv/sdk 1.9.30 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +3 -2
- package/dist/cjs/src/auth/Peer.js +68 -48
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +19 -0
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +72 -27
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +28 -54
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +36 -1
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +27 -0
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js +35 -46
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/auth/Peer.js +68 -48
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +19 -0
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +71 -26
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +28 -54
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +36 -1
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +27 -0
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/ReductionContext.js +35 -46
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/types.d.ts +2 -0
- package/dist/types/src/auth/types.d.ts.map +1 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts +19 -0
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
- package/dist/types/src/primitives/AESGCM.d.ts +18 -0
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +8 -0
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +24 -0
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +27 -0
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/ReductionContext.d.ts +9 -0
- package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +3 -3
- package/dist/umd/bundle.js.map +1 -1
- package/docs/index.md +15 -1
- package/docs/reference/auth.md +2 -0
- package/docs/reference/primitives.md +91 -31
- package/package.json +3 -2
- package/src/auth/Peer.ts +122 -57
- package/src/auth/__tests/Peer.test.ts +166 -257
- package/src/auth/types.ts +2 -0
- package/src/messages/EncryptedMessage.ts +19 -0
- package/src/primitives/AESGCM.ts +75 -34
- package/src/primitives/BigNumber.ts +27 -31
- package/src/primitives/ECDSA.ts +41 -2
- package/src/primitives/PrivateKey.ts +27 -0
- package/src/primitives/ReductionContext.ts +44 -48
- package/src/primitives/__tests/AESGCM.test.ts +31 -0
- package/src/primitives/__tests/ECDSA.test.ts +16 -0
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import BigNumber from './BigNumber.js';
|
|
2
2
|
import K256 from './K256.js';
|
|
3
|
+
/**
|
|
4
|
+
* SECURITY NOTE:
|
|
5
|
+
* This reduction context avoids obvious variable-time constructs (such as
|
|
6
|
+
* sliding-window exponentiation and conditional modular reduction) to reduce
|
|
7
|
+
* timing side-channel leakage. However, JavaScript BigInt arithmetic does not
|
|
8
|
+
* provide constant-time guarantees. These mitigations improve resistance to
|
|
9
|
+
* coarse timing attacks but do not make the implementation suitable for
|
|
10
|
+
* hostile multi-tenant or shared-CPU environments.
|
|
11
|
+
*/
|
|
3
12
|
/**
|
|
4
13
|
* A base reduction engine that provides several arithmetic operations over
|
|
5
14
|
* big numbers under a modulus context. It's particularly suitable for
|
|
@@ -137,11 +146,17 @@ export default class ReductionContext {
|
|
|
137
146
|
*/
|
|
138
147
|
add(a, b) {
|
|
139
148
|
this.verify2(a, b);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
149
|
+
// Start from a red clone
|
|
150
|
+
const res = a.clone();
|
|
151
|
+
// In-place add keeps red context
|
|
152
|
+
res.iadd(b);
|
|
153
|
+
// Always subtract modulus (still red)
|
|
154
|
+
res.isub(this.m);
|
|
155
|
+
// If negative, add modulus back
|
|
156
|
+
if (res.isNeg()) {
|
|
157
|
+
res.iadd(this.m);
|
|
143
158
|
}
|
|
144
|
-
return res
|
|
159
|
+
return res;
|
|
145
160
|
}
|
|
146
161
|
/**
|
|
147
162
|
* Performs an in-place addition operation on two BigNumbers in the reduction context
|
|
@@ -161,11 +176,12 @@ export default class ReductionContext {
|
|
|
161
176
|
*/
|
|
162
177
|
iadd(a, b) {
|
|
163
178
|
this.verify2(a, b);
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
179
|
+
a.iadd(b);
|
|
180
|
+
a.isub(this.m);
|
|
181
|
+
if (a.isNeg()) {
|
|
182
|
+
a.iadd(this.m);
|
|
167
183
|
}
|
|
168
|
-
return
|
|
184
|
+
return a;
|
|
169
185
|
}
|
|
170
186
|
/**
|
|
171
187
|
* Subtracts one BigNumber from another BigNumber in the reduction context.
|
|
@@ -403,48 +419,21 @@ export default class ReductionContext {
|
|
|
403
419
|
* context.pow(new BigNumber(3), new BigNumber(2)); // Returns 2 (3^2 % 7)
|
|
404
420
|
*/
|
|
405
421
|
pow(a, num) {
|
|
422
|
+
this.verify1(a);
|
|
406
423
|
if (num.isZero())
|
|
407
424
|
return new BigNumber(1).toRed(this);
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}
|
|
418
|
-
let res = wnd[0];
|
|
419
|
-
let current = 0;
|
|
420
|
-
let currentLen = 0;
|
|
421
|
-
let start = num.bitLength() % 26;
|
|
422
|
-
if (start === 0) {
|
|
423
|
-
start = 26;
|
|
424
|
-
}
|
|
425
|
-
for (i = num.length - 1; i >= 0; i--) {
|
|
426
|
-
const word = num.words[i];
|
|
427
|
-
for (let j = start - 1; j >= 0; j--) {
|
|
428
|
-
const bit = (word >> j) & 1;
|
|
429
|
-
if (res !== wnd[0]) {
|
|
430
|
-
res = this.sqr(res);
|
|
431
|
-
}
|
|
432
|
-
if (bit === 0 && current === 0) {
|
|
433
|
-
currentLen = 0;
|
|
434
|
-
continue;
|
|
435
|
-
}
|
|
436
|
-
current <<= 1;
|
|
437
|
-
current |= bit;
|
|
438
|
-
currentLen++;
|
|
439
|
-
if (currentLen !== windowSize && (i !== 0 || j !== 0))
|
|
440
|
-
continue;
|
|
441
|
-
res = this.mul(res, wnd[current]);
|
|
442
|
-
currentLen = 0;
|
|
443
|
-
current = 0;
|
|
425
|
+
let result = new BigNumber(1).toRed(this);
|
|
426
|
+
const base = a.clone();
|
|
427
|
+
const bits = num.bitLength();
|
|
428
|
+
for (let i = bits - 1; i >= 0; i--) {
|
|
429
|
+
// Always square
|
|
430
|
+
result = this.sqr(result);
|
|
431
|
+
// Multiply if bit is set
|
|
432
|
+
if (num.testn(i)) {
|
|
433
|
+
result = this.mul(result, base);
|
|
444
434
|
}
|
|
445
|
-
start = 26;
|
|
446
435
|
}
|
|
447
|
-
return
|
|
436
|
+
return result;
|
|
448
437
|
}
|
|
449
438
|
/**
|
|
450
439
|
* Converts a BigNumber to its equivalent in the reduction context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReductionContext.js","sourceRoot":"","sources":["../../../../src/primitives/ReductionContext.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,KAAK,CAAiB;IACtB,CAAC,CAAW;IAEZ;;;;;;;;;OASG;IACH,YAAa,CAAqB;QAChC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;YACxB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAA;YAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAA;YACvD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACK,MAAM,CAAE,GAAY,EAAE,MAAc,kBAAkB;QAC5D,IAAI,CAAE,GAAe;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAE,CAAY;QACnB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAA;IACvD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAE,CAAY,EAAE,CAAY;QACjC,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC/B,+BAA+B,CAChC,CAAA;QACD,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAChC,iCAAiC,CAClC,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAE,CAAY;QAChB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEnE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,GAAG,CAAE,CAAY;QACf,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAE,CAAY,EAAE,CAAY;QAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAElB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"ReductionContext.js","sourceRoot":"","sources":["../../../../src/primitives/ReductionContext.ts"],"names":[],"mappings":"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"}
|