@ohos-ports/crypto 0.0.0-stage → 0.3.1-beta.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.
Files changed (121) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +60 -2
  3. package/dist/bech32.d.ts +53 -0
  4. package/dist/bech32.js +187 -0
  5. package/dist/blake2b.d.ts +7 -0
  6. package/dist/blake2b.js +213 -0
  7. package/dist/bls12_318.d.ts +48 -0
  8. package/dist/bls12_318.js +268 -0
  9. package/dist/ed25519.d.ts +55 -0
  10. package/dist/ed25519.js +721 -0
  11. package/dist/hasGlobalWebCrypto.d.ts +1 -0
  12. package/dist/hasGlobalWebCrypto.js +21 -0
  13. package/dist/hmacSHA512.d.ts +6 -0
  14. package/dist/hmacSHA512.js +14 -0
  15. package/dist/index.d.ts +14 -0
  16. package/dist/index.js +30 -0
  17. package/dist/keccak.d.ts +4 -0
  18. package/dist/keccak.js +43 -0
  19. package/dist/kes/constants.d.ts +2 -0
  20. package/dist/kes/constants.js +5 -0
  21. package/dist/kes/index.d.ts +0 -0
  22. package/dist/kes/index.js +0 -0
  23. package/dist/kes/macro/sum_kes.d.ts +15 -0
  24. package/dist/kes/macro/sum_kes.js +9 -0
  25. package/dist/kes/singleKes.d.ts +0 -0
  26. package/dist/kes/singleKes.js +0 -0
  27. package/dist/noble/_assert.d.ts +23 -0
  28. package/dist/noble/_assert.js +55 -0
  29. package/dist/noble/_md.d.ts +29 -0
  30. package/dist/noble/_md.js +170 -0
  31. package/dist/noble/_shortw_utils.d.ts +61 -0
  32. package/dist/noble/_shortw_utils.js +63 -0
  33. package/dist/noble/_u64.d.ts +28 -0
  34. package/dist/noble/_u64.js +116 -0
  35. package/dist/noble/abstract/bls.d.ts +119 -0
  36. package/dist/noble/abstract/bls.js +334 -0
  37. package/dist/noble/abstract/curve.d.ts +83 -0
  38. package/dist/noble/abstract/curve.js +319 -0
  39. package/dist/noble/abstract/edwards.d.ts +85 -0
  40. package/dist/noble/abstract/edwards.js +508 -0
  41. package/dist/noble/abstract/hash-to-curve.d.ts +57 -0
  42. package/dist/noble/abstract/hash-to-curve.js +220 -0
  43. package/dist/noble/abstract/modular.d.ts +122 -0
  44. package/dist/noble/abstract/modular.js +455 -0
  45. package/dist/noble/abstract/montgomery.d.ts +28 -0
  46. package/dist/noble/abstract/montgomery.js +172 -0
  47. package/dist/noble/abstract/utils.d.ts +106 -0
  48. package/dist/noble/abstract/utils.js +442 -0
  49. package/dist/noble/bls12_381.d.ts +95 -0
  50. package/dist/noble/bls12_381.js +1434 -0
  51. package/dist/noble/crypto.d.ts +1 -0
  52. package/dist/noble/crypto.js +4 -0
  53. package/dist/noble/curves/curve.d.ts +69 -0
  54. package/dist/noble/curves/curve.js +167 -0
  55. package/dist/noble/curves/modular.d.ts +122 -0
  56. package/dist/noble/curves/modular.js +442 -0
  57. package/dist/noble/curves/utils.d.ts +93 -0
  58. package/dist/noble/curves/utils.js +385 -0
  59. package/dist/noble/curves/weierstrass.d.ts +240 -0
  60. package/dist/noble/curves/weierstrass.js +1178 -0
  61. package/dist/noble/ed25519.d.ts +100 -0
  62. package/dist/noble/ed25519.js +494 -0
  63. package/dist/noble/hmac.d.ts +25 -0
  64. package/dist/noble/hmac.js +101 -0
  65. package/dist/noble/index.d.ts +2 -0
  66. package/dist/noble/index.js +20 -0
  67. package/dist/noble/keccak.d.ts +58 -0
  68. package/dist/noble/keccak.js +289 -0
  69. package/dist/noble/ripemd_160.d.ts +20 -0
  70. package/dist/noble/ripemd_160.js +147 -0
  71. package/dist/noble/secp256k1.d.ts +98 -0
  72. package/dist/noble/secp256k1.js +309 -0
  73. package/dist/noble/sha256.d.ts +34 -0
  74. package/dist/noble/sha256.js +146 -0
  75. package/dist/noble/sha512.d.ts +66 -0
  76. package/dist/noble/sha512.js +301 -0
  77. package/dist/noble/utils.d.ts +90 -0
  78. package/dist/noble/utils.js +278 -0
  79. package/dist/ripemd_160.d.ts +1 -0
  80. package/dist/ripemd_160.js +23 -0
  81. package/dist/rust_vrf_reimpl/curves.d.ts +162 -0
  82. package/dist/rust_vrf_reimpl/curves.js +4225 -0
  83. package/dist/rust_vrf_reimpl/vrf03.d.ts +60 -0
  84. package/dist/rust_vrf_reimpl/vrf03.js +373 -0
  85. package/dist/rust_vrf_reimpl/vrf10.d.ts +73 -0
  86. package/dist/rust_vrf_reimpl/vrf10.js +468 -0
  87. package/dist/rust_vrf_reimpl/vrf10_batch.d.ts +53 -0
  88. package/dist/rust_vrf_reimpl/vrf10_batch.js +245 -0
  89. package/dist/secp256k1.d.ts +4 -0
  90. package/dist/secp256k1.js +33 -0
  91. package/dist/sha2_256.d.ts +16 -0
  92. package/dist/sha2_256.js +403 -0
  93. package/dist/sha2_512.d.ts +16 -0
  94. package/dist/sha2_512.js +256 -0
  95. package/dist/sha3.d.ts +17 -0
  96. package/dist/sha3.js +181 -0
  97. package/dist/types.d.ts +26 -0
  98. package/dist/types.js +120 -0
  99. package/dist/utils/assert.d.ts +3 -0
  100. package/dist/utils/assert.js +55 -0
  101. package/dist/utils/base32.d.ts +5 -0
  102. package/dist/utils/base32.js +52 -0
  103. package/dist/utils/bigintToBuffer.d.ts +1 -0
  104. package/dist/utils/bigintToBuffer.js +27 -0
  105. package/dist/utils/bytesToHex.d.ts +2 -0
  106. package/dist/utils/bytesToHex.js +15 -0
  107. package/dist/utils/getRandomValues.d.ts +4 -0
  108. package/dist/utils/getRandomValues.js +12 -0
  109. package/dist/utils/hexToBytes.d.ts +2 -0
  110. package/dist/utils/hexToBytes.js +14 -0
  111. package/dist/utils/index.d.ts +3 -0
  112. package/dist/utils/index.js +19 -0
  113. package/dist/utils/positiveMod.d.ts +1 -0
  114. package/dist/utils/positiveMod.js +11 -0
  115. package/dist/utils/promisifySync.d.ts +0 -0
  116. package/dist/utils/promisifySync.js +0 -0
  117. package/dist/utils/rotr32.d.ts +2 -0
  118. package/dist/utils/rotr32.js +7 -0
  119. package/dist/vrf.d.ts +74 -0
  120. package/dist/vrf.js +286 -0
  121. package/package.json +49 -4
