@noble/curves 1.9.4 → 1.9.6

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 (124) hide show
  1. package/abstract/bls.d.ts +2 -2
  2. package/abstract/bls.d.ts.map +1 -1
  3. package/abstract/curve.d.ts +47 -46
  4. package/abstract/curve.d.ts.map +1 -1
  5. package/abstract/curve.js +9 -6
  6. package/abstract/curve.js.map +1 -1
  7. package/abstract/edwards.d.ts +41 -33
  8. package/abstract/edwards.d.ts.map +1 -1
  9. package/abstract/edwards.js +166 -170
  10. package/abstract/edwards.js.map +1 -1
  11. package/abstract/modular.d.ts +1 -1
  12. package/abstract/modular.d.ts.map +1 -1
  13. package/abstract/modular.js +4 -4
  14. package/abstract/modular.js.map +1 -1
  15. package/abstract/montgomery.d.ts +2 -6
  16. package/abstract/montgomery.d.ts.map +1 -1
  17. package/abstract/montgomery.js +13 -10
  18. package/abstract/montgomery.js.map +1 -1
  19. package/abstract/tower.d.ts +9 -7
  20. package/abstract/tower.d.ts.map +1 -1
  21. package/abstract/tower.js +569 -357
  22. package/abstract/tower.js.map +1 -1
  23. package/abstract/weierstrass.d.ts +162 -92
  24. package/abstract/weierstrass.d.ts.map +1 -1
  25. package/abstract/weierstrass.js +394 -336
  26. package/abstract/weierstrass.js.map +1 -1
  27. package/bls12-381.d.ts.map +1 -1
  28. package/bls12-381.js +9 -42
  29. package/bls12-381.js.map +1 -1
  30. package/bn254.d.ts.map +1 -1
  31. package/bn254.js +2 -34
  32. package/bn254.js.map +1 -1
  33. package/ed25519.d.ts +15 -15
  34. package/ed25519.d.ts.map +1 -1
  35. package/ed25519.js +51 -48
  36. package/ed25519.js.map +1 -1
  37. package/ed448.d.ts +16 -17
  38. package/ed448.d.ts.map +1 -1
  39. package/ed448.js +67 -48
  40. package/ed448.js.map +1 -1
  41. package/esm/abstract/bls.d.ts +2 -2
  42. package/esm/abstract/bls.d.ts.map +1 -1
  43. package/esm/abstract/curve.d.ts +47 -46
  44. package/esm/abstract/curve.d.ts.map +1 -1
  45. package/esm/abstract/curve.js +9 -6
  46. package/esm/abstract/curve.js.map +1 -1
  47. package/esm/abstract/edwards.d.ts +41 -33
  48. package/esm/abstract/edwards.d.ts.map +1 -1
  49. package/esm/abstract/edwards.js +167 -171
  50. package/esm/abstract/edwards.js.map +1 -1
  51. package/esm/abstract/modular.d.ts +1 -1
  52. package/esm/abstract/modular.d.ts.map +1 -1
  53. package/esm/abstract/modular.js +4 -4
  54. package/esm/abstract/modular.js.map +1 -1
  55. package/esm/abstract/montgomery.d.ts +2 -6
  56. package/esm/abstract/montgomery.d.ts.map +1 -1
  57. package/esm/abstract/montgomery.js +14 -11
  58. package/esm/abstract/montgomery.js.map +1 -1
  59. package/esm/abstract/tower.d.ts +9 -7
  60. package/esm/abstract/tower.d.ts.map +1 -1
  61. package/esm/abstract/tower.js +570 -358
  62. package/esm/abstract/tower.js.map +1 -1
  63. package/esm/abstract/weierstrass.d.ts +162 -92
  64. package/esm/abstract/weierstrass.d.ts.map +1 -1
  65. package/esm/abstract/weierstrass.js +395 -338
  66. package/esm/abstract/weierstrass.js.map +1 -1
  67. package/esm/bls12-381.d.ts.map +1 -1
  68. package/esm/bls12-381.js +10 -43
  69. package/esm/bls12-381.js.map +1 -1
  70. package/esm/bn254.d.ts.map +1 -1
  71. package/esm/bn254.js +3 -35
  72. package/esm/bn254.js.map +1 -1
  73. package/esm/ed25519.d.ts +15 -15
  74. package/esm/ed25519.d.ts.map +1 -1
  75. package/esm/ed25519.js +51 -48
  76. package/esm/ed25519.js.map +1 -1
  77. package/esm/ed448.d.ts +16 -17
  78. package/esm/ed448.d.ts.map +1 -1
  79. package/esm/ed448.js +68 -49
  80. package/esm/ed448.js.map +1 -1
  81. package/esm/misc.js +2 -2
  82. package/esm/misc.js.map +1 -1
  83. package/esm/nist.d.ts +6 -0
  84. package/esm/nist.d.ts.map +1 -1
  85. package/esm/nist.js +6 -0
  86. package/esm/nist.js.map +1 -1
  87. package/esm/secp256k1.d.ts +2 -6
  88. package/esm/secp256k1.d.ts.map +1 -1
  89. package/esm/secp256k1.js +34 -35
  90. package/esm/secp256k1.js.map +1 -1
  91. package/esm/utils.d.ts +14 -0
  92. package/esm/utils.d.ts.map +1 -1
  93. package/esm/utils.js +43 -0
  94. package/esm/utils.js.map +1 -1
  95. package/misc.js +2 -2
  96. package/misc.js.map +1 -1
  97. package/nist.d.ts +6 -0
  98. package/nist.d.ts.map +1 -1
  99. package/nist.js +7 -1
  100. package/nist.js.map +1 -1
  101. package/package.json +2 -2
  102. package/secp256k1.d.ts +2 -6
  103. package/secp256k1.d.ts.map +1 -1
  104. package/secp256k1.js +33 -34
  105. package/secp256k1.js.map +1 -1
  106. package/src/abstract/bls.ts +2 -2
  107. package/src/abstract/curve.ts +131 -68
  108. package/src/abstract/edwards.ts +210 -219
  109. package/src/abstract/modular.ts +4 -4
  110. package/src/abstract/montgomery.ts +16 -16
  111. package/src/abstract/tower.ts +630 -382
  112. package/src/abstract/weierstrass.ts +587 -484
  113. package/src/bls12-381.ts +10 -42
  114. package/src/bn254.ts +3 -34
  115. package/src/ed25519.ts +62 -58
  116. package/src/ed448.ts +74 -77
  117. package/src/misc.ts +2 -2
  118. package/src/nist.ts +7 -0
  119. package/src/secp256k1.ts +35 -36
  120. package/src/utils.ts +48 -0
  121. package/utils.d.ts +14 -0
  122. package/utils.d.ts.map +1 -1
  123. package/utils.js +47 -0
  124. package/utils.js.map +1 -1