@@ -0,0 +1 @@
1
+ export declare const hasGlobalWebCrypto: boolean;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasGlobalWebCrypto = void 0;
4
+ var hasGlobalThis = true;
5
+ try {
6
+ hasGlobalThis = typeof globalThis !== "undefined";
7
+ }
8
+ catch (_a) {
9
+ hasGlobalThis = false;
10
+ }
11
+ var _hasGlobalWebCrypto = hasGlobalThis;
12
+ if (hasGlobalThis) {
13
+ try {
14
+ _hasGlobalWebCrypto = (typeof globalThis.crypto !== "undefined" &&
15
+ typeof globalThis.crypto.subtle !== "undefined");
16
+ }
17
+ catch (_b) {
18
+ _hasGlobalWebCrypto = false;
19
+ }
20
+ }
21
+ exports.hasGlobalWebCrypto = _hasGlobalWebCrypto;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * here because we need it in `@harmoniclabs/bip32_ed25519`
3
+ *
4
+ * and in particular, because it is a dependency of `pbkdf2` (which could also be calculated using native webcrypto)
5
+ */
6
+ export declare function hmacSHA512(key: Uint8Array, data: Uint8Array): Uint8Array;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hmacSHA512 = void 0;
4
+ var hmac_1 = require("./noble/hmac.js");
5
+ var sha512_1 = require("./noble/sha512.js");
6
+ /**
7
+ * here because we need it in `@harmoniclabs/bip32_ed25519`
8
+ *
9
+ * and in particular, because it is a dependency of `pbkdf2` (which could also be calculated using native webcrypto)
10
+ */
11
+ function hmacSHA512(key, data) {
12
+ return new Uint8Array((0, hmac_1.hmac)(sha512_1.sha512, key, data));
13
+ }
14
+ exports.hmacSHA512 = hmacSHA512;
@@ -0,0 +1,14 @@
1
+ export * from "./bech32.js";
2
+ export * from "./blake2b.js";
3
+ export * from "./bls12_318.js";
4
+ export * from "./ed25519.js";
5
+ export * from "./hmacSHA512.js";
6
+ export * from "./keccak.js";
7
+ export * from "./secp256k1.js";
8
+ export * from "./sha2_256.js";
9
+ export * from "./sha2_512.js";
10
+ export * from "./sha3.js";
11
+ export * from "./types.js";
12
+ export * from "./utils/index.js";
13
+ export * from "./vrf.js";
14
+ export * from "./ripemd_160.js";
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bech32.js"), exports);
18
+ __exportStar(require("./blake2b.js"), exports);
19
+ __exportStar(require("./bls12_318.js"), exports);
20
+ __exportStar(require("./ed25519.js"), exports);
21
+ __exportStar(require("./hmacSHA512.js"), exports);
22
+ __exportStar(require("./keccak.js"), exports);
23
+ __exportStar(require("./secp256k1.js"), exports);
24
+ __exportStar(require("./sha2_256.js"), exports);
25
+ __exportStar(require("./sha2_512.js"), exports);
26
+ __exportStar(require("./sha3.js"), exports);
27
+ __exportStar(require("./types.js"), exports);
28
+ __exportStar(require("./utils/index.js"), exports);
29
+ __exportStar(require("./vrf.js"), exports);
30
+ __exportStar(require("./ripemd_160.js"), exports);
@@ -0,0 +1,4 @@
1
+ export declare function keccak_256(msg: Uint8Array): Uint8Array;
2
+ export declare function keccak_224(msg: Uint8Array): Uint8Array;
3
+ export declare function keccak_384(msg: Uint8Array): Uint8Array;
4
+ export declare function keccak_512(msg: Uint8Array): Uint8Array;
package/dist/keccak.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.keccak_512 = exports.keccak_384 = exports.keccak_224 = exports.keccak_256 = void 0;
27
+ var noble = __importStar(require("./noble/keccak.js"));
28
+ function keccak_256(msg) {
29
+ return noble.keccak_256(msg);
30
+ }
31
+ exports.keccak_256 = keccak_256;
32
+ function keccak_224(msg) {
33
+ return noble.keccak_224(msg);
34
+ }
35
+ exports.keccak_224 = keccak_224;
36
+ function keccak_384(msg) {
37
+ return noble.keccak_384(msg);
38
+ }
39
+ exports.keccak_384 = keccak_384;
40
+ function keccak_512(msg) {
41
+ return noble.keccak_512(msg);
42
+ }
43
+ exports.keccak_512 = keccak_512;
@@ -0,0 +1,2 @@
1
+ export declare const KES_SIG_LENGTH = 448;
2
+ export declare const KES_SIZE = 32;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KES_SIZE = exports.KES_SIG_LENGTH = void 0;
4
+ exports.KES_SIG_LENGTH = 448;
5
+ exports.KES_SIZE = 32;
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ export interface IKesSk {
2
+ sign(msg: Uint8Array): Uint8Array;
3
+ }
4
+ export interface KesSkClass {
5
+ new (): IKesSk;
6
+ }
7
+ export interface IKesSig {
8
+ sigma: IKesSig;
9
+ lhs_pk: Uint8Array;
10
+ rhs_pk: Uint8Array;
11
+ }
12
+ export interface KesSigClass {
13
+ new (): IKesSig;
14
+ }
15
+ export declare function sum_kes(prev_kes_class: KesSkClass, prev_sig_class: KesSigClass): void;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sum_kes = void 0;
4
+ ;
5
+ ;
6
+ ;
7
+ function sum_kes(prev_kes_class, prev_sig_class) {
8
+ }
9
+ exports.sum_kes = sum_kes;
File without changes
File without changes
@@ -0,0 +1,23 @@
1
+ declare function number(n: number): void;
2
+ declare function bool(b: boolean): void;
3
+ export declare function isBytes(a: unknown): a is Uint8Array;
4
+ declare function bytes(b: Uint8Array | undefined, ...lengths: number[]): void;
5
+ type Hash = {
6
+ (data: Uint8Array): Uint8Array;
7
+ blockLen: number;
8
+ outputLen: number;
9
+ create: any;
10
+ };
11
+ declare function hash(hash: Hash): void;
12
+ declare function exists(instance: any, checkFinished?: boolean): void;
13
+ declare function output(out: any, instance: any): void;
14
+ export { number, bool, bytes, hash, exists, output };
15
+ declare const assert: {
16
+ number: typeof number;
17
+ bool: typeof bool;
18
+ bytes: typeof bytes;
19
+ hash: typeof hash;
20
+ exists: typeof exists;
21
+ output: typeof output;
22
+ };
23
+ export default assert;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = exports.isBytes = void 0;
4
+ function number(n) {
5
+ if (!Number.isSafeInteger(n) || n < 0)
6
+ throw new Error("positive integer expected, not ".concat(n));
7
+ }
8
+ exports.number = number;
9
+ function bool(b) {
10
+ if (typeof b !== 'boolean')
11
+ throw new Error("boolean expected, not ".concat(b));
12
+ }
13
+ exports.bool = bool;
14
+ // copied from utils
15
+ function isBytes(a) {
16
+ return (a instanceof Uint8Array ||
17
+ (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));
18
+ }
19
+ exports.isBytes = isBytes;
20
+ function bytes(b) {
21
+ var lengths = [];
22
+ for (var _i = 1; _i < arguments.length; _i++) {
23
+ lengths[_i - 1] = arguments[_i];
24
+ }
25
+ if (!isBytes(b))
26
+ throw new Error('Uint8Array expected');
27
+ if (lengths.length > 0 && !lengths.includes(b.length))
28
+ throw new Error("Uint8Array expected of length ".concat(lengths, ", not of length=").concat(b.length));
29
+ }
30
+ exports.bytes = bytes;
31
+ function hash(hash) {
32
+ if (typeof hash !== 'function' || typeof hash.create !== 'function')
33
+ throw new Error('Hash should be wrapped by utils.wrapConstructor');
34
+ number(hash.outputLen);
35
+ number(hash.blockLen);
36
+ }
37
+ exports.hash = hash;
38
+ function exists(instance, checkFinished) {
39
+ if (checkFinished === void 0) { checkFinished = true; }
40
+ if (instance.destroyed)
41
+ throw new Error('Hash instance has been destroyed');
42
+ if (checkFinished && instance.finished)
43
+ throw new Error('Hash#digest() has already been called');
44
+ }
45
+ exports.exists = exists;
46
+ function output(out, instance) {
47
+ bytes(out);
48
+ var min = instance.outputLen;
49
+ if (out.length < min) {
50
+ throw new Error("digestInto() expects output buffer of length at least ".concat(min));
51
+ }
52
+ }
53
+ exports.output = output;
54
+ var assert = { number: number, bool: bool, bytes: bytes, hash: hash, exists: exists, output: output };
55
+ exports.default = assert;
@@ -0,0 +1,29 @@
1
+ import { Hash, Input } from './utils.js';
2
+ export declare const Chi: (a: number, b: number, c: number) => number;
3
+ export declare const Maj: (a: number, b: number, c: number) => number;
4
+ /**
5
+ * Merkle-Damgard hash construction base class.
6
+ * Could be used to create MD5, RIPEMD, SHA1, SHA2.
7
+ */
8
+ export declare abstract class HashMD<T extends HashMD<T>> extends Hash<T> {
9
+ readonly blockLen: number;
10
+ outputLen: number;
11
+ readonly padOffset: number;
12
+ readonly isLE: boolean;
13
+ protected abstract process(buf: DataView, offset: number): void;
14
+ protected abstract get(): number[];
15
+ protected abstract set(...args: number[]): void;
16
+ abstract destroy(): void;
17
+ protected abstract roundClean(): void;
18
+ protected buffer: Uint8Array;
19
+ protected view: DataView;
20
+ protected finished: boolean;
21
+ protected length: number;
22
+ protected pos: number;
23
+ protected destroyed: boolean;
24
+ constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean);
25
+ update(data: Input): this;
26
+ digestInto(out: Uint8Array): void;
27
+ digest(): Uint8Array;
28
+ _cloneInto(to?: T): T;
29
+ }
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.HashMD = exports.Maj = exports.Chi = void 0;
44
+ var _assert_1 = require("./_assert.js");
45
+ var utils_1 = require("./utils.js");
46
+ // Polyfill for Safari 14
47
+ function setBigUint64(view, byteOffset, value, isLE) {
48
+ if (typeof view.setBigUint64 === 'function')
49
+ return view.setBigUint64(byteOffset, value, isLE);
50
+ var _32n = BigInt(32);
51
+ var _u32_max = BigInt(0xffffffff);
52
+ var wh = Number((value >> _32n) & _u32_max);
53
+ var wl = Number(value & _u32_max);
54
+ var h = isLE ? 4 : 0;
55
+ var l = isLE ? 0 : 4;
56
+ view.setUint32(byteOffset + h, wh, isLE);
57
+ view.setUint32(byteOffset + l, wl, isLE);
58
+ }
59
+ // Choice: a ? b : c
60
+ var Chi = function (a, b, c) { return (a & b) ^ (~a & c); };
61
+ exports.Chi = Chi;
62
+ // Majority function, true if any two inpust is true
63
+ var Maj = function (a, b, c) { return (a & b) ^ (a & c) ^ (b & c); };
64
+ exports.Maj = Maj;
65
+ /**
66
+ * Merkle-Damgard hash construction base class.
67
+ * Could be used to create MD5, RIPEMD, SHA1, SHA2.
68
+ */
69
+ var HashMD = /** @class */ (function (_super) {
70
+ __extends(HashMD, _super);
71
+ function HashMD(blockLen, outputLen, padOffset, isLE) {
72
+ var _this = _super.call(this) || this;
73
+ _this.blockLen = blockLen;
74
+ _this.outputLen = outputLen;
75
+ _this.padOffset = padOffset;
76
+ _this.isLE = isLE;
77
+ _this.finished = false;
78
+ _this.length = 0;
79
+ _this.pos = 0;
80
+ _this.destroyed = false;
81
+ _this.buffer = new Uint8Array(blockLen);
82
+ _this.view = (0, utils_1.createView)(_this.buffer);
83
+ return _this;
84
+ }
85
+ HashMD.prototype.update = function (data) {
86
+ (0, _assert_1.exists)(this);
87
+ var _a = this, view = _a.view, buffer = _a.buffer, blockLen = _a.blockLen;
88
+ data = (0, utils_1.toBytes)(data);
89
+ var len = data.length;
90
+ for (var pos = 0; pos < len;) {
91
+ var take = Math.min(blockLen - this.pos, len - pos);
92
+ // Fast path: we have at least one block in input, cast it to view and process
93
+ if (take === blockLen) {
94
+ var dataView = (0, utils_1.createView)(data);
95
+ for (; blockLen <= len - pos; pos += blockLen)
96
+ this.process(dataView, pos);
97
+ continue;
98
+ }
99
+ buffer.set(data.subarray(pos, pos + take), this.pos);
100
+ this.pos += take;
101
+ pos += take;
102
+ if (this.pos === blockLen) {
103
+ this.process(view, 0);
104
+ this.pos = 0;
105
+ }
106
+ }
107
+ this.length += data.length;
108
+ this.roundClean();
109
+ return this;
110
+ };
111
+ HashMD.prototype.digestInto = function (out) {
112
+ (0, _assert_1.exists)(this);
113
+ (0, _assert_1.output)(out, this);
114
+ this.finished = true;
115
+ // Padding
116
+ // We can avoid allocation of buffer for padding completely if it
117
+ // was previously not allocated here. But it won't change performance.
118
+ var _a = this, buffer = _a.buffer, view = _a.view, blockLen = _a.blockLen, isLE = _a.isLE;
119
+ var pos = this.pos;
120
+ // append the bit '1' to the message
121
+ buffer[pos++] = 128;
122
+ this.buffer.subarray(pos).fill(0);
123
+ // we have less than padOffset left in buffer, so we cannot put length in
124
+ // current block, need process it and pad again
125
+ if (this.padOffset > blockLen - pos) {
126
+ this.process(view, 0);
127
+ pos = 0;
128
+ }
129
+ // Pad until full block byte with zeros
130
+ for (var i = pos; i < blockLen; i++)
131
+ buffer[i] = 0;
132
+ // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that
133
+ // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.
134
+ // So we just write lowest 64 bits of that value.
135
+ setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);
136
+ this.process(view, 0);
137
+ var oview = (0, utils_1.createView)(out);
138
+ var len = this.outputLen;
139
+ // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT
140
+ if (len % 4)
141
+ throw new Error('_sha2: outputLen should be aligned to 32bit');
142
+ var outLen = len / 4;
143
+ var state = this.get();
144
+ if (outLen > state.length)
145
+ throw new Error('_sha2: outputLen bigger than state');
146
+ for (var i = 0; i < outLen; i++)
147
+ oview.setUint32(4 * i, state[i], isLE);
148
+ };
149
+ HashMD.prototype.digest = function () {
150
+ var _a = this, buffer = _a.buffer, outputLen = _a.outputLen;
151
+ this.digestInto(buffer);
152
+ var res = Uint8Array.prototype.slice.call(buffer, 0, outputLen);
153
+ this.destroy();
154
+ return res;
155
+ };
156
+ HashMD.prototype._cloneInto = function (to) {
157
+ to || (to = new this.constructor());
158
+ to.set.apply(to, __spreadArray([], __read(this.get()), false));
159
+ var _a = this, blockLen = _a.blockLen, buffer = _a.buffer, length = _a.length, finished = _a.finished, destroyed = _a.destroyed, pos = _a.pos;
160
+ to.length = length;
161
+ to.pos = pos;
162
+ to.finished = finished;
163
+ to.destroyed = destroyed;
164
+ if (length % blockLen)
165
+ to.buffer.set(buffer);
166
+ return to;
167
+ };
168
+ return HashMD;
169
+ }(utils_1.Hash));
170
+ exports.HashMD = HashMD;
@@ -0,0 +1,61 @@
1
+ import { randomBytes } from './utils.js';
2
+ import { CurveType } from './curves/weierstrass.js';
3
+ import { CHash } from './abstract/utils.js';
4
+ export declare function getHash(hash: CHash): {
5
+ hash: CHash;
6
+ hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => Uint8Array;
7
+ randomBytes: typeof randomBytes;
8
+ };
9
+ type CurveDef = Readonly<Omit<CurveType, 'hash' | 'hmac' | 'randomBytes'>>;
10
+ export declare function createCurve(curveDef: CurveDef, defHash: CHash): Readonly<{
11
+ create: (hash: CHash) => import("./curves/weierstrass.js").CurveFn;
12
+ CURVE: Readonly<{
13
+ readonly nBitLength: number;
14
+ readonly nByteLength: number;
15
+ readonly Fp: import("./abstract/modular.js").IField<bigint>;
16
+ readonly n: bigint;
17
+ readonly h: bigint;
18
+ readonly hEff?: bigint | undefined;
19
+ readonly Gx: bigint;
20
+ readonly Gy: bigint;
21
+ readonly allowInfinityPoint?: boolean | undefined;
22
+ readonly a: bigint;
23
+ readonly b: bigint;
24
+ readonly allowedPrivateKeyLengths?: readonly number[] | undefined;
25
+ readonly wrapPrivateKey?: boolean | undefined;
26
+ readonly endo?: {
27
+ beta: bigint;
28
+ splitScalar: (k: bigint) => {
29
+ k1neg: boolean;
30
+ k1: bigint;
31
+ k2neg: boolean;
32
+ k2: bigint;
33
+ };
34
+ } | undefined;
35
+ readonly isTorsionFree?: ((c: import("./curves/weierstrass.js").ProjConstructor<bigint>, point: import("./curves/weierstrass.js").ProjPointType<bigint>) => boolean) | undefined;
36
+ readonly clearCofactor?: ((c: import("./curves/weierstrass.js").ProjConstructor<bigint>, point: import("./curves/weierstrass.js").ProjPointType<bigint>) => import("./curves/weierstrass.js").ProjPointType<bigint>) | undefined;
37
+ readonly hash: CHash;
38
+ readonly hmac: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;
39
+ readonly randomBytes: (bytesLength?: number | undefined) => Uint8Array;
40
+ lowS: boolean;
41
+ readonly bits2int?: ((bytes: Uint8Array) => bigint) | undefined;
42
+ readonly bits2int_modN?: ((bytes: Uint8Array) => bigint) | undefined;
43
+ readonly p: bigint;
44
+ }>;
45
+ getPublicKey: (privateKey: import("./abstract/utils.js").PrivKey, isCompressed?: boolean | undefined) => Uint8Array;
46
+ getSharedSecret: (privateA: import("./abstract/utils.js").PrivKey, publicB: import("./abstract/utils.js").Hex, isCompressed?: boolean | undefined) => Uint8Array;
47
+ sign: (msgHash: import("./abstract/utils.js").Hex, privKey: import("./abstract/utils.js").PrivKey, opts?: import("./curves/weierstrass.js").SignOpts | undefined) => import("./curves/weierstrass.js").RecoveredSignatureType;
48
+ verify: (signature: import("./abstract/utils.js").Hex | {
49
+ r: bigint;
50
+ s: bigint;
51
+ }, msgHash: import("./abstract/utils.js").Hex, publicKey: import("./abstract/utils.js").Hex, opts?: import("./curves/weierstrass.js").VerOpts | undefined) => boolean;
52
+ ProjectivePoint: import("./curves/weierstrass.js").ProjConstructor<bigint>;
53
+ Signature: import("./curves/weierstrass.js").SignatureConstructor;
54
+ utils: {
55
+ normPrivateKeyToScalar: (key: import("./abstract/utils.js").PrivKey) => bigint;
56
+ isValidPrivateKey(privateKey: import("./abstract/utils.js").PrivKey): boolean;
57
+ randomPrivateKey: () => Uint8Array;
58
+ precompute: (windowSize?: number | undefined, point?: import("./curves/weierstrass.js").ProjPointType<bigint> | undefined) => import("./curves/weierstrass.js").ProjPointType<bigint>;
59
+ };
60
+ }>;
61
+ export {};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createCurve = exports.getHash = void 0;
40
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
41
+ var hmac_1 = require("./hmac.js");
42
+ var utils_1 = require("./utils.js");
43
+ var weierstrass_1 = require("./curves/weierstrass.js");
44
+ // connects noble-curves to noble-hashes
45
+ function getHash(hash) {
46
+ return {
47
+ hash: hash,
48
+ hmac: function (key) {
49
+ var msgs = [];
50
+ for (var _i = 1; _i < arguments.length; _i++) {
51
+ msgs[_i - 1] = arguments[_i];
52
+ }
53
+ return (0, hmac_1.hmac)(hash, key, utils_1.concatBytes.apply(void 0, __spreadArray([], __read(msgs), false)));
54
+ },
55
+ randomBytes: utils_1.randomBytes,
56
+ };
57
+ }
58
+ exports.getHash = getHash;
59
+ function createCurve(curveDef, defHash) {
60
+ var create = function (hash) { return (0, weierstrass_1.weierstrass)(__assign(__assign({}, curveDef), getHash(hash))); };
61
+ return Object.freeze(__assign(__assign({}, create(defHash)), { create: create }));
62
+ }
63
+ exports.createCurve = createCurve;
@@ -0,0 +1,28 @@
1
+ export declare function fromBig(n: bigint, le?: boolean): {
2
+ h: number;
3
+ l: number;
4
+ };
5
+ export declare function split(lst: bigint[], le?: boolean): Uint32Array[];
6
+ export declare const toBig: (h: number, l: number) => bigint;
7
+ export declare const shrSH: (h: number, _l: number, s: number) => number;
8
+ export declare const shrSL: (h: number, l: number, s: number) => number;
9
+ export declare const rotrSH: (h: number, l: number, s: number) => number;
10
+ export declare const rotrSL: (h: number, l: number, s: number) => number;
11
+ export declare const rotrBH: (h: number, l: number, s: number) => number;
12
+ export declare const rotrBL: (h: number, l: number, s: number) => number;
13
+ export declare const rotr32H: (_h: number, l: number) => number;
14
+ export declare const rotr32L: (h: number, _l: number) => number;
15
+ export declare const rotlSH: (h: number, l: number, s: number) => number;
16
+ export declare const rotlSL: (h: number, l: number, s: number) => number;
17
+ export declare const rotlBH: (h: number, l: number, s: number) => number;
18
+ export declare const rotlBL: (h: number, l: number, s: number) => number;
19
+ export declare function add(Ah: number, Al: number, Bh: number, Bl: number): {
20
+ h: number;
21
+ l: number;
22
+ };
23
+ export declare const add3L: (Al: number, Bl: number, Cl: number) => number;
24
+ export declare const add3H: (low: number, Ah: number, Bh: number, Ch: number) => number;
25
+ export declare const add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number;
26
+ export declare const add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number;
27
+ export declare const add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number;
28
+ export declare const add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number;