@@ -384,7 +384,7 @@ type FieldOpts = Partial<{
384
384
  sqrt: SqrtFn;
385
385
  isLE: boolean;
386
386
  BITS: number;
387
- modOnDecode: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n
387
+ modFromBytes: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n
388
388
  allowedLengths?: readonly number[]; // for P521 (adds padding for smaller sizes)
389
389
  }>;
390
390
  /**
@@ -415,7 +415,7 @@ export function Field(
415
415
  if (ORDER <= _0n) throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);
416
416
  let _nbitLength: number | undefined = undefined;
417
417
  let _sqrt: SqrtFn | undefined = undefined;
418
- let modOnDecode: boolean = false;
418
+ let modFromBytes: boolean = false;
419
419
  let allowedLengths: undefined | readonly number[] = undefined;
420
420
  if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {
421
421
  if (opts.sqrt || isLE) throw new Error('cannot specify opts in two arguments');
@@ -423,7 +423,7 @@ export function Field(
423
423
  if (_opts.BITS) _nbitLength = _opts.BITS;
424
424
  if (_opts.sqrt) _sqrt = _opts.sqrt;
425
425
  if (typeof _opts.isLE === 'boolean') isLE = _opts.isLE;
426
- if (typeof _opts.modOnDecode === 'boolean') modOnDecode = _opts.modOnDecode;
426
+ if (typeof _opts.modFromBytes === 'boolean') modFromBytes = _opts.modFromBytes;
427
427
  allowedLengths = _opts.allowedLengths;
428
428
  } else {
429
429
  if (typeof bitLenOrOpts === 'number') _nbitLength = bitLenOrOpts;
@@ -490,7 +490,7 @@ export function Field(
490
490
  if (bytes.length !== BYTES)
491
491
  throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);
492
492
  let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);
493
- if (modOnDecode) scalar = mod(scalar, ORDER);
493
+ if (modFromBytes) scalar = mod(scalar, ORDER);
494
494
  if (!skipValidation)
495
495
  if (!f.isValid(scalar)) throw new Error('invalid field element: outside of range 0..ORDER');
496
496
  // NOTE: we don't validate scalar here, please use isValid. This done such way because some
@@ -7,13 +7,14 @@
7
7
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
8
8
  import {
9
9
  _validateObject,
10
+ abytes,
10
11
  aInRange,
11
12
  bytesToNumberLE,
12
13
  ensureBytes,
13
14
  numberToBytesLE,
14
15
  randomBytes,
15
16
  } from '../utils.ts';
16
- import type { CurveInfo } from './curve.ts';
17
+ import type { CurveLengths } from './curve.ts';
17
18
  import { mod } from './modular.ts';
18
19
 
19
20
  const _0n = BigInt(0);
@@ -40,11 +41,7 @@ export type MontgomeryECDH = {
40
41
  randomPrivateKey: () => Uint8Array;
41
42
  };
42
43
  GuBytes: Uint8Array;
43
- info: {
44
- type: 'montgomery';
45
- lengths: Omit<CurveInfo['lengths'], 'signature'>;
46
- publicKeyHasPrefix?: boolean;
47
- };
44
+ lengths: CurveLengths;
48
45
  keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };
49
46
  };
50
47
  export type CurveFn = MontgomeryECDH;
@@ -167,19 +164,22 @@ export function montgomery(curveDef: CurveType): MontgomeryECDH {
167
164
  const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent
168
165
  return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))
169
166
  }
170
- const randomSecretKey = (seed = randomBytes_(fieldLen)) => seed;
171
- const utils = {
172
- randomSecretKey,
173
- randomPrivateKey: randomSecretKey,
167
+ const lengths = {
168
+ secretKey: fieldLen,
169
+ publicKey: fieldLen,
170
+ seed: fieldLen,
171
+ };
172
+ const randomSecretKey = (seed = randomBytes_(fieldLen)) => {
173
+ abytes(seed, lengths.seed);
174
+ return seed;
174
175
  };
175
176
  function keygen(seed?: Uint8Array) {
176
- const secretKey = utils.randomSecretKey(seed);
177
+ const secretKey = randomSecretKey(seed);
177
178
  return { secretKey, publicKey: scalarMultBase(secretKey) };
178
179
  }
179
- const lengths = {
180
- secret: fieldLen,
181
- public: fieldLen,
182
- seed: fieldLen,
180
+ const utils = {
181
+ randomSecretKey,
182
+ randomPrivateKey: randomSecretKey,
183
183
  };
184
184
  return {
185
185
  keygen,
@@ -189,6 +189,6 @@ export function montgomery(curveDef: CurveType): MontgomeryECDH {
189
189
  scalarMultBase,
190
190
  utils,
191
191
  GuBytes: GuBytes.slice(),
192
- info: { type: 'montgomery' as const, lengths },
192
+ lengths,
193
193
  };
194
194
  }