@basmilius/apple-encryption 0.9.15 → 0.9.17

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/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { i as __toESM, n as __exportAll, r as __require, t as __commonJSMin } from "./chunk-CB5R7In7.mjs";
1
+ import { t as __exportAll } from "./chunk-DQk6qfdC.mjs";
2
2
  import { hkdfSync } from "node:crypto";
3
3
 
4
4
  //#region ../../node_modules/.bun/@stablelib+int@2.0.1/node_modules/@stablelib/int/lib/int.js
@@ -19,6 +19,28 @@ const isSafeInteger = Number.isSafeInteger;
19
19
  //#endregion
20
20
  //#region ../../node_modules/.bun/@stablelib+binary@2.0.1/node_modules/@stablelib/binary/lib/binary.js
21
21
  /**
22
+ * Reads 4 bytes from array starting at offset as big-endian
23
+ * unsigned 32-bit integer and returns it.
24
+ */
25
+ function readUint32BE(array, offset = 0) {
26
+ return (array[offset] << 24 | array[offset + 1] << 16 | array[offset + 2] << 8 | array[offset + 3]) >>> 0;
27
+ }
28
+ /**
29
+ * Writes 4-byte big-endian representation of 32-bit unsigned
30
+ * value to byte array starting at offset.
31
+ *
32
+ * If byte array is not given, creates a new 4-byte one.
33
+ *
34
+ * Returns the output byte array.
35
+ */
36
+ function writeUint32BE(value, out = new Uint8Array(4), offset = 0) {
37
+ out[offset + 0] = value >>> 24;
38
+ out[offset + 1] = value >>> 16;
39
+ out[offset + 2] = value >>> 8;
40
+ out[offset + 3] = value >>> 0;
41
+ return out;
42
+ }
43
+ /**
22
44
  * Writes 4-byte little-endian representation of 32-bit unsigned
23
45
  * value to array starting at offset.
24
46
  *
@@ -326,7 +348,7 @@ function equal(a, b) {
326
348
 
327
349
  //#endregion
328
350
  //#region ../../node_modules/.bun/@stablelib+poly1305@2.0.1/node_modules/@stablelib/poly1305/lib/poly1305.js
329
- const DIGEST_LENGTH = 16;
351
+ const DIGEST_LENGTH$1 = 16;
330
352
  /**
331
353
  * Poly1305 computes 16-byte authenticator of message using
332
354
  * a one-time 32-byte key.
@@ -834,1821 +856,1092 @@ function padNonce(nonce) {
834
856
  }
835
857
 
836
858
  //#endregion
837
- //#region ../../node_modules/.bun/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js
838
- var require_nacl_fast = /* @__PURE__ */ __commonJSMin(((exports, module) => {
839
- (function(nacl) {
840
- "use strict";
841
- var gf = function(init) {
842
- var i, r = new Float64Array(16);
843
- if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
844
- return r;
845
- };
846
- var randombytes = function() {
847
- throw new Error("no PRNG");
848
- };
849
- var _0 = new Uint8Array(16);
850
- var _9 = new Uint8Array(32);
851
- _9[0] = 9;
852
- var gf0 = gf(), gf1 = gf([1]), _121665 = gf([56129, 1]), D = gf([
853
- 30883,
854
- 4953,
855
- 19914,
856
- 30187,
857
- 55467,
858
- 16705,
859
- 2637,
860
- 112,
861
- 59544,
862
- 30585,
863
- 16505,
864
- 36039,
865
- 65139,
866
- 11119,
867
- 27886,
868
- 20995
869
- ]), D2 = gf([
870
- 61785,
871
- 9906,
872
- 39828,
873
- 60374,
874
- 45398,
875
- 33411,
876
- 5274,
877
- 224,
878
- 53552,
879
- 61171,
880
- 33010,
881
- 6542,
882
- 64743,
883
- 22239,
884
- 55772,
885
- 9222
886
- ]), X = gf([
887
- 54554,
888
- 36645,
889
- 11616,
890
- 51542,
891
- 42930,
892
- 38181,
893
- 51040,
894
- 26924,
895
- 56412,
896
- 64982,
897
- 57905,
898
- 49316,
899
- 21502,
900
- 52590,
901
- 14035,
902
- 8553
903
- ]), Y = gf([
904
- 26200,
905
- 26214,
906
- 26214,
907
- 26214,
908
- 26214,
909
- 26214,
910
- 26214,
911
- 26214,
912
- 26214,
913
- 26214,
914
- 26214,
915
- 26214,
916
- 26214,
917
- 26214,
918
- 26214,
919
- 26214
920
- ]), I = gf([
921
- 41136,
922
- 18958,
923
- 6951,
924
- 50414,
925
- 58488,
926
- 44335,
927
- 6150,
928
- 12099,
929
- 55207,
930
- 15867,
931
- 153,
932
- 11085,
933
- 57099,
934
- 20417,
935
- 9344,
936
- 11139
937
- ]);
938
- function ts64(x, i, h, l) {
939
- x[i] = h >> 24 & 255;
940
- x[i + 1] = h >> 16 & 255;
941
- x[i + 2] = h >> 8 & 255;
942
- x[i + 3] = h & 255;
943
- x[i + 4] = l >> 24 & 255;
944
- x[i + 5] = l >> 16 & 255;
945
- x[i + 6] = l >> 8 & 255;
946
- x[i + 7] = l & 255;
947
- }
948
- function vn(x, xi, y, yi, n) {
949
- var i, d = 0;
950
- for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];
951
- return (1 & d - 1 >>> 8) - 1;
859
+ //#region ../../node_modules/.bun/@stablelib+random@2.0.1/node_modules/@stablelib/random/lib/source/system.js
860
+ const QUOTA = 65536;
861
+ var SystemRandomSource = class {
862
+ isAvailable = false;
863
+ isInstantiated = false;
864
+ constructor() {
865
+ if (typeof crypto !== "undefined" && "getRandomValues" in crypto) {
866
+ this.isAvailable = true;
867
+ this.isInstantiated = true;
952
868
  }
953
- function crypto_verify_16(x, xi, y, yi) {
954
- return vn(x, xi, y, yi, 16);
955
- }
956
- function crypto_verify_32(x, xi, y, yi) {
957
- return vn(x, xi, y, yi, 32);
869
+ }
870
+ randomBytes(length) {
871
+ if (!this.isAvailable) throw new Error("System random byte generator is not available.");
872
+ const out = new Uint8Array(length);
873
+ for (let i = 0; i < out.length; i += QUOTA) crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));
874
+ return out;
875
+ }
876
+ };
877
+
878
+ //#endregion
879
+ //#region ../../node_modules/.bun/@stablelib+random@2.0.1/node_modules/@stablelib/random/lib/random.js
880
+ const defaultRandomSource = new SystemRandomSource();
881
+ function randomBytes(length, prng = defaultRandomSource) {
882
+ return prng.randomBytes(length);
883
+ }
884
+
885
+ //#endregion
886
+ //#region ../../node_modules/.bun/@stablelib+x25519@2.0.1/node_modules/@stablelib/x25519/lib/x25519.js
887
+ const PUBLIC_KEY_LENGTH = 32;
888
+ const SECRET_KEY_LENGTH$1 = 32;
889
+ function gf$1(init) {
890
+ const r = new Float64Array(16);
891
+ if (init) for (let i = 0; i < init.length; i++) r[i] = init[i];
892
+ return r;
893
+ }
894
+ const _9$1 = new Uint8Array(32);
895
+ _9$1[0] = 9;
896
+ const _121665 = gf$1([56129, 1]);
897
+ function car25519$1(o) {
898
+ let c = 1;
899
+ for (let i = 0; i < 16; i++) {
900
+ let v = o[i] + c + 65535;
901
+ c = Math.floor(v / 65536);
902
+ o[i] = v - c * 65536;
903
+ }
904
+ o[0] += c - 1 + 37 * (c - 1);
905
+ }
906
+ function sel25519$1(p, q, b) {
907
+ const c = ~(b - 1);
908
+ for (let i = 0; i < 16; i++) {
909
+ const t = c & (p[i] ^ q[i]);
910
+ p[i] ^= t;
911
+ q[i] ^= t;
912
+ }
913
+ }
914
+ function pack25519$1(o, n) {
915
+ const m = gf$1();
916
+ const t = gf$1();
917
+ for (let i = 0; i < 16; i++) t[i] = n[i];
918
+ car25519$1(t);
919
+ car25519$1(t);
920
+ car25519$1(t);
921
+ for (let j = 0; j < 2; j++) {
922
+ m[0] = t[0] - 65517;
923
+ for (let i = 1; i < 15; i++) {
924
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
925
+ m[i - 1] &= 65535;
958
926
  }
959
- function core_salsa20(o, p, k, c) {
960
- var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
961
- var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
962
- for (var i = 0; i < 20; i += 2) {
963
- u = x0 + x12 | 0;
964
- x4 ^= u << 7 | u >>> 25;
965
- u = x4 + x0 | 0;
966
- x8 ^= u << 9 | u >>> 23;
967
- u = x8 + x4 | 0;
968
- x12 ^= u << 13 | u >>> 19;
969
- u = x12 + x8 | 0;
970
- x0 ^= u << 18 | u >>> 14;
971
- u = x5 + x1 | 0;
972
- x9 ^= u << 7 | u >>> 25;
973
- u = x9 + x5 | 0;
974
- x13 ^= u << 9 | u >>> 23;
975
- u = x13 + x9 | 0;
976
- x1 ^= u << 13 | u >>> 19;
977
- u = x1 + x13 | 0;
978
- x5 ^= u << 18 | u >>> 14;
979
- u = x10 + x6 | 0;
980
- x14 ^= u << 7 | u >>> 25;
981
- u = x14 + x10 | 0;
982
- x2 ^= u << 9 | u >>> 23;
983
- u = x2 + x14 | 0;
984
- x6 ^= u << 13 | u >>> 19;
985
- u = x6 + x2 | 0;
986
- x10 ^= u << 18 | u >>> 14;
987
- u = x15 + x11 | 0;
988
- x3 ^= u << 7 | u >>> 25;
989
- u = x3 + x15 | 0;
990
- x7 ^= u << 9 | u >>> 23;
991
- u = x7 + x3 | 0;
992
- x11 ^= u << 13 | u >>> 19;
993
- u = x11 + x7 | 0;
994
- x15 ^= u << 18 | u >>> 14;
995
- u = x0 + x3 | 0;
996
- x1 ^= u << 7 | u >>> 25;
997
- u = x1 + x0 | 0;
998
- x2 ^= u << 9 | u >>> 23;
999
- u = x2 + x1 | 0;
1000
- x3 ^= u << 13 | u >>> 19;
1001
- u = x3 + x2 | 0;
1002
- x0 ^= u << 18 | u >>> 14;
1003
- u = x5 + x4 | 0;
1004
- x6 ^= u << 7 | u >>> 25;
1005
- u = x6 + x5 | 0;
1006
- x7 ^= u << 9 | u >>> 23;
1007
- u = x7 + x6 | 0;
1008
- x4 ^= u << 13 | u >>> 19;
1009
- u = x4 + x7 | 0;
1010
- x5 ^= u << 18 | u >>> 14;
1011
- u = x10 + x9 | 0;
1012
- x11 ^= u << 7 | u >>> 25;
1013
- u = x11 + x10 | 0;
1014
- x8 ^= u << 9 | u >>> 23;
1015
- u = x8 + x11 | 0;
1016
- x9 ^= u << 13 | u >>> 19;
1017
- u = x9 + x8 | 0;
1018
- x10 ^= u << 18 | u >>> 14;
1019
- u = x15 + x14 | 0;
1020
- x12 ^= u << 7 | u >>> 25;
1021
- u = x12 + x15 | 0;
1022
- x13 ^= u << 9 | u >>> 23;
1023
- u = x13 + x12 | 0;
1024
- x14 ^= u << 13 | u >>> 19;
1025
- u = x14 + x13 | 0;
1026
- x15 ^= u << 18 | u >>> 14;
927
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
928
+ const b = m[15] >> 16 & 1;
929
+ m[14] &= 65535;
930
+ sel25519$1(t, m, 1 - b);
931
+ }
932
+ for (let i = 0; i < 16; i++) {
933
+ o[2 * i] = t[i] & 255;
934
+ o[2 * i + 1] = t[i] >> 8;
935
+ }
936
+ }
937
+ function unpack25519$1(o, n) {
938
+ for (let i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
939
+ o[15] &= 32767;
940
+ }
941
+ function add$1(o, a, b) {
942
+ for (let i = 0; i < 16; i++) o[i] = a[i] + b[i];
943
+ }
944
+ function sub$1(o, a, b) {
945
+ for (let i = 0; i < 16; i++) o[i] = a[i] - b[i];
946
+ }
947
+ function mul$1(o, a, b) {
948
+ let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
949
+ v = a[0];
950
+ t0 += v * b0;
951
+ t1 += v * b1;
952
+ t2 += v * b2;
953
+ t3 += v * b3;
954
+ t4 += v * b4;
955
+ t5 += v * b5;
956
+ t6 += v * b6;
957
+ t7 += v * b7;
958
+ t8 += v * b8;
959
+ t9 += v * b9;
960
+ t10 += v * b10;
961
+ t11 += v * b11;
962
+ t12 += v * b12;
963
+ t13 += v * b13;
964
+ t14 += v * b14;
965
+ t15 += v * b15;
966
+ v = a[1];
967
+ t1 += v * b0;
968
+ t2 += v * b1;
969
+ t3 += v * b2;
970
+ t4 += v * b3;
971
+ t5 += v * b4;
972
+ t6 += v * b5;
973
+ t7 += v * b6;
974
+ t8 += v * b7;
975
+ t9 += v * b8;
976
+ t10 += v * b9;
977
+ t11 += v * b10;
978
+ t12 += v * b11;
979
+ t13 += v * b12;
980
+ t14 += v * b13;
981
+ t15 += v * b14;
982
+ t16 += v * b15;
983
+ v = a[2];
984
+ t2 += v * b0;
985
+ t3 += v * b1;
986
+ t4 += v * b2;
987
+ t5 += v * b3;
988
+ t6 += v * b4;
989
+ t7 += v * b5;
990
+ t8 += v * b6;
991
+ t9 += v * b7;
992
+ t10 += v * b8;
993
+ t11 += v * b9;
994
+ t12 += v * b10;
995
+ t13 += v * b11;
996
+ t14 += v * b12;
997
+ t15 += v * b13;
998
+ t16 += v * b14;
999
+ t17 += v * b15;
1000
+ v = a[3];
1001
+ t3 += v * b0;
1002
+ t4 += v * b1;
1003
+ t5 += v * b2;
1004
+ t6 += v * b3;
1005
+ t7 += v * b4;
1006
+ t8 += v * b5;
1007
+ t9 += v * b6;
1008
+ t10 += v * b7;
1009
+ t11 += v * b8;
1010
+ t12 += v * b9;
1011
+ t13 += v * b10;
1012
+ t14 += v * b11;
1013
+ t15 += v * b12;
1014
+ t16 += v * b13;
1015
+ t17 += v * b14;
1016
+ t18 += v * b15;
1017
+ v = a[4];
1018
+ t4 += v * b0;
1019
+ t5 += v * b1;
1020
+ t6 += v * b2;
1021
+ t7 += v * b3;
1022
+ t8 += v * b4;
1023
+ t9 += v * b5;
1024
+ t10 += v * b6;
1025
+ t11 += v * b7;
1026
+ t12 += v * b8;
1027
+ t13 += v * b9;
1028
+ t14 += v * b10;
1029
+ t15 += v * b11;
1030
+ t16 += v * b12;
1031
+ t17 += v * b13;
1032
+ t18 += v * b14;
1033
+ t19 += v * b15;
1034
+ v = a[5];
1035
+ t5 += v * b0;
1036
+ t6 += v * b1;
1037
+ t7 += v * b2;
1038
+ t8 += v * b3;
1039
+ t9 += v * b4;
1040
+ t10 += v * b5;
1041
+ t11 += v * b6;
1042
+ t12 += v * b7;
1043
+ t13 += v * b8;
1044
+ t14 += v * b9;
1045
+ t15 += v * b10;
1046
+ t16 += v * b11;
1047
+ t17 += v * b12;
1048
+ t18 += v * b13;
1049
+ t19 += v * b14;
1050
+ t20 += v * b15;
1051
+ v = a[6];
1052
+ t6 += v * b0;
1053
+ t7 += v * b1;
1054
+ t8 += v * b2;
1055
+ t9 += v * b3;
1056
+ t10 += v * b4;
1057
+ t11 += v * b5;
1058
+ t12 += v * b6;
1059
+ t13 += v * b7;
1060
+ t14 += v * b8;
1061
+ t15 += v * b9;
1062
+ t16 += v * b10;
1063
+ t17 += v * b11;
1064
+ t18 += v * b12;
1065
+ t19 += v * b13;
1066
+ t20 += v * b14;
1067
+ t21 += v * b15;
1068
+ v = a[7];
1069
+ t7 += v * b0;
1070
+ t8 += v * b1;
1071
+ t9 += v * b2;
1072
+ t10 += v * b3;
1073
+ t11 += v * b4;
1074
+ t12 += v * b5;
1075
+ t13 += v * b6;
1076
+ t14 += v * b7;
1077
+ t15 += v * b8;
1078
+ t16 += v * b9;
1079
+ t17 += v * b10;
1080
+ t18 += v * b11;
1081
+ t19 += v * b12;
1082
+ t20 += v * b13;
1083
+ t21 += v * b14;
1084
+ t22 += v * b15;
1085
+ v = a[8];
1086
+ t8 += v * b0;
1087
+ t9 += v * b1;
1088
+ t10 += v * b2;
1089
+ t11 += v * b3;
1090
+ t12 += v * b4;
1091
+ t13 += v * b5;
1092
+ t14 += v * b6;
1093
+ t15 += v * b7;
1094
+ t16 += v * b8;
1095
+ t17 += v * b9;
1096
+ t18 += v * b10;
1097
+ t19 += v * b11;
1098
+ t20 += v * b12;
1099
+ t21 += v * b13;
1100
+ t22 += v * b14;
1101
+ t23 += v * b15;
1102
+ v = a[9];
1103
+ t9 += v * b0;
1104
+ t10 += v * b1;
1105
+ t11 += v * b2;
1106
+ t12 += v * b3;
1107
+ t13 += v * b4;
1108
+ t14 += v * b5;
1109
+ t15 += v * b6;
1110
+ t16 += v * b7;
1111
+ t17 += v * b8;
1112
+ t18 += v * b9;
1113
+ t19 += v * b10;
1114
+ t20 += v * b11;
1115
+ t21 += v * b12;
1116
+ t22 += v * b13;
1117
+ t23 += v * b14;
1118
+ t24 += v * b15;
1119
+ v = a[10];
1120
+ t10 += v * b0;
1121
+ t11 += v * b1;
1122
+ t12 += v * b2;
1123
+ t13 += v * b3;
1124
+ t14 += v * b4;
1125
+ t15 += v * b5;
1126
+ t16 += v * b6;
1127
+ t17 += v * b7;
1128
+ t18 += v * b8;
1129
+ t19 += v * b9;
1130
+ t20 += v * b10;
1131
+ t21 += v * b11;
1132
+ t22 += v * b12;
1133
+ t23 += v * b13;
1134
+ t24 += v * b14;
1135
+ t25 += v * b15;
1136
+ v = a[11];
1137
+ t11 += v * b0;
1138
+ t12 += v * b1;
1139
+ t13 += v * b2;
1140
+ t14 += v * b3;
1141
+ t15 += v * b4;
1142
+ t16 += v * b5;
1143
+ t17 += v * b6;
1144
+ t18 += v * b7;
1145
+ t19 += v * b8;
1146
+ t20 += v * b9;
1147
+ t21 += v * b10;
1148
+ t22 += v * b11;
1149
+ t23 += v * b12;
1150
+ t24 += v * b13;
1151
+ t25 += v * b14;
1152
+ t26 += v * b15;
1153
+ v = a[12];
1154
+ t12 += v * b0;
1155
+ t13 += v * b1;
1156
+ t14 += v * b2;
1157
+ t15 += v * b3;
1158
+ t16 += v * b4;
1159
+ t17 += v * b5;
1160
+ t18 += v * b6;
1161
+ t19 += v * b7;
1162
+ t20 += v * b8;
1163
+ t21 += v * b9;
1164
+ t22 += v * b10;
1165
+ t23 += v * b11;
1166
+ t24 += v * b12;
1167
+ t25 += v * b13;
1168
+ t26 += v * b14;
1169
+ t27 += v * b15;
1170
+ v = a[13];
1171
+ t13 += v * b0;
1172
+ t14 += v * b1;
1173
+ t15 += v * b2;
1174
+ t16 += v * b3;
1175
+ t17 += v * b4;
1176
+ t18 += v * b5;
1177
+ t19 += v * b6;
1178
+ t20 += v * b7;
1179
+ t21 += v * b8;
1180
+ t22 += v * b9;
1181
+ t23 += v * b10;
1182
+ t24 += v * b11;
1183
+ t25 += v * b12;
1184
+ t26 += v * b13;
1185
+ t27 += v * b14;
1186
+ t28 += v * b15;
1187
+ v = a[14];
1188
+ t14 += v * b0;
1189
+ t15 += v * b1;
1190
+ t16 += v * b2;
1191
+ t17 += v * b3;
1192
+ t18 += v * b4;
1193
+ t19 += v * b5;
1194
+ t20 += v * b6;
1195
+ t21 += v * b7;
1196
+ t22 += v * b8;
1197
+ t23 += v * b9;
1198
+ t24 += v * b10;
1199
+ t25 += v * b11;
1200
+ t26 += v * b12;
1201
+ t27 += v * b13;
1202
+ t28 += v * b14;
1203
+ t29 += v * b15;
1204
+ v = a[15];
1205
+ t15 += v * b0;
1206
+ t16 += v * b1;
1207
+ t17 += v * b2;
1208
+ t18 += v * b3;
1209
+ t19 += v * b4;
1210
+ t20 += v * b5;
1211
+ t21 += v * b6;
1212
+ t22 += v * b7;
1213
+ t23 += v * b8;
1214
+ t24 += v * b9;
1215
+ t25 += v * b10;
1216
+ t26 += v * b11;
1217
+ t27 += v * b12;
1218
+ t28 += v * b13;
1219
+ t29 += v * b14;
1220
+ t30 += v * b15;
1221
+ t0 += 38 * t16;
1222
+ t1 += 38 * t17;
1223
+ t2 += 38 * t18;
1224
+ t3 += 38 * t19;
1225
+ t4 += 38 * t20;
1226
+ t5 += 38 * t21;
1227
+ t6 += 38 * t22;
1228
+ t7 += 38 * t23;
1229
+ t8 += 38 * t24;
1230
+ t9 += 38 * t25;
1231
+ t10 += 38 * t26;
1232
+ t11 += 38 * t27;
1233
+ t12 += 38 * t28;
1234
+ t13 += 38 * t29;
1235
+ t14 += 38 * t30;
1236
+ c = 1;
1237
+ v = t0 + c + 65535;
1238
+ c = Math.floor(v / 65536);
1239
+ t0 = v - c * 65536;
1240
+ v = t1 + c + 65535;
1241
+ c = Math.floor(v / 65536);
1242
+ t1 = v - c * 65536;
1243
+ v = t2 + c + 65535;
1244
+ c = Math.floor(v / 65536);
1245
+ t2 = v - c * 65536;
1246
+ v = t3 + c + 65535;
1247
+ c = Math.floor(v / 65536);
1248
+ t3 = v - c * 65536;
1249
+ v = t4 + c + 65535;
1250
+ c = Math.floor(v / 65536);
1251
+ t4 = v - c * 65536;
1252
+ v = t5 + c + 65535;
1253
+ c = Math.floor(v / 65536);
1254
+ t5 = v - c * 65536;
1255
+ v = t6 + c + 65535;
1256
+ c = Math.floor(v / 65536);
1257
+ t6 = v - c * 65536;
1258
+ v = t7 + c + 65535;
1259
+ c = Math.floor(v / 65536);
1260
+ t7 = v - c * 65536;
1261
+ v = t8 + c + 65535;
1262
+ c = Math.floor(v / 65536);
1263
+ t8 = v - c * 65536;
1264
+ v = t9 + c + 65535;
1265
+ c = Math.floor(v / 65536);
1266
+ t9 = v - c * 65536;
1267
+ v = t10 + c + 65535;
1268
+ c = Math.floor(v / 65536);
1269
+ t10 = v - c * 65536;
1270
+ v = t11 + c + 65535;
1271
+ c = Math.floor(v / 65536);
1272
+ t11 = v - c * 65536;
1273
+ v = t12 + c + 65535;
1274
+ c = Math.floor(v / 65536);
1275
+ t12 = v - c * 65536;
1276
+ v = t13 + c + 65535;
1277
+ c = Math.floor(v / 65536);
1278
+ t13 = v - c * 65536;
1279
+ v = t14 + c + 65535;
1280
+ c = Math.floor(v / 65536);
1281
+ t14 = v - c * 65536;
1282
+ v = t15 + c + 65535;
1283
+ c = Math.floor(v / 65536);
1284
+ t15 = v - c * 65536;
1285
+ t0 += c - 1 + 37 * (c - 1);
1286
+ c = 1;
1287
+ v = t0 + c + 65535;
1288
+ c = Math.floor(v / 65536);
1289
+ t0 = v - c * 65536;
1290
+ v = t1 + c + 65535;
1291
+ c = Math.floor(v / 65536);
1292
+ t1 = v - c * 65536;
1293
+ v = t2 + c + 65535;
1294
+ c = Math.floor(v / 65536);
1295
+ t2 = v - c * 65536;
1296
+ v = t3 + c + 65535;
1297
+ c = Math.floor(v / 65536);
1298
+ t3 = v - c * 65536;
1299
+ v = t4 + c + 65535;
1300
+ c = Math.floor(v / 65536);
1301
+ t4 = v - c * 65536;
1302
+ v = t5 + c + 65535;
1303
+ c = Math.floor(v / 65536);
1304
+ t5 = v - c * 65536;
1305
+ v = t6 + c + 65535;
1306
+ c = Math.floor(v / 65536);
1307
+ t6 = v - c * 65536;
1308
+ v = t7 + c + 65535;
1309
+ c = Math.floor(v / 65536);
1310
+ t7 = v - c * 65536;
1311
+ v = t8 + c + 65535;
1312
+ c = Math.floor(v / 65536);
1313
+ t8 = v - c * 65536;
1314
+ v = t9 + c + 65535;
1315
+ c = Math.floor(v / 65536);
1316
+ t9 = v - c * 65536;
1317
+ v = t10 + c + 65535;
1318
+ c = Math.floor(v / 65536);
1319
+ t10 = v - c * 65536;
1320
+ v = t11 + c + 65535;
1321
+ c = Math.floor(v / 65536);
1322
+ t11 = v - c * 65536;
1323
+ v = t12 + c + 65535;
1324
+ c = Math.floor(v / 65536);
1325
+ t12 = v - c * 65536;
1326
+ v = t13 + c + 65535;
1327
+ c = Math.floor(v / 65536);
1328
+ t13 = v - c * 65536;
1329
+ v = t14 + c + 65535;
1330
+ c = Math.floor(v / 65536);
1331
+ t14 = v - c * 65536;
1332
+ v = t15 + c + 65535;
1333
+ c = Math.floor(v / 65536);
1334
+ t15 = v - c * 65536;
1335
+ t0 += c - 1 + 37 * (c - 1);
1336
+ o[0] = t0;
1337
+ o[1] = t1;
1338
+ o[2] = t2;
1339
+ o[3] = t3;
1340
+ o[4] = t4;
1341
+ o[5] = t5;
1342
+ o[6] = t6;
1343
+ o[7] = t7;
1344
+ o[8] = t8;
1345
+ o[9] = t9;
1346
+ o[10] = t10;
1347
+ o[11] = t11;
1348
+ o[12] = t12;
1349
+ o[13] = t13;
1350
+ o[14] = t14;
1351
+ o[15] = t15;
1352
+ }
1353
+ function square$1(o, a) {
1354
+ mul$1(o, a, a);
1355
+ }
1356
+ function inv25519$1(o, inp) {
1357
+ const c = gf$1();
1358
+ for (let i = 0; i < 16; i++) c[i] = inp[i];
1359
+ for (let i = 253; i >= 0; i--) {
1360
+ square$1(c, c);
1361
+ if (i !== 2 && i !== 4) mul$1(c, c, inp);
1362
+ }
1363
+ for (let i = 0; i < 16; i++) o[i] = c[i];
1364
+ }
1365
+ function scalarMult(n, p) {
1366
+ const z = new Uint8Array(32);
1367
+ const x = new Float64Array(80);
1368
+ const a = gf$1(), b = gf$1(), c = gf$1(), d = gf$1(), e = gf$1(), f = gf$1();
1369
+ for (let i = 0; i < 31; i++) z[i] = n[i];
1370
+ z[31] = n[31] & 127 | 64;
1371
+ z[0] &= 248;
1372
+ unpack25519$1(x, p);
1373
+ for (let i = 0; i < 16; i++) b[i] = x[i];
1374
+ a[0] = d[0] = 1;
1375
+ for (let i = 254; i >= 0; --i) {
1376
+ const r = z[i >>> 3] >>> (i & 7) & 1;
1377
+ sel25519$1(a, b, r);
1378
+ sel25519$1(c, d, r);
1379
+ add$1(e, a, c);
1380
+ sub$1(a, a, c);
1381
+ add$1(c, b, d);
1382
+ sub$1(b, b, d);
1383
+ square$1(d, e);
1384
+ square$1(f, a);
1385
+ mul$1(a, c, a);
1386
+ mul$1(c, b, e);
1387
+ add$1(e, a, c);
1388
+ sub$1(a, a, c);
1389
+ square$1(b, a);
1390
+ sub$1(c, d, f);
1391
+ mul$1(a, c, _121665);
1392
+ add$1(a, a, d);
1393
+ mul$1(c, c, a);
1394
+ mul$1(a, d, f);
1395
+ mul$1(d, b, x);
1396
+ square$1(b, e);
1397
+ sel25519$1(a, b, r);
1398
+ sel25519$1(c, d, r);
1399
+ }
1400
+ for (let i = 0; i < 16; i++) {
1401
+ x[i + 16] = a[i];
1402
+ x[i + 32] = c[i];
1403
+ x[i + 48] = b[i];
1404
+ x[i + 64] = d[i];
1405
+ }
1406
+ const x32 = x.subarray(32);
1407
+ const x16 = x.subarray(16);
1408
+ inv25519$1(x32, x32);
1409
+ mul$1(x16, x16, x32);
1410
+ const q = new Uint8Array(32);
1411
+ pack25519$1(q, x16);
1412
+ return q;
1413
+ }
1414
+ function scalarMultBase(n) {
1415
+ return scalarMult(n, _9$1);
1416
+ }
1417
+ function generateKeyPairFromSeed$1(seed) {
1418
+ if (seed.length !== 32) throw new Error(`x25519: seed must be ${32} bytes`);
1419
+ const secretKey = new Uint8Array(seed);
1420
+ return {
1421
+ publicKey: scalarMultBase(secretKey),
1422
+ secretKey
1423
+ };
1424
+ }
1425
+ function generateKeyPair$3(prng) {
1426
+ const seed = randomBytes(32, prng);
1427
+ const result = generateKeyPairFromSeed$1(seed);
1428
+ wipe(seed);
1429
+ return result;
1430
+ }
1431
+ /**
1432
+ * Returns a shared key between our secret key and a peer's public key.
1433
+ *
1434
+ * Throws an error if the given keys are of wrong length.
1435
+ *
1436
+ * If rejectZero is true throws if the calculated shared key is all-zero.
1437
+ * From RFC 7748:
1438
+ *
1439
+ * > Protocol designers using Diffie-Hellman over the curves defined in
1440
+ * > this document must not assume "contributory behavior". Specially,
1441
+ * > contributory behavior means that both parties' private keys
1442
+ * > contribute to the resulting shared key. Since curve25519 and
1443
+ * > curve448 have cofactors of 8 and 4 (respectively), an input point of
1444
+ * > small order will eliminate any contribution from the other party's
1445
+ * > private key. This situation can be detected by checking for the all-
1446
+ * > zero output, which implementations MAY do, as specified in Section 6.
1447
+ * > However, a large number of existing implementations do not do this.
1448
+ *
1449
+ * IMPORTANT: the returned key is a raw result of scalar multiplication.
1450
+ * To use it as a key material, hash it with a cryptographic hash function.
1451
+ */
1452
+ function sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {
1453
+ if (mySecretKey.length !== 32) throw new Error("X25519: incorrect secret key length");
1454
+ if (theirPublicKey.length !== 32) throw new Error("X25519: incorrect public key length");
1455
+ const result = scalarMult(mySecretKey, theirPublicKey);
1456
+ if (rejectZero) {
1457
+ let zeros = 0;
1458
+ for (let i = 0; i < result.length; i++) zeros |= result[i];
1459
+ if (zeros === 0) throw new Error("X25519: invalid shared key");
1460
+ }
1461
+ return result;
1462
+ }
1463
+
1464
+ //#endregion
1465
+ //#region src/curve25519.ts
1466
+ var curve25519_exports = /* @__PURE__ */ __exportAll({
1467
+ generateKeyPair: () => generateKeyPair$2,
1468
+ generateSharedSecKey: () => generateSharedSecKey
1469
+ });
1470
+ function generateKeyPair$2() {
1471
+ return generateKeyPair$3();
1472
+ }
1473
+ function generateSharedSecKey(priKey, pubKey) {
1474
+ return sharedKey(priKey, pubKey);
1475
+ }
1476
+
1477
+ //#endregion
1478
+ //#region ../../node_modules/.bun/@stablelib+sha512@2.0.1/node_modules/@stablelib/sha512/lib/sha512.js
1479
+ const DIGEST_LENGTH = 64;
1480
+ const BLOCK_SIZE = 128;
1481
+ /**
1482
+ * SHA-2-512 cryptographic hash algorithm.
1483
+ */
1484
+ var SHA512 = class {
1485
+ /** Length of hash output */
1486
+ digestLength = 64;
1487
+ /** Block size */
1488
+ blockSize = 128;
1489
+ _stateHi = new Int32Array(8);
1490
+ _stateLo = new Int32Array(8);
1491
+ _tempHi = new Int32Array(16);
1492
+ _tempLo = new Int32Array(16);
1493
+ _buffer = new Uint8Array(256);
1494
+ _bufferLength = 0;
1495
+ _bytesHashed = 0;
1496
+ _finished = false;
1497
+ constructor() {
1498
+ this.reset();
1499
+ }
1500
+ _initState() {
1501
+ this._stateHi[0] = 1779033703;
1502
+ this._stateHi[1] = 3144134277;
1503
+ this._stateHi[2] = 1013904242;
1504
+ this._stateHi[3] = 2773480762;
1505
+ this._stateHi[4] = 1359893119;
1506
+ this._stateHi[5] = 2600822924;
1507
+ this._stateHi[6] = 528734635;
1508
+ this._stateHi[7] = 1541459225;
1509
+ this._stateLo[0] = 4089235720;
1510
+ this._stateLo[1] = 2227873595;
1511
+ this._stateLo[2] = 4271175723;
1512
+ this._stateLo[3] = 1595750129;
1513
+ this._stateLo[4] = 2917565137;
1514
+ this._stateLo[5] = 725511199;
1515
+ this._stateLo[6] = 4215389547;
1516
+ this._stateLo[7] = 327033209;
1517
+ }
1518
+ /**
1519
+ * Resets hash state making it possible
1520
+ * to re-use this instance to hash other data.
1521
+ */
1522
+ reset() {
1523
+ this._initState();
1524
+ this._bufferLength = 0;
1525
+ this._bytesHashed = 0;
1526
+ this._finished = false;
1527
+ return this;
1528
+ }
1529
+ /**
1530
+ * Cleans internal buffers and resets hash state.
1531
+ */
1532
+ clean() {
1533
+ wipe(this._buffer);
1534
+ wipe(this._tempHi);
1535
+ wipe(this._tempLo);
1536
+ this.reset();
1537
+ }
1538
+ /**
1539
+ * Updates hash state with the given data.
1540
+ *
1541
+ * Throws error when trying to update already finalized hash:
1542
+ * instance must be reset to update it again.
1543
+ */
1544
+ update(data, dataLength = data.length) {
1545
+ if (this._finished) throw new Error("SHA512: can't update because hash was finished.");
1546
+ let dataPos = 0;
1547
+ this._bytesHashed += dataLength;
1548
+ if (this._bufferLength > 0) {
1549
+ while (this._bufferLength < 128 && dataLength > 0) {
1550
+ this._buffer[this._bufferLength++] = data[dataPos++];
1551
+ dataLength--;
1027
1552
  }
1028
- x0 = x0 + j0 | 0;
1029
- x1 = x1 + j1 | 0;
1030
- x2 = x2 + j2 | 0;
1031
- x3 = x3 + j3 | 0;
1032
- x4 = x4 + j4 | 0;
1033
- x5 = x5 + j5 | 0;
1034
- x6 = x6 + j6 | 0;
1035
- x7 = x7 + j7 | 0;
1036
- x8 = x8 + j8 | 0;
1037
- x9 = x9 + j9 | 0;
1038
- x10 = x10 + j10 | 0;
1039
- x11 = x11 + j11 | 0;
1040
- x12 = x12 + j12 | 0;
1041
- x13 = x13 + j13 | 0;
1042
- x14 = x14 + j14 | 0;
1043
- x15 = x15 + j15 | 0;
1044
- o[0] = x0 >>> 0 & 255;
1045
- o[1] = x0 >>> 8 & 255;
1046
- o[2] = x0 >>> 16 & 255;
1047
- o[3] = x0 >>> 24 & 255;
1048
- o[4] = x1 >>> 0 & 255;
1049
- o[5] = x1 >>> 8 & 255;
1050
- o[6] = x1 >>> 16 & 255;
1051
- o[7] = x1 >>> 24 & 255;
1052
- o[8] = x2 >>> 0 & 255;
1053
- o[9] = x2 >>> 8 & 255;
1054
- o[10] = x2 >>> 16 & 255;
1055
- o[11] = x2 >>> 24 & 255;
1056
- o[12] = x3 >>> 0 & 255;
1057
- o[13] = x3 >>> 8 & 255;
1058
- o[14] = x3 >>> 16 & 255;
1059
- o[15] = x3 >>> 24 & 255;
1060
- o[16] = x4 >>> 0 & 255;
1061
- o[17] = x4 >>> 8 & 255;
1062
- o[18] = x4 >>> 16 & 255;
1063
- o[19] = x4 >>> 24 & 255;
1064
- o[20] = x5 >>> 0 & 255;
1065
- o[21] = x5 >>> 8 & 255;
1066
- o[22] = x5 >>> 16 & 255;
1067
- o[23] = x5 >>> 24 & 255;
1068
- o[24] = x6 >>> 0 & 255;
1069
- o[25] = x6 >>> 8 & 255;
1070
- o[26] = x6 >>> 16 & 255;
1071
- o[27] = x6 >>> 24 & 255;
1072
- o[28] = x7 >>> 0 & 255;
1073
- o[29] = x7 >>> 8 & 255;
1074
- o[30] = x7 >>> 16 & 255;
1075
- o[31] = x7 >>> 24 & 255;
1076
- o[32] = x8 >>> 0 & 255;
1077
- o[33] = x8 >>> 8 & 255;
1078
- o[34] = x8 >>> 16 & 255;
1079
- o[35] = x8 >>> 24 & 255;
1080
- o[36] = x9 >>> 0 & 255;
1081
- o[37] = x9 >>> 8 & 255;
1082
- o[38] = x9 >>> 16 & 255;
1083
- o[39] = x9 >>> 24 & 255;
1084
- o[40] = x10 >>> 0 & 255;
1085
- o[41] = x10 >>> 8 & 255;
1086
- o[42] = x10 >>> 16 & 255;
1087
- o[43] = x10 >>> 24 & 255;
1088
- o[44] = x11 >>> 0 & 255;
1089
- o[45] = x11 >>> 8 & 255;
1090
- o[46] = x11 >>> 16 & 255;
1091
- o[47] = x11 >>> 24 & 255;
1092
- o[48] = x12 >>> 0 & 255;
1093
- o[49] = x12 >>> 8 & 255;
1094
- o[50] = x12 >>> 16 & 255;
1095
- o[51] = x12 >>> 24 & 255;
1096
- o[52] = x13 >>> 0 & 255;
1097
- o[53] = x13 >>> 8 & 255;
1098
- o[54] = x13 >>> 16 & 255;
1099
- o[55] = x13 >>> 24 & 255;
1100
- o[56] = x14 >>> 0 & 255;
1101
- o[57] = x14 >>> 8 & 255;
1102
- o[58] = x14 >>> 16 & 255;
1103
- o[59] = x14 >>> 24 & 255;
1104
- o[60] = x15 >>> 0 & 255;
1105
- o[61] = x15 >>> 8 & 255;
1106
- o[62] = x15 >>> 16 & 255;
1107
- o[63] = x15 >>> 24 & 255;
1108
- }
1109
- function core_hsalsa20(o, p, k, c) {
1110
- var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
1111
- var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
1112
- for (var i = 0; i < 20; i += 2) {
1113
- u = x0 + x12 | 0;
1114
- x4 ^= u << 7 | u >>> 25;
1115
- u = x4 + x0 | 0;
1116
- x8 ^= u << 9 | u >>> 23;
1117
- u = x8 + x4 | 0;
1118
- x12 ^= u << 13 | u >>> 19;
1119
- u = x12 + x8 | 0;
1120
- x0 ^= u << 18 | u >>> 14;
1121
- u = x5 + x1 | 0;
1122
- x9 ^= u << 7 | u >>> 25;
1123
- u = x9 + x5 | 0;
1124
- x13 ^= u << 9 | u >>> 23;
1125
- u = x13 + x9 | 0;
1126
- x1 ^= u << 13 | u >>> 19;
1127
- u = x1 + x13 | 0;
1128
- x5 ^= u << 18 | u >>> 14;
1129
- u = x10 + x6 | 0;
1130
- x14 ^= u << 7 | u >>> 25;
1131
- u = x14 + x10 | 0;
1132
- x2 ^= u << 9 | u >>> 23;
1133
- u = x2 + x14 | 0;
1134
- x6 ^= u << 13 | u >>> 19;
1135
- u = x6 + x2 | 0;
1136
- x10 ^= u << 18 | u >>> 14;
1137
- u = x15 + x11 | 0;
1138
- x3 ^= u << 7 | u >>> 25;
1139
- u = x3 + x15 | 0;
1140
- x7 ^= u << 9 | u >>> 23;
1141
- u = x7 + x3 | 0;
1142
- x11 ^= u << 13 | u >>> 19;
1143
- u = x11 + x7 | 0;
1144
- x15 ^= u << 18 | u >>> 14;
1145
- u = x0 + x3 | 0;
1146
- x1 ^= u << 7 | u >>> 25;
1147
- u = x1 + x0 | 0;
1148
- x2 ^= u << 9 | u >>> 23;
1149
- u = x2 + x1 | 0;
1150
- x3 ^= u << 13 | u >>> 19;
1151
- u = x3 + x2 | 0;
1152
- x0 ^= u << 18 | u >>> 14;
1153
- u = x5 + x4 | 0;
1154
- x6 ^= u << 7 | u >>> 25;
1155
- u = x6 + x5 | 0;
1156
- x7 ^= u << 9 | u >>> 23;
1157
- u = x7 + x6 | 0;
1158
- x4 ^= u << 13 | u >>> 19;
1159
- u = x4 + x7 | 0;
1160
- x5 ^= u << 18 | u >>> 14;
1161
- u = x10 + x9 | 0;
1162
- x11 ^= u << 7 | u >>> 25;
1163
- u = x11 + x10 | 0;
1164
- x8 ^= u << 9 | u >>> 23;
1165
- u = x8 + x11 | 0;
1166
- x9 ^= u << 13 | u >>> 19;
1167
- u = x9 + x8 | 0;
1168
- x10 ^= u << 18 | u >>> 14;
1169
- u = x15 + x14 | 0;
1170
- x12 ^= u << 7 | u >>> 25;
1171
- u = x12 + x15 | 0;
1172
- x13 ^= u << 9 | u >>> 23;
1173
- u = x13 + x12 | 0;
1174
- x14 ^= u << 13 | u >>> 19;
1175
- u = x14 + x13 | 0;
1176
- x15 ^= u << 18 | u >>> 14;
1553
+ if (this._bufferLength === this.blockSize) {
1554
+ hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);
1555
+ this._bufferLength = 0;
1177
1556
  }
1178
- o[0] = x0 >>> 0 & 255;
1179
- o[1] = x0 >>> 8 & 255;
1180
- o[2] = x0 >>> 16 & 255;
1181
- o[3] = x0 >>> 24 & 255;
1182
- o[4] = x5 >>> 0 & 255;
1183
- o[5] = x5 >>> 8 & 255;
1184
- o[6] = x5 >>> 16 & 255;
1185
- o[7] = x5 >>> 24 & 255;
1186
- o[8] = x10 >>> 0 & 255;
1187
- o[9] = x10 >>> 8 & 255;
1188
- o[10] = x10 >>> 16 & 255;
1189
- o[11] = x10 >>> 24 & 255;
1190
- o[12] = x15 >>> 0 & 255;
1191
- o[13] = x15 >>> 8 & 255;
1192
- o[14] = x15 >>> 16 & 255;
1193
- o[15] = x15 >>> 24 & 255;
1194
- o[16] = x6 >>> 0 & 255;
1195
- o[17] = x6 >>> 8 & 255;
1196
- o[18] = x6 >>> 16 & 255;
1197
- o[19] = x6 >>> 24 & 255;
1198
- o[20] = x7 >>> 0 & 255;
1199
- o[21] = x7 >>> 8 & 255;
1200
- o[22] = x7 >>> 16 & 255;
1201
- o[23] = x7 >>> 24 & 255;
1202
- o[24] = x8 >>> 0 & 255;
1203
- o[25] = x8 >>> 8 & 255;
1204
- o[26] = x8 >>> 16 & 255;
1205
- o[27] = x8 >>> 24 & 255;
1206
- o[28] = x9 >>> 0 & 255;
1207
- o[29] = x9 >>> 8 & 255;
1208
- o[30] = x9 >>> 16 & 255;
1209
- o[31] = x9 >>> 24 & 255;
1210
- }
1211
- function crypto_core_salsa20(out, inp, k, c) {
1212
- core_salsa20(out, inp, k, c);
1213
- }
1214
- function crypto_core_hsalsa20(out, inp, k, c) {
1215
- core_hsalsa20(out, inp, k, c);
1216
1557
  }
1217
- var sigma = new Uint8Array([
1218
- 101,
1219
- 120,
1220
- 112,
1221
- 97,
1222
- 110,
1223
- 100,
1224
- 32,
1225
- 51,
1226
- 50,
1227
- 45,
1228
- 98,
1229
- 121,
1230
- 116,
1231
- 101,
1232
- 32,
1233
- 107
1234
- ]);
1235
- function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
1236
- var z = new Uint8Array(16), x = new Uint8Array(64);
1237
- var u, i;
1238
- for (i = 0; i < 16; i++) z[i] = 0;
1239
- for (i = 0; i < 8; i++) z[i] = n[i];
1240
- while (b >= 64) {
1241
- crypto_core_salsa20(x, z, k, sigma);
1242
- for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i];
1243
- u = 1;
1244
- for (i = 8; i < 16; i++) {
1245
- u = u + (z[i] & 255) | 0;
1246
- z[i] = u & 255;
1247
- u >>>= 8;
1248
- }
1249
- b -= 64;
1250
- cpos += 64;
1251
- mpos += 64;
1252
- }
1253
- if (b > 0) {
1254
- crypto_core_salsa20(x, z, k, sigma);
1255
- for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i];
1256
- }
1257
- return 0;
1558
+ if (dataLength >= this.blockSize) {
1559
+ dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);
1560
+ dataLength %= this.blockSize;
1258
1561
  }
1259
- function crypto_stream_salsa20(c, cpos, b, n, k) {
1260
- var z = new Uint8Array(16), x = new Uint8Array(64);
1261
- var u, i;
1262
- for (i = 0; i < 16; i++) z[i] = 0;
1263
- for (i = 0; i < 8; i++) z[i] = n[i];
1264
- while (b >= 64) {
1265
- crypto_core_salsa20(x, z, k, sigma);
1266
- for (i = 0; i < 64; i++) c[cpos + i] = x[i];
1267
- u = 1;
1268
- for (i = 8; i < 16; i++) {
1269
- u = u + (z[i] & 255) | 0;
1270
- z[i] = u & 255;
1271
- u >>>= 8;
1272
- }
1273
- b -= 64;
1274
- cpos += 64;
1275
- }
1276
- if (b > 0) {
1277
- crypto_core_salsa20(x, z, k, sigma);
1278
- for (i = 0; i < b; i++) c[cpos + i] = x[i];
1279
- }
1280
- return 0;
1562
+ while (dataLength > 0) {
1563
+ this._buffer[this._bufferLength++] = data[dataPos++];
1564
+ dataLength--;
1281
1565
  }
1282
- function crypto_stream(c, cpos, d, n, k) {
1283
- var s = new Uint8Array(32);
1284
- crypto_core_hsalsa20(s, n, k, sigma);
1285
- var sn = new Uint8Array(8);
1286
- for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
1287
- return crypto_stream_salsa20(c, cpos, d, sn, s);
1566
+ return this;
1567
+ }
1568
+ /**
1569
+ * Finalizes hash state and puts hash into out.
1570
+ * If hash was already finalized, puts the same value.
1571
+ */
1572
+ finish(out) {
1573
+ if (!this._finished) {
1574
+ const bytesHashed = this._bytesHashed;
1575
+ const left = this._bufferLength;
1576
+ const bitLenHi = bytesHashed / 536870912 | 0;
1577
+ const bitLenLo = bytesHashed << 3;
1578
+ const padLength = bytesHashed % 128 < 112 ? 128 : 256;
1579
+ this._buffer[left] = 128;
1580
+ for (let i = left + 1; i < padLength - 8; i++) this._buffer[i] = 0;
1581
+ writeUint32BE(bitLenHi, this._buffer, padLength - 8);
1582
+ writeUint32BE(bitLenLo, this._buffer, padLength - 4);
1583
+ hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);
1584
+ this._finished = true;
1288
1585
  }
1289
- function crypto_stream_xor(c, cpos, m, mpos, d, n, k) {
1290
- var s = new Uint8Array(32);
1291
- crypto_core_hsalsa20(s, n, k, sigma);
1292
- var sn = new Uint8Array(8);
1293
- for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
1294
- return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s);
1586
+ for (let i = 0; i < this.digestLength / 8; i++) {
1587
+ writeUint32BE(this._stateHi[i], out, i * 8);
1588
+ writeUint32BE(this._stateLo[i], out, i * 8 + 4);
1295
1589
  }
1296
- var poly1305 = function(key) {
1297
- this.buffer = new Uint8Array(16);
1298
- this.r = new Uint16Array(10);
1299
- this.h = new Uint16Array(10);
1300
- this.pad = new Uint16Array(8);
1301
- this.leftover = 0;
1302
- this.fin = 0;
1303
- var t0 = key[0] & 255 | (key[1] & 255) << 8, t1, t2, t3, t4, t5, t6, t7;
1304
- this.r[0] = t0 & 8191;
1305
- t1 = key[2] & 255 | (key[3] & 255) << 8;
1306
- this.r[1] = (t0 >>> 13 | t1 << 3) & 8191;
1307
- t2 = key[4] & 255 | (key[5] & 255) << 8;
1308
- this.r[2] = (t1 >>> 10 | t2 << 6) & 7939;
1309
- t3 = key[6] & 255 | (key[7] & 255) << 8;
1310
- this.r[3] = (t2 >>> 7 | t3 << 9) & 8191;
1311
- t4 = key[8] & 255 | (key[9] & 255) << 8;
1312
- this.r[4] = (t3 >>> 4 | t4 << 12) & 255;
1313
- this.r[5] = t4 >>> 1 & 8190;
1314
- t5 = key[10] & 255 | (key[11] & 255) << 8;
1315
- this.r[6] = (t4 >>> 14 | t5 << 2) & 8191;
1316
- t6 = key[12] & 255 | (key[13] & 255) << 8;
1317
- this.r[7] = (t5 >>> 11 | t6 << 5) & 8065;
1318
- t7 = key[14] & 255 | (key[15] & 255) << 8;
1319
- this.r[8] = (t6 >>> 8 | t7 << 8) & 8191;
1320
- this.r[9] = t7 >>> 5 & 127;
1321
- this.pad[0] = key[16] & 255 | (key[17] & 255) << 8;
1322
- this.pad[1] = key[18] & 255 | (key[19] & 255) << 8;
1323
- this.pad[2] = key[20] & 255 | (key[21] & 255) << 8;
1324
- this.pad[3] = key[22] & 255 | (key[23] & 255) << 8;
1325
- this.pad[4] = key[24] & 255 | (key[25] & 255) << 8;
1326
- this.pad[5] = key[26] & 255 | (key[27] & 255) << 8;
1327
- this.pad[6] = key[28] & 255 | (key[29] & 255) << 8;
1328
- this.pad[7] = key[30] & 255 | (key[31] & 255) << 8;
1329
- };
1330
- poly1305.prototype.blocks = function(m, mpos, bytes) {
1331
- var hibit = this.fin ? 0 : 2048;
1332
- var t0, t1, t2, t3, t4, t5, t6, t7, c;
1333
- var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
1334
- var h0 = this.h[0], h1 = this.h[1], h2 = this.h[2], h3 = this.h[3], h4 = this.h[4], h5 = this.h[5], h6 = this.h[6], h7 = this.h[7], h8 = this.h[8], h9 = this.h[9];
1335
- var r0 = this.r[0], r1 = this.r[1], r2 = this.r[2], r3 = this.r[3], r4 = this.r[4], r5 = this.r[5], r6 = this.r[6], r7 = this.r[7], r8 = this.r[8], r9 = this.r[9];
1336
- while (bytes >= 16) {
1337
- t0 = m[mpos + 0] & 255 | (m[mpos + 1] & 255) << 8;
1338
- h0 += t0 & 8191;
1339
- t1 = m[mpos + 2] & 255 | (m[mpos + 3] & 255) << 8;
1340
- h1 += (t0 >>> 13 | t1 << 3) & 8191;
1341
- t2 = m[mpos + 4] & 255 | (m[mpos + 5] & 255) << 8;
1342
- h2 += (t1 >>> 10 | t2 << 6) & 8191;
1343
- t3 = m[mpos + 6] & 255 | (m[mpos + 7] & 255) << 8;
1344
- h3 += (t2 >>> 7 | t3 << 9) & 8191;
1345
- t4 = m[mpos + 8] & 255 | (m[mpos + 9] & 255) << 8;
1346
- h4 += (t3 >>> 4 | t4 << 12) & 8191;
1347
- h5 += t4 >>> 1 & 8191;
1348
- t5 = m[mpos + 10] & 255 | (m[mpos + 11] & 255) << 8;
1349
- h6 += (t4 >>> 14 | t5 << 2) & 8191;
1350
- t6 = m[mpos + 12] & 255 | (m[mpos + 13] & 255) << 8;
1351
- h7 += (t5 >>> 11 | t6 << 5) & 8191;
1352
- t7 = m[mpos + 14] & 255 | (m[mpos + 15] & 255) << 8;
1353
- h8 += (t6 >>> 8 | t7 << 8) & 8191;
1354
- h9 += t7 >>> 5 | hibit;
1355
- c = 0;
1356
- d0 = c;
1357
- d0 += h0 * r0;
1358
- d0 += h1 * (5 * r9);
1359
- d0 += h2 * (5 * r8);
1360
- d0 += h3 * (5 * r7);
1361
- d0 += h4 * (5 * r6);
1362
- c = d0 >>> 13;
1363
- d0 &= 8191;
1364
- d0 += h5 * (5 * r5);
1365
- d0 += h6 * (5 * r4);
1366
- d0 += h7 * (5 * r3);
1367
- d0 += h8 * (5 * r2);
1368
- d0 += h9 * (5 * r1);
1369
- c += d0 >>> 13;
1370
- d0 &= 8191;
1371
- d1 = c;
1372
- d1 += h0 * r1;
1373
- d1 += h1 * r0;
1374
- d1 += h2 * (5 * r9);
1375
- d1 += h3 * (5 * r8);
1376
- d1 += h4 * (5 * r7);
1377
- c = d1 >>> 13;
1378
- d1 &= 8191;
1379
- d1 += h5 * (5 * r6);
1380
- d1 += h6 * (5 * r5);
1381
- d1 += h7 * (5 * r4);
1382
- d1 += h8 * (5 * r3);
1383
- d1 += h9 * (5 * r2);
1384
- c += d1 >>> 13;
1385
- d1 &= 8191;
1386
- d2 = c;
1387
- d2 += h0 * r2;
1388
- d2 += h1 * r1;
1389
- d2 += h2 * r0;
1390
- d2 += h3 * (5 * r9);
1391
- d2 += h4 * (5 * r8);
1392
- c = d2 >>> 13;
1393
- d2 &= 8191;
1394
- d2 += h5 * (5 * r7);
1395
- d2 += h6 * (5 * r6);
1396
- d2 += h7 * (5 * r5);
1397
- d2 += h8 * (5 * r4);
1398
- d2 += h9 * (5 * r3);
1399
- c += d2 >>> 13;
1400
- d2 &= 8191;
1401
- d3 = c;
1402
- d3 += h0 * r3;
1403
- d3 += h1 * r2;
1404
- d3 += h2 * r1;
1405
- d3 += h3 * r0;
1406
- d3 += h4 * (5 * r9);
1407
- c = d3 >>> 13;
1408
- d3 &= 8191;
1409
- d3 += h5 * (5 * r8);
1410
- d3 += h6 * (5 * r7);
1411
- d3 += h7 * (5 * r6);
1412
- d3 += h8 * (5 * r5);
1413
- d3 += h9 * (5 * r4);
1414
- c += d3 >>> 13;
1415
- d3 &= 8191;
1416
- d4 = c;
1417
- d4 += h0 * r4;
1418
- d4 += h1 * r3;
1419
- d4 += h2 * r2;
1420
- d4 += h3 * r1;
1421
- d4 += h4 * r0;
1422
- c = d4 >>> 13;
1423
- d4 &= 8191;
1424
- d4 += h5 * (5 * r9);
1425
- d4 += h6 * (5 * r8);
1426
- d4 += h7 * (5 * r7);
1427
- d4 += h8 * (5 * r6);
1428
- d4 += h9 * (5 * r5);
1429
- c += d4 >>> 13;
1430
- d4 &= 8191;
1431
- d5 = c;
1432
- d5 += h0 * r5;
1433
- d5 += h1 * r4;
1434
- d5 += h2 * r3;
1435
- d5 += h3 * r2;
1436
- d5 += h4 * r1;
1437
- c = d5 >>> 13;
1438
- d5 &= 8191;
1439
- d5 += h5 * r0;
1440
- d5 += h6 * (5 * r9);
1441
- d5 += h7 * (5 * r8);
1442
- d5 += h8 * (5 * r7);
1443
- d5 += h9 * (5 * r6);
1444
- c += d5 >>> 13;
1445
- d5 &= 8191;
1446
- d6 = c;
1447
- d6 += h0 * r6;
1448
- d6 += h1 * r5;
1449
- d6 += h2 * r4;
1450
- d6 += h3 * r3;
1451
- d6 += h4 * r2;
1452
- c = d6 >>> 13;
1453
- d6 &= 8191;
1454
- d6 += h5 * r1;
1455
- d6 += h6 * r0;
1456
- d6 += h7 * (5 * r9);
1457
- d6 += h8 * (5 * r8);
1458
- d6 += h9 * (5 * r7);
1459
- c += d6 >>> 13;
1460
- d6 &= 8191;
1461
- d7 = c;
1462
- d7 += h0 * r7;
1463
- d7 += h1 * r6;
1464
- d7 += h2 * r5;
1465
- d7 += h3 * r4;
1466
- d7 += h4 * r3;
1467
- c = d7 >>> 13;
1468
- d7 &= 8191;
1469
- d7 += h5 * r2;
1470
- d7 += h6 * r1;
1471
- d7 += h7 * r0;
1472
- d7 += h8 * (5 * r9);
1473
- d7 += h9 * (5 * r8);
1474
- c += d7 >>> 13;
1475
- d7 &= 8191;
1476
- d8 = c;
1477
- d8 += h0 * r8;
1478
- d8 += h1 * r7;
1479
- d8 += h2 * r6;
1480
- d8 += h3 * r5;
1481
- d8 += h4 * r4;
1482
- c = d8 >>> 13;
1483
- d8 &= 8191;
1484
- d8 += h5 * r3;
1485
- d8 += h6 * r2;
1486
- d8 += h7 * r1;
1487
- d8 += h8 * r0;
1488
- d8 += h9 * (5 * r9);
1489
- c += d8 >>> 13;
1490
- d8 &= 8191;
1491
- d9 = c;
1492
- d9 += h0 * r9;
1493
- d9 += h1 * r8;
1494
- d9 += h2 * r7;
1495
- d9 += h3 * r6;
1496
- d9 += h4 * r5;
1497
- c = d9 >>> 13;
1498
- d9 &= 8191;
1499
- d9 += h5 * r4;
1500
- d9 += h6 * r3;
1501
- d9 += h7 * r2;
1502
- d9 += h8 * r1;
1503
- d9 += h9 * r0;
1504
- c += d9 >>> 13;
1505
- d9 &= 8191;
1506
- c = (c << 2) + c | 0;
1507
- c = c + d0 | 0;
1508
- d0 = c & 8191;
1509
- c = c >>> 13;
1510
- d1 += c;
1511
- h0 = d0;
1512
- h1 = d1;
1513
- h2 = d2;
1514
- h3 = d3;
1515
- h4 = d4;
1516
- h5 = d5;
1517
- h6 = d6;
1518
- h7 = d7;
1519
- h8 = d8;
1520
- h9 = d9;
1521
- mpos += 16;
1522
- bytes -= 16;
1523
- }
1524
- this.h[0] = h0;
1525
- this.h[1] = h1;
1526
- this.h[2] = h2;
1527
- this.h[3] = h3;
1528
- this.h[4] = h4;
1529
- this.h[5] = h5;
1530
- this.h[6] = h6;
1531
- this.h[7] = h7;
1532
- this.h[8] = h8;
1533
- this.h[9] = h9;
1534
- };
1535
- poly1305.prototype.finish = function(mac, macpos) {
1536
- var g = new Uint16Array(10);
1537
- var c, mask, f, i;
1538
- if (this.leftover) {
1539
- i = this.leftover;
1540
- this.buffer[i++] = 1;
1541
- for (; i < 16; i++) this.buffer[i] = 0;
1542
- this.fin = 1;
1543
- this.blocks(this.buffer, 0, 16);
1544
- }
1545
- c = this.h[1] >>> 13;
1546
- this.h[1] &= 8191;
1547
- for (i = 2; i < 10; i++) {
1548
- this.h[i] += c;
1549
- c = this.h[i] >>> 13;
1550
- this.h[i] &= 8191;
1551
- }
1552
- this.h[0] += c * 5;
1553
- c = this.h[0] >>> 13;
1554
- this.h[0] &= 8191;
1555
- this.h[1] += c;
1556
- c = this.h[1] >>> 13;
1557
- this.h[1] &= 8191;
1558
- this.h[2] += c;
1559
- g[0] = this.h[0] + 5;
1560
- c = g[0] >>> 13;
1561
- g[0] &= 8191;
1562
- for (i = 1; i < 10; i++) {
1563
- g[i] = this.h[i] + c;
1564
- c = g[i] >>> 13;
1565
- g[i] &= 8191;
1566
- }
1567
- g[9] -= 8192;
1568
- mask = (c ^ 1) - 1;
1569
- for (i = 0; i < 10; i++) g[i] &= mask;
1570
- mask = ~mask;
1571
- for (i = 0; i < 10; i++) this.h[i] = this.h[i] & mask | g[i];
1572
- this.h[0] = (this.h[0] | this.h[1] << 13) & 65535;
1573
- this.h[1] = (this.h[1] >>> 3 | this.h[2] << 10) & 65535;
1574
- this.h[2] = (this.h[2] >>> 6 | this.h[3] << 7) & 65535;
1575
- this.h[3] = (this.h[3] >>> 9 | this.h[4] << 4) & 65535;
1576
- this.h[4] = (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14) & 65535;
1577
- this.h[5] = (this.h[6] >>> 2 | this.h[7] << 11) & 65535;
1578
- this.h[6] = (this.h[7] >>> 5 | this.h[8] << 8) & 65535;
1579
- this.h[7] = (this.h[8] >>> 8 | this.h[9] << 5) & 65535;
1580
- f = this.h[0] + this.pad[0];
1581
- this.h[0] = f & 65535;
1582
- for (i = 1; i < 8; i++) {
1583
- f = (this.h[i] + this.pad[i] | 0) + (f >>> 16) | 0;
1584
- this.h[i] = f & 65535;
1585
- }
1586
- mac[macpos + 0] = this.h[0] >>> 0 & 255;
1587
- mac[macpos + 1] = this.h[0] >>> 8 & 255;
1588
- mac[macpos + 2] = this.h[1] >>> 0 & 255;
1589
- mac[macpos + 3] = this.h[1] >>> 8 & 255;
1590
- mac[macpos + 4] = this.h[2] >>> 0 & 255;
1591
- mac[macpos + 5] = this.h[2] >>> 8 & 255;
1592
- mac[macpos + 6] = this.h[3] >>> 0 & 255;
1593
- mac[macpos + 7] = this.h[3] >>> 8 & 255;
1594
- mac[macpos + 8] = this.h[4] >>> 0 & 255;
1595
- mac[macpos + 9] = this.h[4] >>> 8 & 255;
1596
- mac[macpos + 10] = this.h[5] >>> 0 & 255;
1597
- mac[macpos + 11] = this.h[5] >>> 8 & 255;
1598
- mac[macpos + 12] = this.h[6] >>> 0 & 255;
1599
- mac[macpos + 13] = this.h[6] >>> 8 & 255;
1600
- mac[macpos + 14] = this.h[7] >>> 0 & 255;
1601
- mac[macpos + 15] = this.h[7] >>> 8 & 255;
1602
- };
1603
- poly1305.prototype.update = function(m, mpos, bytes) {
1604
- var i, want;
1605
- if (this.leftover) {
1606
- want = 16 - this.leftover;
1607
- if (want > bytes) want = bytes;
1608
- for (i = 0; i < want; i++) this.buffer[this.leftover + i] = m[mpos + i];
1609
- bytes -= want;
1610
- mpos += want;
1611
- this.leftover += want;
1612
- if (this.leftover < 16) return;
1613
- this.blocks(this.buffer, 0, 16);
1614
- this.leftover = 0;
1615
- }
1616
- if (bytes >= 16) {
1617
- want = bytes - bytes % 16;
1618
- this.blocks(m, mpos, want);
1619
- mpos += want;
1620
- bytes -= want;
1621
- }
1622
- if (bytes) {
1623
- for (i = 0; i < bytes; i++) this.buffer[this.leftover + i] = m[mpos + i];
1624
- this.leftover += bytes;
1625
- }
1590
+ return this;
1591
+ }
1592
+ /**
1593
+ * Returns the final hash digest.
1594
+ */
1595
+ digest() {
1596
+ const out = new Uint8Array(this.digestLength);
1597
+ this.finish(out);
1598
+ return out;
1599
+ }
1600
+ /**
1601
+ * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be
1602
+ * used with restoreState(). Only chain value is saved, not buffers or
1603
+ * other state variables.
1604
+ */
1605
+ saveState() {
1606
+ if (this._finished) throw new Error("SHA256: cannot save finished state");
1607
+ return {
1608
+ stateHi: new Int32Array(this._stateHi),
1609
+ stateLo: new Int32Array(this._stateLo),
1610
+ buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : void 0,
1611
+ bufferLength: this._bufferLength,
1612
+ bytesHashed: this._bytesHashed
1626
1613
  };
1627
- function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
1628
- var s = new poly1305(k);
1629
- s.update(m, mpos, n);
1630
- s.finish(out, outpos);
1631
- return 0;
1632
- }
1633
- function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
1634
- var x = new Uint8Array(16);
1635
- crypto_onetimeauth(x, 0, m, mpos, n, k);
1636
- return crypto_verify_16(h, hpos, x, 0);
1637
- }
1638
- function crypto_secretbox(c, m, d, n, k) {
1639
- var i;
1640
- if (d < 32) return -1;
1641
- crypto_stream_xor(c, 0, m, 0, d, n, k);
1642
- crypto_onetimeauth(c, 16, c, 32, d - 32, c);
1643
- for (i = 0; i < 16; i++) c[i] = 0;
1644
- return 0;
1645
- }
1646
- function crypto_secretbox_open(m, c, d, n, k) {
1647
- var i;
1648
- var x = new Uint8Array(32);
1649
- if (d < 32) return -1;
1650
- crypto_stream(x, 0, 32, n, k);
1651
- if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1;
1652
- crypto_stream_xor(m, 0, c, 0, d, n, k);
1653
- for (i = 0; i < 32; i++) m[i] = 0;
1654
- return 0;
1655
- }
1656
- function set25519(r, a) {
1657
- var i;
1658
- for (i = 0; i < 16; i++) r[i] = a[i] | 0;
1659
- }
1660
- function car25519(o) {
1661
- var i, v, c = 1;
1662
- for (i = 0; i < 16; i++) {
1663
- v = o[i] + c + 65535;
1664
- c = Math.floor(v / 65536);
1665
- o[i] = v - c * 65536;
1666
- }
1667
- o[0] += c - 1 + 37 * (c - 1);
1668
- }
1669
- function sel25519(p, q, b) {
1670
- var t, c = ~(b - 1);
1671
- for (var i = 0; i < 16; i++) {
1672
- t = c & (p[i] ^ q[i]);
1673
- p[i] ^= t;
1674
- q[i] ^= t;
1675
- }
1676
- }
1677
- function pack25519(o, n) {
1678
- var i, j, b;
1679
- var m = gf(), t = gf();
1680
- for (i = 0; i < 16; i++) t[i] = n[i];
1681
- car25519(t);
1682
- car25519(t);
1683
- car25519(t);
1684
- for (j = 0; j < 2; j++) {
1685
- m[0] = t[0] - 65517;
1686
- for (i = 1; i < 15; i++) {
1687
- m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
1688
- m[i - 1] &= 65535;
1689
- }
1690
- m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
1691
- b = m[15] >> 16 & 1;
1692
- m[14] &= 65535;
1693
- sel25519(t, m, 1 - b);
1694
- }
1695
- for (i = 0; i < 16; i++) {
1696
- o[2 * i] = t[i] & 255;
1697
- o[2 * i + 1] = t[i] >> 8;
1698
- }
1699
- }
1700
- function neq25519(a, b) {
1701
- var c = new Uint8Array(32), d = new Uint8Array(32);
1702
- pack25519(c, a);
1703
- pack25519(d, b);
1704
- return crypto_verify_32(c, 0, d, 0);
1705
- }
1706
- function par25519(a) {
1707
- var d = new Uint8Array(32);
1708
- pack25519(d, a);
1709
- return d[0] & 1;
1710
- }
1711
- function unpack25519(o, n) {
1712
- var i;
1713
- for (i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
1714
- o[15] &= 32767;
1715
- }
1716
- function A(o, a, b) {
1717
- for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
1718
- }
1719
- function Z(o, a, b) {
1720
- for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
1721
- }
1722
- function M(o, a, b) {
1723
- var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
1724
- v = a[0];
1725
- t0 += v * b0;
1726
- t1 += v * b1;
1727
- t2 += v * b2;
1728
- t3 += v * b3;
1729
- t4 += v * b4;
1730
- t5 += v * b5;
1731
- t6 += v * b6;
1732
- t7 += v * b7;
1733
- t8 += v * b8;
1734
- t9 += v * b9;
1735
- t10 += v * b10;
1736
- t11 += v * b11;
1737
- t12 += v * b12;
1738
- t13 += v * b13;
1739
- t14 += v * b14;
1740
- t15 += v * b15;
1741
- v = a[1];
1742
- t1 += v * b0;
1743
- t2 += v * b1;
1744
- t3 += v * b2;
1745
- t4 += v * b3;
1746
- t5 += v * b4;
1747
- t6 += v * b5;
1748
- t7 += v * b6;
1749
- t8 += v * b7;
1750
- t9 += v * b8;
1751
- t10 += v * b9;
1752
- t11 += v * b10;
1753
- t12 += v * b11;
1754
- t13 += v * b12;
1755
- t14 += v * b13;
1756
- t15 += v * b14;
1757
- t16 += v * b15;
1758
- v = a[2];
1759
- t2 += v * b0;
1760
- t3 += v * b1;
1761
- t4 += v * b2;
1762
- t5 += v * b3;
1763
- t6 += v * b4;
1764
- t7 += v * b5;
1765
- t8 += v * b6;
1766
- t9 += v * b7;
1767
- t10 += v * b8;
1768
- t11 += v * b9;
1769
- t12 += v * b10;
1770
- t13 += v * b11;
1771
- t14 += v * b12;
1772
- t15 += v * b13;
1773
- t16 += v * b14;
1774
- t17 += v * b15;
1775
- v = a[3];
1776
- t3 += v * b0;
1777
- t4 += v * b1;
1778
- t5 += v * b2;
1779
- t6 += v * b3;
1780
- t7 += v * b4;
1781
- t8 += v * b5;
1782
- t9 += v * b6;
1783
- t10 += v * b7;
1784
- t11 += v * b8;
1785
- t12 += v * b9;
1786
- t13 += v * b10;
1787
- t14 += v * b11;
1788
- t15 += v * b12;
1789
- t16 += v * b13;
1790
- t17 += v * b14;
1791
- t18 += v * b15;
1792
- v = a[4];
1793
- t4 += v * b0;
1794
- t5 += v * b1;
1795
- t6 += v * b2;
1796
- t7 += v * b3;
1797
- t8 += v * b4;
1798
- t9 += v * b5;
1799
- t10 += v * b6;
1800
- t11 += v * b7;
1801
- t12 += v * b8;
1802
- t13 += v * b9;
1803
- t14 += v * b10;
1804
- t15 += v * b11;
1805
- t16 += v * b12;
1806
- t17 += v * b13;
1807
- t18 += v * b14;
1808
- t19 += v * b15;
1809
- v = a[5];
1810
- t5 += v * b0;
1811
- t6 += v * b1;
1812
- t7 += v * b2;
1813
- t8 += v * b3;
1814
- t9 += v * b4;
1815
- t10 += v * b5;
1816
- t11 += v * b6;
1817
- t12 += v * b7;
1818
- t13 += v * b8;
1819
- t14 += v * b9;
1820
- t15 += v * b10;
1821
- t16 += v * b11;
1822
- t17 += v * b12;
1823
- t18 += v * b13;
1824
- t19 += v * b14;
1825
- t20 += v * b15;
1826
- v = a[6];
1827
- t6 += v * b0;
1828
- t7 += v * b1;
1829
- t8 += v * b2;
1830
- t9 += v * b3;
1831
- t10 += v * b4;
1832
- t11 += v * b5;
1833
- t12 += v * b6;
1834
- t13 += v * b7;
1835
- t14 += v * b8;
1836
- t15 += v * b9;
1837
- t16 += v * b10;
1838
- t17 += v * b11;
1839
- t18 += v * b12;
1840
- t19 += v * b13;
1841
- t20 += v * b14;
1842
- t21 += v * b15;
1843
- v = a[7];
1844
- t7 += v * b0;
1845
- t8 += v * b1;
1846
- t9 += v * b2;
1847
- t10 += v * b3;
1848
- t11 += v * b4;
1849
- t12 += v * b5;
1850
- t13 += v * b6;
1851
- t14 += v * b7;
1852
- t15 += v * b8;
1853
- t16 += v * b9;
1854
- t17 += v * b10;
1855
- t18 += v * b11;
1856
- t19 += v * b12;
1857
- t20 += v * b13;
1858
- t21 += v * b14;
1859
- t22 += v * b15;
1860
- v = a[8];
1861
- t8 += v * b0;
1862
- t9 += v * b1;
1863
- t10 += v * b2;
1864
- t11 += v * b3;
1865
- t12 += v * b4;
1866
- t13 += v * b5;
1867
- t14 += v * b6;
1868
- t15 += v * b7;
1869
- t16 += v * b8;
1870
- t17 += v * b9;
1871
- t18 += v * b10;
1872
- t19 += v * b11;
1873
- t20 += v * b12;
1874
- t21 += v * b13;
1875
- t22 += v * b14;
1876
- t23 += v * b15;
1877
- v = a[9];
1878
- t9 += v * b0;
1879
- t10 += v * b1;
1880
- t11 += v * b2;
1881
- t12 += v * b3;
1882
- t13 += v * b4;
1883
- t14 += v * b5;
1884
- t15 += v * b6;
1885
- t16 += v * b7;
1886
- t17 += v * b8;
1887
- t18 += v * b9;
1888
- t19 += v * b10;
1889
- t20 += v * b11;
1890
- t21 += v * b12;
1891
- t22 += v * b13;
1892
- t23 += v * b14;
1893
- t24 += v * b15;
1894
- v = a[10];
1895
- t10 += v * b0;
1896
- t11 += v * b1;
1897
- t12 += v * b2;
1898
- t13 += v * b3;
1899
- t14 += v * b4;
1900
- t15 += v * b5;
1901
- t16 += v * b6;
1902
- t17 += v * b7;
1903
- t18 += v * b8;
1904
- t19 += v * b9;
1905
- t20 += v * b10;
1906
- t21 += v * b11;
1907
- t22 += v * b12;
1908
- t23 += v * b13;
1909
- t24 += v * b14;
1910
- t25 += v * b15;
1911
- v = a[11];
1912
- t11 += v * b0;
1913
- t12 += v * b1;
1914
- t13 += v * b2;
1915
- t14 += v * b3;
1916
- t15 += v * b4;
1917
- t16 += v * b5;
1918
- t17 += v * b6;
1919
- t18 += v * b7;
1920
- t19 += v * b8;
1921
- t20 += v * b9;
1922
- t21 += v * b10;
1923
- t22 += v * b11;
1924
- t23 += v * b12;
1925
- t24 += v * b13;
1926
- t25 += v * b14;
1927
- t26 += v * b15;
1928
- v = a[12];
1929
- t12 += v * b0;
1930
- t13 += v * b1;
1931
- t14 += v * b2;
1932
- t15 += v * b3;
1933
- t16 += v * b4;
1934
- t17 += v * b5;
1935
- t18 += v * b6;
1936
- t19 += v * b7;
1937
- t20 += v * b8;
1938
- t21 += v * b9;
1939
- t22 += v * b10;
1940
- t23 += v * b11;
1941
- t24 += v * b12;
1942
- t25 += v * b13;
1943
- t26 += v * b14;
1944
- t27 += v * b15;
1945
- v = a[13];
1946
- t13 += v * b0;
1947
- t14 += v * b1;
1948
- t15 += v * b2;
1949
- t16 += v * b3;
1950
- t17 += v * b4;
1951
- t18 += v * b5;
1952
- t19 += v * b6;
1953
- t20 += v * b7;
1954
- t21 += v * b8;
1955
- t22 += v * b9;
1956
- t23 += v * b10;
1957
- t24 += v * b11;
1958
- t25 += v * b12;
1959
- t26 += v * b13;
1960
- t27 += v * b14;
1961
- t28 += v * b15;
1962
- v = a[14];
1963
- t14 += v * b0;
1964
- t15 += v * b1;
1965
- t16 += v * b2;
1966
- t17 += v * b3;
1967
- t18 += v * b4;
1968
- t19 += v * b5;
1969
- t20 += v * b6;
1970
- t21 += v * b7;
1971
- t22 += v * b8;
1972
- t23 += v * b9;
1973
- t24 += v * b10;
1974
- t25 += v * b11;
1975
- t26 += v * b12;
1976
- t27 += v * b13;
1977
- t28 += v * b14;
1978
- t29 += v * b15;
1979
- v = a[15];
1980
- t15 += v * b0;
1981
- t16 += v * b1;
1982
- t17 += v * b2;
1983
- t18 += v * b3;
1984
- t19 += v * b4;
1985
- t20 += v * b5;
1986
- t21 += v * b6;
1987
- t22 += v * b7;
1988
- t23 += v * b8;
1989
- t24 += v * b9;
1990
- t25 += v * b10;
1991
- t26 += v * b11;
1992
- t27 += v * b12;
1993
- t28 += v * b13;
1994
- t29 += v * b14;
1995
- t30 += v * b15;
1996
- t0 += 38 * t16;
1997
- t1 += 38 * t17;
1998
- t2 += 38 * t18;
1999
- t3 += 38 * t19;
2000
- t4 += 38 * t20;
2001
- t5 += 38 * t21;
2002
- t6 += 38 * t22;
2003
- t7 += 38 * t23;
2004
- t8 += 38 * t24;
2005
- t9 += 38 * t25;
2006
- t10 += 38 * t26;
2007
- t11 += 38 * t27;
2008
- t12 += 38 * t28;
2009
- t13 += 38 * t29;
2010
- t14 += 38 * t30;
2011
- c = 1;
2012
- v = t0 + c + 65535;
2013
- c = Math.floor(v / 65536);
2014
- t0 = v - c * 65536;
2015
- v = t1 + c + 65535;
2016
- c = Math.floor(v / 65536);
2017
- t1 = v - c * 65536;
2018
- v = t2 + c + 65535;
2019
- c = Math.floor(v / 65536);
2020
- t2 = v - c * 65536;
2021
- v = t3 + c + 65535;
2022
- c = Math.floor(v / 65536);
2023
- t3 = v - c * 65536;
2024
- v = t4 + c + 65535;
2025
- c = Math.floor(v / 65536);
2026
- t4 = v - c * 65536;
2027
- v = t5 + c + 65535;
2028
- c = Math.floor(v / 65536);
2029
- t5 = v - c * 65536;
2030
- v = t6 + c + 65535;
2031
- c = Math.floor(v / 65536);
2032
- t6 = v - c * 65536;
2033
- v = t7 + c + 65535;
2034
- c = Math.floor(v / 65536);
2035
- t7 = v - c * 65536;
2036
- v = t8 + c + 65535;
2037
- c = Math.floor(v / 65536);
2038
- t8 = v - c * 65536;
2039
- v = t9 + c + 65535;
2040
- c = Math.floor(v / 65536);
2041
- t9 = v - c * 65536;
2042
- v = t10 + c + 65535;
2043
- c = Math.floor(v / 65536);
2044
- t10 = v - c * 65536;
2045
- v = t11 + c + 65535;
2046
- c = Math.floor(v / 65536);
2047
- t11 = v - c * 65536;
2048
- v = t12 + c + 65535;
2049
- c = Math.floor(v / 65536);
2050
- t12 = v - c * 65536;
2051
- v = t13 + c + 65535;
2052
- c = Math.floor(v / 65536);
2053
- t13 = v - c * 65536;
2054
- v = t14 + c + 65535;
2055
- c = Math.floor(v / 65536);
2056
- t14 = v - c * 65536;
2057
- v = t15 + c + 65535;
2058
- c = Math.floor(v / 65536);
2059
- t15 = v - c * 65536;
2060
- t0 += c - 1 + 37 * (c - 1);
2061
- c = 1;
2062
- v = t0 + c + 65535;
2063
- c = Math.floor(v / 65536);
2064
- t0 = v - c * 65536;
2065
- v = t1 + c + 65535;
2066
- c = Math.floor(v / 65536);
2067
- t1 = v - c * 65536;
2068
- v = t2 + c + 65535;
2069
- c = Math.floor(v / 65536);
2070
- t2 = v - c * 65536;
2071
- v = t3 + c + 65535;
2072
- c = Math.floor(v / 65536);
2073
- t3 = v - c * 65536;
2074
- v = t4 + c + 65535;
2075
- c = Math.floor(v / 65536);
2076
- t4 = v - c * 65536;
2077
- v = t5 + c + 65535;
2078
- c = Math.floor(v / 65536);
2079
- t5 = v - c * 65536;
2080
- v = t6 + c + 65535;
2081
- c = Math.floor(v / 65536);
2082
- t6 = v - c * 65536;
2083
- v = t7 + c + 65535;
2084
- c = Math.floor(v / 65536);
2085
- t7 = v - c * 65536;
2086
- v = t8 + c + 65535;
2087
- c = Math.floor(v / 65536);
2088
- t8 = v - c * 65536;
2089
- v = t9 + c + 65535;
2090
- c = Math.floor(v / 65536);
2091
- t9 = v - c * 65536;
2092
- v = t10 + c + 65535;
2093
- c = Math.floor(v / 65536);
2094
- t10 = v - c * 65536;
2095
- v = t11 + c + 65535;
2096
- c = Math.floor(v / 65536);
2097
- t11 = v - c * 65536;
2098
- v = t12 + c + 65535;
2099
- c = Math.floor(v / 65536);
2100
- t12 = v - c * 65536;
2101
- v = t13 + c + 65535;
2102
- c = Math.floor(v / 65536);
2103
- t13 = v - c * 65536;
2104
- v = t14 + c + 65535;
2105
- c = Math.floor(v / 65536);
2106
- t14 = v - c * 65536;
2107
- v = t15 + c + 65535;
2108
- c = Math.floor(v / 65536);
2109
- t15 = v - c * 65536;
2110
- t0 += c - 1 + 37 * (c - 1);
2111
- o[0] = t0;
2112
- o[1] = t1;
2113
- o[2] = t2;
2114
- o[3] = t3;
2115
- o[4] = t4;
2116
- o[5] = t5;
2117
- o[6] = t6;
2118
- o[7] = t7;
2119
- o[8] = t8;
2120
- o[9] = t9;
2121
- o[10] = t10;
2122
- o[11] = t11;
2123
- o[12] = t12;
2124
- o[13] = t13;
2125
- o[14] = t14;
2126
- o[15] = t15;
2127
- }
2128
- function S(o, a) {
2129
- M(o, a, a);
2130
- }
2131
- function inv25519(o, i) {
2132
- var c = gf();
2133
- var a;
2134
- for (a = 0; a < 16; a++) c[a] = i[a];
2135
- for (a = 253; a >= 0; a--) {
2136
- S(c, c);
2137
- if (a !== 2 && a !== 4) M(c, c, i);
2138
- }
2139
- for (a = 0; a < 16; a++) o[a] = c[a];
2140
- }
2141
- function pow2523(o, i) {
2142
- var c = gf();
2143
- var a;
2144
- for (a = 0; a < 16; a++) c[a] = i[a];
2145
- for (a = 250; a >= 0; a--) {
2146
- S(c, c);
2147
- if (a !== 1) M(c, c, i);
2148
- }
2149
- for (a = 0; a < 16; a++) o[a] = c[a];
2150
- }
2151
- function crypto_scalarmult(q, n, p) {
2152
- var z = new Uint8Array(32);
2153
- var x = new Float64Array(80), r, i;
2154
- var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
2155
- for (i = 0; i < 31; i++) z[i] = n[i];
2156
- z[31] = n[31] & 127 | 64;
2157
- z[0] &= 248;
2158
- unpack25519(x, p);
2159
- for (i = 0; i < 16; i++) {
2160
- b[i] = x[i];
2161
- d[i] = a[i] = c[i] = 0;
2162
- }
2163
- a[0] = d[0] = 1;
2164
- for (i = 254; i >= 0; --i) {
2165
- r = z[i >>> 3] >>> (i & 7) & 1;
2166
- sel25519(a, b, r);
2167
- sel25519(c, d, r);
2168
- A(e, a, c);
2169
- Z(a, a, c);
2170
- A(c, b, d);
2171
- Z(b, b, d);
2172
- S(d, e);
2173
- S(f, a);
2174
- M(a, c, a);
2175
- M(c, b, e);
2176
- A(e, a, c);
2177
- Z(a, a, c);
2178
- S(b, a);
2179
- Z(c, d, f);
2180
- M(a, c, _121665);
2181
- A(a, a, d);
2182
- M(c, c, a);
2183
- M(a, d, f);
2184
- M(d, b, x);
2185
- S(b, e);
2186
- sel25519(a, b, r);
2187
- sel25519(c, d, r);
2188
- }
2189
- for (i = 0; i < 16; i++) {
2190
- x[i + 16] = a[i];
2191
- x[i + 32] = c[i];
2192
- x[i + 48] = b[i];
2193
- x[i + 64] = d[i];
2194
- }
2195
- var x32 = x.subarray(32);
2196
- var x16 = x.subarray(16);
2197
- inv25519(x32, x32);
2198
- M(x16, x16, x32);
2199
- pack25519(q, x16);
2200
- return 0;
2201
- }
2202
- function crypto_scalarmult_base(q, n) {
2203
- return crypto_scalarmult(q, n, _9);
2204
- }
2205
- function crypto_box_keypair(y, x) {
2206
- randombytes(x, 32);
2207
- return crypto_scalarmult_base(y, x);
2208
- }
2209
- function crypto_box_beforenm(k, y, x) {
2210
- var s = new Uint8Array(32);
2211
- crypto_scalarmult(s, x, y);
2212
- return crypto_core_hsalsa20(k, _0, s, sigma);
2213
- }
2214
- var crypto_box_afternm = crypto_secretbox;
2215
- var crypto_box_open_afternm = crypto_secretbox_open;
2216
- function crypto_box(c, m, d, n, y, x) {
2217
- var k = new Uint8Array(32);
2218
- crypto_box_beforenm(k, y, x);
2219
- return crypto_box_afternm(c, m, d, n, k);
2220
- }
2221
- function crypto_box_open(m, c, d, n, y, x) {
2222
- var k = new Uint8Array(32);
2223
- crypto_box_beforenm(k, y, x);
2224
- return crypto_box_open_afternm(m, c, d, n, k);
1614
+ }
1615
+ /**
1616
+ * Function useful for HMAC/PBKDF2 optimization. Restores state saved by
1617
+ * saveState() and sets bytesHashed to the given value.
1618
+ */
1619
+ restoreState(savedState) {
1620
+ this._stateHi.set(savedState.stateHi);
1621
+ this._stateLo.set(savedState.stateLo);
1622
+ this._bufferLength = savedState.bufferLength;
1623
+ if (savedState.buffer) this._buffer.set(savedState.buffer);
1624
+ this._bytesHashed = savedState.bytesHashed;
1625
+ this._finished = false;
1626
+ return this;
1627
+ }
1628
+ /**
1629
+ * Cleans state returned by saveState().
1630
+ */
1631
+ cleanSavedState(savedState) {
1632
+ wipe(savedState.stateHi);
1633
+ wipe(savedState.stateLo);
1634
+ if (savedState.buffer) wipe(savedState.buffer);
1635
+ savedState.bufferLength = 0;
1636
+ savedState.bytesHashed = 0;
1637
+ }
1638
+ };
1639
+ const K = new Int32Array([
1640
+ 1116352408,
1641
+ 3609767458,
1642
+ 1899447441,
1643
+ 602891725,
1644
+ 3049323471,
1645
+ 3964484399,
1646
+ 3921009573,
1647
+ 2173295548,
1648
+ 961987163,
1649
+ 4081628472,
1650
+ 1508970993,
1651
+ 3053834265,
1652
+ 2453635748,
1653
+ 2937671579,
1654
+ 2870763221,
1655
+ 3664609560,
1656
+ 3624381080,
1657
+ 2734883394,
1658
+ 310598401,
1659
+ 1164996542,
1660
+ 607225278,
1661
+ 1323610764,
1662
+ 1426881987,
1663
+ 3590304994,
1664
+ 1925078388,
1665
+ 4068182383,
1666
+ 2162078206,
1667
+ 991336113,
1668
+ 2614888103,
1669
+ 633803317,
1670
+ 3248222580,
1671
+ 3479774868,
1672
+ 3835390401,
1673
+ 2666613458,
1674
+ 4022224774,
1675
+ 944711139,
1676
+ 264347078,
1677
+ 2341262773,
1678
+ 604807628,
1679
+ 2007800933,
1680
+ 770255983,
1681
+ 1495990901,
1682
+ 1249150122,
1683
+ 1856431235,
1684
+ 1555081692,
1685
+ 3175218132,
1686
+ 1996064986,
1687
+ 2198950837,
1688
+ 2554220882,
1689
+ 3999719339,
1690
+ 2821834349,
1691
+ 766784016,
1692
+ 2952996808,
1693
+ 2566594879,
1694
+ 3210313671,
1695
+ 3203337956,
1696
+ 3336571891,
1697
+ 1034457026,
1698
+ 3584528711,
1699
+ 2466948901,
1700
+ 113926993,
1701
+ 3758326383,
1702
+ 338241895,
1703
+ 168717936,
1704
+ 666307205,
1705
+ 1188179964,
1706
+ 773529912,
1707
+ 1546045734,
1708
+ 1294757372,
1709
+ 1522805485,
1710
+ 1396182291,
1711
+ 2643833823,
1712
+ 1695183700,
1713
+ 2343527390,
1714
+ 1986661051,
1715
+ 1014477480,
1716
+ 2177026350,
1717
+ 1206759142,
1718
+ 2456956037,
1719
+ 344077627,
1720
+ 2730485921,
1721
+ 1290863460,
1722
+ 2820302411,
1723
+ 3158454273,
1724
+ 3259730800,
1725
+ 3505952657,
1726
+ 3345764771,
1727
+ 106217008,
1728
+ 3516065817,
1729
+ 3606008344,
1730
+ 3600352804,
1731
+ 1432725776,
1732
+ 4094571909,
1733
+ 1467031594,
1734
+ 275423344,
1735
+ 851169720,
1736
+ 430227734,
1737
+ 3100823752,
1738
+ 506948616,
1739
+ 1363258195,
1740
+ 659060556,
1741
+ 3750685593,
1742
+ 883997877,
1743
+ 3785050280,
1744
+ 958139571,
1745
+ 3318307427,
1746
+ 1322822218,
1747
+ 3812723403,
1748
+ 1537002063,
1749
+ 2003034995,
1750
+ 1747873779,
1751
+ 3602036899,
1752
+ 1955562222,
1753
+ 1575990012,
1754
+ 2024104815,
1755
+ 1125592928,
1756
+ 2227730452,
1757
+ 2716904306,
1758
+ 2361852424,
1759
+ 442776044,
1760
+ 2428436474,
1761
+ 593698344,
1762
+ 2756734187,
1763
+ 3733110249,
1764
+ 3204031479,
1765
+ 2999351573,
1766
+ 3329325298,
1767
+ 3815920427,
1768
+ 3391569614,
1769
+ 3928383900,
1770
+ 3515267271,
1771
+ 566280711,
1772
+ 3940187606,
1773
+ 3454069534,
1774
+ 4118630271,
1775
+ 4000239992,
1776
+ 116418474,
1777
+ 1914138554,
1778
+ 174292421,
1779
+ 2731055270,
1780
+ 289380356,
1781
+ 3203993006,
1782
+ 460393269,
1783
+ 320620315,
1784
+ 685471733,
1785
+ 587496836,
1786
+ 852142971,
1787
+ 1086792851,
1788
+ 1017036298,
1789
+ 365543100,
1790
+ 1126000580,
1791
+ 2618297676,
1792
+ 1288033470,
1793
+ 3409855158,
1794
+ 1501505948,
1795
+ 4234509866,
1796
+ 1607167915,
1797
+ 987167468,
1798
+ 1816402316,
1799
+ 1246189591
1800
+ ]);
1801
+ function hashBlocks(wh, wl, hh, hl, m, pos, len) {
1802
+ let ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
1803
+ let h, l;
1804
+ let th, tl;
1805
+ let a, b, c, d;
1806
+ while (len >= 128) {
1807
+ for (let i = 0; i < 16; i++) {
1808
+ const j = 8 * i + pos;
1809
+ wh[i] = readUint32BE(m, j);
1810
+ wl[i] = readUint32BE(m, j + 4);
2225
1811
  }
2226
- var K = [
2227
- 1116352408,
2228
- 3609767458,
2229
- 1899447441,
2230
- 602891725,
2231
- 3049323471,
2232
- 3964484399,
2233
- 3921009573,
2234
- 2173295548,
2235
- 961987163,
2236
- 4081628472,
2237
- 1508970993,
2238
- 3053834265,
2239
- 2453635748,
2240
- 2937671579,
2241
- 2870763221,
2242
- 3664609560,
2243
- 3624381080,
2244
- 2734883394,
2245
- 310598401,
2246
- 1164996542,
2247
- 607225278,
2248
- 1323610764,
2249
- 1426881987,
2250
- 3590304994,
2251
- 1925078388,
2252
- 4068182383,
2253
- 2162078206,
2254
- 991336113,
2255
- 2614888103,
2256
- 633803317,
2257
- 3248222580,
2258
- 3479774868,
2259
- 3835390401,
2260
- 2666613458,
2261
- 4022224774,
2262
- 944711139,
2263
- 264347078,
2264
- 2341262773,
2265
- 604807628,
2266
- 2007800933,
2267
- 770255983,
2268
- 1495990901,
2269
- 1249150122,
2270
- 1856431235,
2271
- 1555081692,
2272
- 3175218132,
2273
- 1996064986,
2274
- 2198950837,
2275
- 2554220882,
2276
- 3999719339,
2277
- 2821834349,
2278
- 766784016,
2279
- 2952996808,
2280
- 2566594879,
2281
- 3210313671,
2282
- 3203337956,
2283
- 3336571891,
2284
- 1034457026,
2285
- 3584528711,
2286
- 2466948901,
2287
- 113926993,
2288
- 3758326383,
2289
- 338241895,
2290
- 168717936,
2291
- 666307205,
2292
- 1188179964,
2293
- 773529912,
2294
- 1546045734,
2295
- 1294757372,
2296
- 1522805485,
2297
- 1396182291,
2298
- 2643833823,
2299
- 1695183700,
2300
- 2343527390,
2301
- 1986661051,
2302
- 1014477480,
2303
- 2177026350,
2304
- 1206759142,
2305
- 2456956037,
2306
- 344077627,
2307
- 2730485921,
2308
- 1290863460,
2309
- 2820302411,
2310
- 3158454273,
2311
- 3259730800,
2312
- 3505952657,
2313
- 3345764771,
2314
- 106217008,
2315
- 3516065817,
2316
- 3606008344,
2317
- 3600352804,
2318
- 1432725776,
2319
- 4094571909,
2320
- 1467031594,
2321
- 275423344,
2322
- 851169720,
2323
- 430227734,
2324
- 3100823752,
2325
- 506948616,
2326
- 1363258195,
2327
- 659060556,
2328
- 3750685593,
2329
- 883997877,
2330
- 3785050280,
2331
- 958139571,
2332
- 3318307427,
2333
- 1322822218,
2334
- 3812723403,
2335
- 1537002063,
2336
- 2003034995,
2337
- 1747873779,
2338
- 3602036899,
2339
- 1955562222,
2340
- 1575990012,
2341
- 2024104815,
2342
- 1125592928,
2343
- 2227730452,
2344
- 2716904306,
2345
- 2361852424,
2346
- 442776044,
2347
- 2428436474,
2348
- 593698344,
2349
- 2756734187,
2350
- 3733110249,
2351
- 3204031479,
2352
- 2999351573,
2353
- 3329325298,
2354
- 3815920427,
2355
- 3391569614,
2356
- 3928383900,
2357
- 3515267271,
2358
- 566280711,
2359
- 3940187606,
2360
- 3454069534,
2361
- 4118630271,
2362
- 4000239992,
2363
- 116418474,
2364
- 1914138554,
2365
- 174292421,
2366
- 2731055270,
2367
- 289380356,
2368
- 3203993006,
2369
- 460393269,
2370
- 320620315,
2371
- 685471733,
2372
- 587496836,
2373
- 852142971,
2374
- 1086792851,
2375
- 1017036298,
2376
- 365543100,
2377
- 1126000580,
2378
- 2618297676,
2379
- 1288033470,
2380
- 3409855158,
2381
- 1501505948,
2382
- 4234509866,
2383
- 1607167915,
2384
- 987167468,
2385
- 1816402316,
2386
- 1246189591
2387
- ];
2388
- function crypto_hashblocks_hl(hh, hl, m, n) {
2389
- var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;
2390
- var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
2391
- var pos = 0;
2392
- while (n >= 128) {
2393
- for (i = 0; i < 16; i++) {
2394
- j = 8 * i + pos;
2395
- wh[i] = m[j + 0] << 24 | m[j + 1] << 16 | m[j + 2] << 8 | m[j + 3];
2396
- wl[i] = m[j + 4] << 24 | m[j + 5] << 16 | m[j + 6] << 8 | m[j + 7];
2397
- }
2398
- for (i = 0; i < 80; i++) {
2399
- bh0 = ah0;
2400
- bh1 = ah1;
2401
- bh2 = ah2;
2402
- bh3 = ah3;
2403
- bh4 = ah4;
2404
- bh5 = ah5;
2405
- bh6 = ah6;
2406
- bh7 = ah7;
2407
- bl0 = al0;
2408
- bl1 = al1;
2409
- bl2 = al2;
2410
- bl3 = al3;
2411
- bl4 = al4;
2412
- bl5 = al5;
2413
- bl6 = al6;
2414
- bl7 = al7;
2415
- h = ah7;
2416
- l = al7;
2417
- a = l & 65535;
2418
- b = l >>> 16;
2419
- c = h & 65535;
2420
- d = h >>> 16;
2421
- h = (ah4 >>> 14 | al4 << 18) ^ (ah4 >>> 18 | al4 << 14) ^ (al4 >>> 9 | ah4 << 23);
2422
- l = (al4 >>> 14 | ah4 << 18) ^ (al4 >>> 18 | ah4 << 14) ^ (ah4 >>> 9 | al4 << 23);
2423
- a += l & 65535;
2424
- b += l >>> 16;
2425
- c += h & 65535;
2426
- d += h >>> 16;
2427
- h = ah4 & ah5 ^ ~ah4 & ah6;
2428
- l = al4 & al5 ^ ~al4 & al6;
2429
- a += l & 65535;
2430
- b += l >>> 16;
2431
- c += h & 65535;
2432
- d += h >>> 16;
2433
- h = K[i * 2];
2434
- l = K[i * 2 + 1];
2435
- a += l & 65535;
2436
- b += l >>> 16;
2437
- c += h & 65535;
2438
- d += h >>> 16;
2439
- h = wh[i % 16];
2440
- l = wl[i % 16];
2441
- a += l & 65535;
2442
- b += l >>> 16;
2443
- c += h & 65535;
2444
- d += h >>> 16;
2445
- b += a >>> 16;
2446
- c += b >>> 16;
2447
- d += c >>> 16;
2448
- th = c & 65535 | d << 16;
2449
- tl = a & 65535 | b << 16;
2450
- h = th;
2451
- l = tl;
2452
- a = l & 65535;
2453
- b = l >>> 16;
2454
- c = h & 65535;
2455
- d = h >>> 16;
2456
- h = (ah0 >>> 28 | al0 << 4) ^ (al0 >>> 2 | ah0 << 30) ^ (al0 >>> 7 | ah0 << 25);
2457
- l = (al0 >>> 28 | ah0 << 4) ^ (ah0 >>> 2 | al0 << 30) ^ (ah0 >>> 7 | al0 << 25);
2458
- a += l & 65535;
2459
- b += l >>> 16;
2460
- c += h & 65535;
2461
- d += h >>> 16;
2462
- h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
2463
- l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
2464
- a += l & 65535;
2465
- b += l >>> 16;
2466
- c += h & 65535;
2467
- d += h >>> 16;
2468
- b += a >>> 16;
2469
- c += b >>> 16;
2470
- d += c >>> 16;
2471
- bh7 = c & 65535 | d << 16;
2472
- bl7 = a & 65535 | b << 16;
2473
- h = bh3;
2474
- l = bl3;
2475
- a = l & 65535;
2476
- b = l >>> 16;
2477
- c = h & 65535;
2478
- d = h >>> 16;
2479
- h = th;
2480
- l = tl;
2481
- a += l & 65535;
2482
- b += l >>> 16;
2483
- c += h & 65535;
2484
- d += h >>> 16;
2485
- b += a >>> 16;
2486
- c += b >>> 16;
2487
- d += c >>> 16;
2488
- bh3 = c & 65535 | d << 16;
2489
- bl3 = a & 65535 | b << 16;
2490
- ah1 = bh0;
2491
- ah2 = bh1;
2492
- ah3 = bh2;
2493
- ah4 = bh3;
2494
- ah5 = bh4;
2495
- ah6 = bh5;
2496
- ah7 = bh6;
2497
- ah0 = bh7;
2498
- al1 = bl0;
2499
- al2 = bl1;
2500
- al3 = bl2;
2501
- al4 = bl3;
2502
- al5 = bl4;
2503
- al6 = bl5;
2504
- al7 = bl6;
2505
- al0 = bl7;
2506
- if (i % 16 === 15) for (j = 0; j < 16; j++) {
2507
- h = wh[j];
2508
- l = wl[j];
2509
- a = l & 65535;
2510
- b = l >>> 16;
2511
- c = h & 65535;
2512
- d = h >>> 16;
2513
- h = wh[(j + 9) % 16];
2514
- l = wl[(j + 9) % 16];
2515
- a += l & 65535;
2516
- b += l >>> 16;
2517
- c += h & 65535;
2518
- d += h >>> 16;
2519
- th = wh[(j + 1) % 16];
2520
- tl = wl[(j + 1) % 16];
2521
- h = (th >>> 1 | tl << 31) ^ (th >>> 8 | tl << 24) ^ th >>> 7;
2522
- l = (tl >>> 1 | th << 31) ^ (tl >>> 8 | th << 24) ^ (tl >>> 7 | th << 25);
2523
- a += l & 65535;
2524
- b += l >>> 16;
2525
- c += h & 65535;
2526
- d += h >>> 16;
2527
- th = wh[(j + 14) % 16];
2528
- tl = wl[(j + 14) % 16];
2529
- h = (th >>> 19 | tl << 13) ^ (tl >>> 29 | th << 3) ^ th >>> 6;
2530
- l = (tl >>> 19 | th << 13) ^ (th >>> 29 | tl << 3) ^ (tl >>> 6 | th << 26);
2531
- a += l & 65535;
2532
- b += l >>> 16;
2533
- c += h & 65535;
2534
- d += h >>> 16;
2535
- b += a >>> 16;
2536
- c += b >>> 16;
2537
- d += c >>> 16;
2538
- wh[j] = c & 65535 | d << 16;
2539
- wl[j] = a & 65535 | b << 16;
2540
- }
2541
- }
2542
- h = ah0;
2543
- l = al0;
2544
- a = l & 65535;
2545
- b = l >>> 16;
2546
- c = h & 65535;
2547
- d = h >>> 16;
2548
- h = hh[0];
2549
- l = hl[0];
2550
- a += l & 65535;
2551
- b += l >>> 16;
2552
- c += h & 65535;
2553
- d += h >>> 16;
2554
- b += a >>> 16;
2555
- c += b >>> 16;
2556
- d += c >>> 16;
2557
- hh[0] = ah0 = c & 65535 | d << 16;
2558
- hl[0] = al0 = a & 65535 | b << 16;
2559
- h = ah1;
2560
- l = al1;
2561
- a = l & 65535;
2562
- b = l >>> 16;
2563
- c = h & 65535;
2564
- d = h >>> 16;
2565
- h = hh[1];
2566
- l = hl[1];
2567
- a += l & 65535;
2568
- b += l >>> 16;
2569
- c += h & 65535;
2570
- d += h >>> 16;
2571
- b += a >>> 16;
2572
- c += b >>> 16;
2573
- d += c >>> 16;
2574
- hh[1] = ah1 = c & 65535 | d << 16;
2575
- hl[1] = al1 = a & 65535 | b << 16;
2576
- h = ah2;
2577
- l = al2;
2578
- a = l & 65535;
2579
- b = l >>> 16;
2580
- c = h & 65535;
2581
- d = h >>> 16;
2582
- h = hh[2];
2583
- l = hl[2];
2584
- a += l & 65535;
2585
- b += l >>> 16;
2586
- c += h & 65535;
2587
- d += h >>> 16;
2588
- b += a >>> 16;
2589
- c += b >>> 16;
2590
- d += c >>> 16;
2591
- hh[2] = ah2 = c & 65535 | d << 16;
2592
- hl[2] = al2 = a & 65535 | b << 16;
2593
- h = ah3;
2594
- l = al3;
2595
- a = l & 65535;
2596
- b = l >>> 16;
2597
- c = h & 65535;
2598
- d = h >>> 16;
2599
- h = hh[3];
2600
- l = hl[3];
2601
- a += l & 65535;
2602
- b += l >>> 16;
2603
- c += h & 65535;
2604
- d += h >>> 16;
2605
- b += a >>> 16;
2606
- c += b >>> 16;
2607
- d += c >>> 16;
2608
- hh[3] = ah3 = c & 65535 | d << 16;
2609
- hl[3] = al3 = a & 65535 | b << 16;
2610
- h = ah4;
2611
- l = al4;
1812
+ for (let i = 0; i < 80; i++) {
1813
+ let bh0 = ah0;
1814
+ let bh1 = ah1;
1815
+ let bh2 = ah2;
1816
+ let bh3 = ah3;
1817
+ let bh4 = ah4;
1818
+ let bh5 = ah5;
1819
+ let bh6 = ah6;
1820
+ let bh7 = ah7;
1821
+ let bl0 = al0;
1822
+ let bl1 = al1;
1823
+ let bl2 = al2;
1824
+ let bl3 = al3;
1825
+ let bl4 = al4;
1826
+ let bl5 = al5;
1827
+ let bl6 = al6;
1828
+ let bl7 = al7;
1829
+ h = ah7;
1830
+ l = al7;
1831
+ a = l & 65535;
1832
+ b = l >>> 16;
1833
+ c = h & 65535;
1834
+ d = h >>> 16;
1835
+ h = (ah4 >>> 14 | al4 << 18) ^ (ah4 >>> 18 | al4 << 14) ^ (al4 >>> 9 | ah4 << 23);
1836
+ l = (al4 >>> 14 | ah4 << 18) ^ (al4 >>> 18 | ah4 << 14) ^ (ah4 >>> 9 | al4 << 23);
1837
+ a += l & 65535;
1838
+ b += l >>> 16;
1839
+ c += h & 65535;
1840
+ d += h >>> 16;
1841
+ h = ah4 & ah5 ^ ~ah4 & ah6;
1842
+ l = al4 & al5 ^ ~al4 & al6;
1843
+ a += l & 65535;
1844
+ b += l >>> 16;
1845
+ c += h & 65535;
1846
+ d += h >>> 16;
1847
+ h = K[i * 2];
1848
+ l = K[i * 2 + 1];
1849
+ a += l & 65535;
1850
+ b += l >>> 16;
1851
+ c += h & 65535;
1852
+ d += h >>> 16;
1853
+ h = wh[i % 16];
1854
+ l = wl[i % 16];
1855
+ a += l & 65535;
1856
+ b += l >>> 16;
1857
+ c += h & 65535;
1858
+ d += h >>> 16;
1859
+ b += a >>> 16;
1860
+ c += b >>> 16;
1861
+ d += c >>> 16;
1862
+ th = c & 65535 | d << 16;
1863
+ tl = a & 65535 | b << 16;
1864
+ h = th;
1865
+ l = tl;
1866
+ a = l & 65535;
1867
+ b = l >>> 16;
1868
+ c = h & 65535;
1869
+ d = h >>> 16;
1870
+ h = (ah0 >>> 28 | al0 << 4) ^ (al0 >>> 2 | ah0 << 30) ^ (al0 >>> 7 | ah0 << 25);
1871
+ l = (al0 >>> 28 | ah0 << 4) ^ (ah0 >>> 2 | al0 << 30) ^ (ah0 >>> 7 | al0 << 25);
1872
+ a += l & 65535;
1873
+ b += l >>> 16;
1874
+ c += h & 65535;
1875
+ d += h >>> 16;
1876
+ h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
1877
+ l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
1878
+ a += l & 65535;
1879
+ b += l >>> 16;
1880
+ c += h & 65535;
1881
+ d += h >>> 16;
1882
+ b += a >>> 16;
1883
+ c += b >>> 16;
1884
+ d += c >>> 16;
1885
+ bh7 = c & 65535 | d << 16;
1886
+ bl7 = a & 65535 | b << 16;
1887
+ h = bh3;
1888
+ l = bl3;
1889
+ a = l & 65535;
1890
+ b = l >>> 16;
1891
+ c = h & 65535;
1892
+ d = h >>> 16;
1893
+ h = th;
1894
+ l = tl;
1895
+ a += l & 65535;
1896
+ b += l >>> 16;
1897
+ c += h & 65535;
1898
+ d += h >>> 16;
1899
+ b += a >>> 16;
1900
+ c += b >>> 16;
1901
+ d += c >>> 16;
1902
+ bh3 = c & 65535 | d << 16;
1903
+ bl3 = a & 65535 | b << 16;
1904
+ ah1 = bh0;
1905
+ ah2 = bh1;
1906
+ ah3 = bh2;
1907
+ ah4 = bh3;
1908
+ ah5 = bh4;
1909
+ ah6 = bh5;
1910
+ ah7 = bh6;
1911
+ ah0 = bh7;
1912
+ al1 = bl0;
1913
+ al2 = bl1;
1914
+ al3 = bl2;
1915
+ al4 = bl3;
1916
+ al5 = bl4;
1917
+ al6 = bl5;
1918
+ al7 = bl6;
1919
+ al0 = bl7;
1920
+ if (i % 16 === 15) for (let j = 0; j < 16; j++) {
1921
+ h = wh[j];
1922
+ l = wl[j];
2612
1923
  a = l & 65535;
2613
1924
  b = l >>> 16;
2614
1925
  c = h & 65535;
2615
1926
  d = h >>> 16;
2616
- h = hh[4];
2617
- l = hl[4];
1927
+ h = wh[(j + 9) % 16];
1928
+ l = wl[(j + 9) % 16];
2618
1929
  a += l & 65535;
2619
1930
  b += l >>> 16;
2620
1931
  c += h & 65535;
2621
1932
  d += h >>> 16;
2622
- b += a >>> 16;
2623
- c += b >>> 16;
2624
- d += c >>> 16;
2625
- hh[4] = ah4 = c & 65535 | d << 16;
2626
- hl[4] = al4 = a & 65535 | b << 16;
2627
- h = ah5;
2628
- l = al5;
2629
- a = l & 65535;
2630
- b = l >>> 16;
2631
- c = h & 65535;
2632
- d = h >>> 16;
2633
- h = hh[5];
2634
- l = hl[5];
1933
+ th = wh[(j + 1) % 16];
1934
+ tl = wl[(j + 1) % 16];
1935
+ h = (th >>> 1 | tl << 31) ^ (th >>> 8 | tl << 24) ^ th >>> 7;
1936
+ l = (tl >>> 1 | th << 31) ^ (tl >>> 8 | th << 24) ^ (tl >>> 7 | th << 25);
2635
1937
  a += l & 65535;
2636
1938
  b += l >>> 16;
2637
1939
  c += h & 65535;
2638
1940
  d += h >>> 16;
2639
- b += a >>> 16;
2640
- c += b >>> 16;
2641
- d += c >>> 16;
2642
- hh[5] = ah5 = c & 65535 | d << 16;
2643
- hl[5] = al5 = a & 65535 | b << 16;
2644
- h = ah6;
2645
- l = al6;
2646
- a = l & 65535;
2647
- b = l >>> 16;
2648
- c = h & 65535;
2649
- d = h >>> 16;
2650
- h = hh[6];
2651
- l = hl[6];
1941
+ th = wh[(j + 14) % 16];
1942
+ tl = wl[(j + 14) % 16];
1943
+ h = (th >>> 19 | tl << 13) ^ (tl >>> 29 | th << 3) ^ th >>> 6;
1944
+ l = (tl >>> 19 | th << 13) ^ (th >>> 29 | tl << 3) ^ (tl >>> 6 | th << 26);
2652
1945
  a += l & 65535;
2653
1946
  b += l >>> 16;
2654
1947
  c += h & 65535;
@@ -2656,570 +1949,1006 @@ var require_nacl_fast = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2656
1949
  b += a >>> 16;
2657
1950
  c += b >>> 16;
2658
1951
  d += c >>> 16;
2659
- hh[6] = ah6 = c & 65535 | d << 16;
2660
- hl[6] = al6 = a & 65535 | b << 16;
2661
- h = ah7;
2662
- l = al7;
2663
- a = l & 65535;
2664
- b = l >>> 16;
2665
- c = h & 65535;
2666
- d = h >>> 16;
2667
- h = hh[7];
2668
- l = hl[7];
2669
- a += l & 65535;
2670
- b += l >>> 16;
2671
- c += h & 65535;
2672
- d += h >>> 16;
2673
- b += a >>> 16;
2674
- c += b >>> 16;
2675
- d += c >>> 16;
2676
- hh[7] = ah7 = c & 65535 | d << 16;
2677
- hl[7] = al7 = a & 65535 | b << 16;
2678
- pos += 128;
2679
- n -= 128;
2680
- }
2681
- return n;
2682
- }
2683
- function crypto_hash(out, m, n) {
2684
- var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;
2685
- hh[0] = 1779033703;
2686
- hh[1] = 3144134277;
2687
- hh[2] = 1013904242;
2688
- hh[3] = 2773480762;
2689
- hh[4] = 1359893119;
2690
- hh[5] = 2600822924;
2691
- hh[6] = 528734635;
2692
- hh[7] = 1541459225;
2693
- hl[0] = 4089235720;
2694
- hl[1] = 2227873595;
2695
- hl[2] = 4271175723;
2696
- hl[3] = 1595750129;
2697
- hl[4] = 2917565137;
2698
- hl[5] = 725511199;
2699
- hl[6] = 4215389547;
2700
- hl[7] = 327033209;
2701
- crypto_hashblocks_hl(hh, hl, m, n);
2702
- n %= 128;
2703
- for (i = 0; i < n; i++) x[i] = m[b - n + i];
2704
- x[n] = 128;
2705
- n = 256 - 128 * (n < 112 ? 1 : 0);
2706
- x[n - 9] = 0;
2707
- ts64(x, n - 8, b / 536870912 | 0, b << 3);
2708
- crypto_hashblocks_hl(hh, hl, x, n);
2709
- for (i = 0; i < 8; i++) ts64(out, 8 * i, hh[i], hl[i]);
2710
- return 0;
2711
- }
2712
- function add(p, q) {
2713
- var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
2714
- Z(a, p[1], p[0]);
2715
- Z(t, q[1], q[0]);
2716
- M(a, a, t);
2717
- A(b, p[0], p[1]);
2718
- A(t, q[0], q[1]);
2719
- M(b, b, t);
2720
- M(c, p[3], q[3]);
2721
- M(c, c, D2);
2722
- M(d, p[2], q[2]);
2723
- A(d, d, d);
2724
- Z(e, b, a);
2725
- Z(f, d, c);
2726
- A(g, d, c);
2727
- A(h, b, a);
2728
- M(p[0], e, f);
2729
- M(p[1], h, g);
2730
- M(p[2], g, f);
2731
- M(p[3], e, h);
2732
- }
2733
- function cswap(p, q, b) {
2734
- var i;
2735
- for (i = 0; i < 4; i++) sel25519(p[i], q[i], b);
2736
- }
2737
- function pack(r, p) {
2738
- var tx = gf(), ty = gf(), zi = gf();
2739
- inv25519(zi, p[2]);
2740
- M(tx, p[0], zi);
2741
- M(ty, p[1], zi);
2742
- pack25519(r, ty);
2743
- r[31] ^= par25519(tx) << 7;
2744
- }
2745
- function scalarmult(p, q, s) {
2746
- var b, i;
2747
- set25519(p[0], gf0);
2748
- set25519(p[1], gf1);
2749
- set25519(p[2], gf1);
2750
- set25519(p[3], gf0);
2751
- for (i = 255; i >= 0; --i) {
2752
- b = s[i / 8 | 0] >> (i & 7) & 1;
2753
- cswap(p, q, b);
2754
- add(q, p);
2755
- add(p, p);
2756
- cswap(p, q, b);
2757
- }
2758
- }
2759
- function scalarbase(p, s) {
2760
- var q = [
2761
- gf(),
2762
- gf(),
2763
- gf(),
2764
- gf()
2765
- ];
2766
- set25519(q[0], X);
2767
- set25519(q[1], Y);
2768
- set25519(q[2], gf1);
2769
- M(q[3], X, Y);
2770
- scalarmult(p, q, s);
2771
- }
2772
- function crypto_sign_keypair(pk, sk, seeded) {
2773
- var d = new Uint8Array(64);
2774
- var p = [
2775
- gf(),
2776
- gf(),
2777
- gf(),
2778
- gf()
2779
- ];
2780
- var i;
2781
- if (!seeded) randombytes(sk, 32);
2782
- crypto_hash(d, sk, 32);
2783
- d[0] &= 248;
2784
- d[31] &= 127;
2785
- d[31] |= 64;
2786
- scalarbase(p, d);
2787
- pack(pk, p);
2788
- for (i = 0; i < 32; i++) sk[i + 32] = pk[i];
2789
- return 0;
2790
- }
2791
- var L = new Float64Array([
2792
- 237,
2793
- 211,
2794
- 245,
2795
- 92,
2796
- 26,
2797
- 99,
2798
- 18,
2799
- 88,
2800
- 214,
2801
- 156,
2802
- 247,
2803
- 162,
2804
- 222,
2805
- 249,
2806
- 222,
2807
- 20,
2808
- 0,
2809
- 0,
2810
- 0,
2811
- 0,
2812
- 0,
2813
- 0,
2814
- 0,
2815
- 0,
2816
- 0,
2817
- 0,
2818
- 0,
2819
- 0,
2820
- 0,
2821
- 0,
2822
- 0,
2823
- 16
2824
- ]);
2825
- function modL(r, x) {
2826
- var carry, i, j, k;
2827
- for (i = 63; i >= 32; --i) {
2828
- carry = 0;
2829
- for (j = i - 32, k = i - 12; j < k; ++j) {
2830
- x[j] += carry - 16 * x[i] * L[j - (i - 32)];
2831
- carry = Math.floor((x[j] + 128) / 256);
2832
- x[j] -= carry * 256;
2833
- }
2834
- x[j] += carry;
2835
- x[i] = 0;
2836
- }
2837
- carry = 0;
2838
- for (j = 0; j < 32; j++) {
2839
- x[j] += carry - (x[31] >> 4) * L[j];
2840
- carry = x[j] >> 8;
2841
- x[j] &= 255;
2842
- }
2843
- for (j = 0; j < 32; j++) x[j] -= carry * L[j];
2844
- for (i = 0; i < 32; i++) {
2845
- x[i + 1] += x[i] >> 8;
2846
- r[i] = x[i] & 255;
1952
+ wh[j] = c & 65535 | d << 16;
1953
+ wl[j] = a & 65535 | b << 16;
2847
1954
  }
2848
1955
  }
2849
- function reduce(r) {
2850
- var x = new Float64Array(64), i;
2851
- for (i = 0; i < 64; i++) x[i] = r[i];
2852
- for (i = 0; i < 64; i++) r[i] = 0;
2853
- modL(r, x);
2854
- }
2855
- function crypto_sign(sm, m, n, sk) {
2856
- var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
2857
- var i, j, x = new Float64Array(64);
2858
- var p = [
2859
- gf(),
2860
- gf(),
2861
- gf(),
2862
- gf()
2863
- ];
2864
- crypto_hash(d, sk, 32);
2865
- d[0] &= 248;
2866
- d[31] &= 127;
2867
- d[31] |= 64;
2868
- var smlen = n + 64;
2869
- for (i = 0; i < n; i++) sm[64 + i] = m[i];
2870
- for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
2871
- crypto_hash(r, sm.subarray(32), n + 32);
2872
- reduce(r);
2873
- scalarbase(p, r);
2874
- pack(sm, p);
2875
- for (i = 32; i < 64; i++) sm[i] = sk[i];
2876
- crypto_hash(h, sm, n + 64);
2877
- reduce(h);
2878
- for (i = 0; i < 64; i++) x[i] = 0;
2879
- for (i = 0; i < 32; i++) x[i] = r[i];
2880
- for (i = 0; i < 32; i++) for (j = 0; j < 32; j++) x[i + j] += h[i] * d[j];
2881
- modL(sm.subarray(32), x);
2882
- return smlen;
2883
- }
2884
- function unpackneg(r, p) {
2885
- var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
2886
- set25519(r[2], gf1);
2887
- unpack25519(r[1], p);
2888
- S(num, r[1]);
2889
- M(den, num, D);
2890
- Z(num, num, r[2]);
2891
- A(den, r[2], den);
2892
- S(den2, den);
2893
- S(den4, den2);
2894
- M(den6, den4, den2);
2895
- M(t, den6, num);
2896
- M(t, t, den);
2897
- pow2523(t, t);
2898
- M(t, t, num);
2899
- M(t, t, den);
2900
- M(t, t, den);
2901
- M(r[0], t, den);
2902
- S(chk, r[0]);
2903
- M(chk, chk, den);
2904
- if (neq25519(chk, num)) M(r[0], r[0], I);
2905
- S(chk, r[0]);
2906
- M(chk, chk, den);
2907
- if (neq25519(chk, num)) return -1;
2908
- if (par25519(r[0]) === p[31] >> 7) Z(r[0], gf0, r[0]);
2909
- M(r[3], r[0], r[1]);
2910
- return 0;
2911
- }
2912
- function crypto_sign_open(m, sm, n, pk) {
2913
- var i;
2914
- var t = new Uint8Array(32), h = new Uint8Array(64);
2915
- var p = [
2916
- gf(),
2917
- gf(),
2918
- gf(),
2919
- gf()
2920
- ], q = [
2921
- gf(),
2922
- gf(),
2923
- gf(),
2924
- gf()
2925
- ];
2926
- if (n < 64) return -1;
2927
- if (unpackneg(q, pk)) return -1;
2928
- for (i = 0; i < n; i++) m[i] = sm[i];
2929
- for (i = 0; i < 32; i++) m[i + 32] = pk[i];
2930
- crypto_hash(h, m, n);
2931
- reduce(h);
2932
- scalarmult(p, q, h);
2933
- scalarbase(q, sm.subarray(32));
2934
- add(p, q);
2935
- pack(t, p);
2936
- n -= 64;
2937
- if (crypto_verify_32(sm, 0, t, 0)) {
2938
- for (i = 0; i < n; i++) m[i] = 0;
2939
- return -1;
2940
- }
2941
- for (i = 0; i < n; i++) m[i] = sm[i + 64];
2942
- return n;
2943
- }
2944
- var crypto_secretbox_KEYBYTES = 32, crypto_secretbox_NONCEBYTES = 24, crypto_secretbox_ZEROBYTES = 32, crypto_secretbox_BOXZEROBYTES = 16, crypto_scalarmult_BYTES = 32, crypto_scalarmult_SCALARBYTES = 32, crypto_box_PUBLICKEYBYTES = 32, crypto_box_SECRETKEYBYTES = 32, crypto_box_BEFORENMBYTES = 32, crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, crypto_sign_BYTES = 64, crypto_sign_PUBLICKEYBYTES = 32, crypto_sign_SECRETKEYBYTES = 64, crypto_sign_SEEDBYTES = 32, crypto_hash_BYTES = 64;
2945
- nacl.lowlevel = {
2946
- crypto_core_hsalsa20,
2947
- crypto_stream_xor,
2948
- crypto_stream,
2949
- crypto_stream_salsa20_xor,
2950
- crypto_stream_salsa20,
2951
- crypto_onetimeauth,
2952
- crypto_onetimeauth_verify,
2953
- crypto_verify_16,
2954
- crypto_verify_32,
2955
- crypto_secretbox,
2956
- crypto_secretbox_open,
2957
- crypto_scalarmult,
2958
- crypto_scalarmult_base,
2959
- crypto_box_beforenm,
2960
- crypto_box_afternm,
2961
- crypto_box,
2962
- crypto_box_open,
2963
- crypto_box_keypair,
2964
- crypto_hash,
2965
- crypto_sign,
2966
- crypto_sign_keypair,
2967
- crypto_sign_open,
2968
- crypto_secretbox_KEYBYTES,
2969
- crypto_secretbox_NONCEBYTES,
2970
- crypto_secretbox_ZEROBYTES,
2971
- crypto_secretbox_BOXZEROBYTES,
2972
- crypto_scalarmult_BYTES,
2973
- crypto_scalarmult_SCALARBYTES,
2974
- crypto_box_PUBLICKEYBYTES,
2975
- crypto_box_SECRETKEYBYTES,
2976
- crypto_box_BEFORENMBYTES,
2977
- crypto_box_NONCEBYTES,
2978
- crypto_box_ZEROBYTES,
2979
- crypto_box_BOXZEROBYTES,
2980
- crypto_sign_BYTES,
2981
- crypto_sign_PUBLICKEYBYTES,
2982
- crypto_sign_SECRETKEYBYTES,
2983
- crypto_sign_SEEDBYTES,
2984
- crypto_hash_BYTES,
2985
- gf,
2986
- D,
2987
- L,
2988
- pack25519,
2989
- unpack25519,
2990
- M,
2991
- A,
2992
- S,
2993
- Z,
2994
- pow2523,
2995
- add,
2996
- set25519,
2997
- modL,
2998
- scalarmult,
2999
- scalarbase
3000
- };
3001
- function checkLengths(k, n) {
3002
- if (k.length !== crypto_secretbox_KEYBYTES) throw new Error("bad key size");
3003
- if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error("bad nonce size");
3004
- }
3005
- function checkBoxLengths(pk, sk) {
3006
- if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error("bad public key size");
3007
- if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error("bad secret key size");
3008
- }
3009
- function checkArrayTypes() {
3010
- for (var i = 0; i < arguments.length; i++) if (!(arguments[i] instanceof Uint8Array)) throw new TypeError("unexpected type, use Uint8Array");
3011
- }
3012
- function cleanup(arr) {
3013
- for (var i = 0; i < arr.length; i++) arr[i] = 0;
3014
- }
3015
- nacl.randomBytes = function(n) {
3016
- var b = new Uint8Array(n);
3017
- randombytes(b, n);
3018
- return b;
3019
- };
3020
- nacl.secretbox = function(msg, nonce, key) {
3021
- checkArrayTypes(msg, nonce, key);
3022
- checkLengths(key, nonce);
3023
- var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
3024
- var c = new Uint8Array(m.length);
3025
- for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i];
3026
- crypto_secretbox(c, m, m.length, nonce, key);
3027
- return c.subarray(crypto_secretbox_BOXZEROBYTES);
3028
- };
3029
- nacl.secretbox.open = function(box, nonce, key) {
3030
- checkArrayTypes(box, nonce, key);
3031
- checkLengths(key, nonce);
3032
- var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
3033
- var m = new Uint8Array(c.length);
3034
- for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i];
3035
- if (c.length < 32) return null;
3036
- if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;
3037
- return m.subarray(crypto_secretbox_ZEROBYTES);
3038
- };
3039
- nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;
3040
- nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
3041
- nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
3042
- nacl.scalarMult = function(n, p) {
3043
- checkArrayTypes(n, p);
3044
- if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
3045
- if (p.length !== crypto_scalarmult_BYTES) throw new Error("bad p size");
3046
- var q = new Uint8Array(crypto_scalarmult_BYTES);
3047
- crypto_scalarmult(q, n, p);
3048
- return q;
3049
- };
3050
- nacl.scalarMult.base = function(n) {
3051
- checkArrayTypes(n);
3052
- if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
3053
- var q = new Uint8Array(crypto_scalarmult_BYTES);
3054
- crypto_scalarmult_base(q, n);
3055
- return q;
3056
- };
3057
- nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
3058
- nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
3059
- nacl.box = function(msg, nonce, publicKey, secretKey) {
3060
- var k = nacl.box.before(publicKey, secretKey);
3061
- return nacl.secretbox(msg, nonce, k);
3062
- };
3063
- nacl.box.before = function(publicKey, secretKey) {
3064
- checkArrayTypes(publicKey, secretKey);
3065
- checkBoxLengths(publicKey, secretKey);
3066
- var k = new Uint8Array(crypto_box_BEFORENMBYTES);
3067
- crypto_box_beforenm(k, publicKey, secretKey);
3068
- return k;
3069
- };
3070
- nacl.box.after = nacl.secretbox;
3071
- nacl.box.open = function(msg, nonce, publicKey, secretKey) {
3072
- var k = nacl.box.before(publicKey, secretKey);
3073
- return nacl.secretbox.open(msg, nonce, k);
3074
- };
3075
- nacl.box.open.after = nacl.secretbox.open;
3076
- nacl.box.keyPair = function() {
3077
- var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
3078
- var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
3079
- crypto_box_keypair(pk, sk);
3080
- return {
3081
- publicKey: pk,
3082
- secretKey: sk
3083
- };
3084
- };
3085
- nacl.box.keyPair.fromSecretKey = function(secretKey) {
3086
- checkArrayTypes(secretKey);
3087
- if (secretKey.length !== crypto_box_SECRETKEYBYTES) throw new Error("bad secret key size");
3088
- var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
3089
- crypto_scalarmult_base(pk, secretKey);
3090
- return {
3091
- publicKey: pk,
3092
- secretKey: new Uint8Array(secretKey)
3093
- };
3094
- };
3095
- nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
3096
- nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
3097
- nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
3098
- nacl.box.nonceLength = crypto_box_NONCEBYTES;
3099
- nacl.box.overheadLength = nacl.secretbox.overheadLength;
3100
- nacl.sign = function(msg, secretKey) {
3101
- checkArrayTypes(msg, secretKey);
3102
- if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error("bad secret key size");
3103
- var signedMsg = new Uint8Array(crypto_sign_BYTES + msg.length);
3104
- crypto_sign(signedMsg, msg, msg.length, secretKey);
3105
- return signedMsg;
3106
- };
3107
- nacl.sign.open = function(signedMsg, publicKey) {
3108
- checkArrayTypes(signedMsg, publicKey);
3109
- if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) throw new Error("bad public key size");
3110
- var tmp = new Uint8Array(signedMsg.length);
3111
- var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
3112
- if (mlen < 0) return null;
3113
- var m = new Uint8Array(mlen);
3114
- for (var i = 0; i < m.length; i++) m[i] = tmp[i];
3115
- return m;
3116
- };
3117
- nacl.sign.detached = function(msg, secretKey) {
3118
- var signedMsg = nacl.sign(msg, secretKey);
3119
- var sig = new Uint8Array(crypto_sign_BYTES);
3120
- for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
3121
- return sig;
3122
- };
3123
- nacl.sign.detached.verify = function(msg, sig, publicKey) {
3124
- checkArrayTypes(msg, sig, publicKey);
3125
- if (sig.length !== crypto_sign_BYTES) throw new Error("bad signature size");
3126
- if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) throw new Error("bad public key size");
3127
- var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
3128
- var m = new Uint8Array(crypto_sign_BYTES + msg.length);
3129
- var i;
3130
- for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
3131
- for (i = 0; i < msg.length; i++) sm[i + crypto_sign_BYTES] = msg[i];
3132
- return crypto_sign_open(m, sm, sm.length, publicKey) >= 0;
3133
- };
3134
- nacl.sign.keyPair = function() {
3135
- var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
3136
- var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
3137
- crypto_sign_keypair(pk, sk);
3138
- return {
3139
- publicKey: pk,
3140
- secretKey: sk
3141
- };
3142
- };
3143
- nacl.sign.keyPair.fromSecretKey = function(secretKey) {
3144
- checkArrayTypes(secretKey);
3145
- if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error("bad secret key size");
3146
- var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
3147
- for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32 + i];
3148
- return {
3149
- publicKey: pk,
3150
- secretKey: new Uint8Array(secretKey)
3151
- };
3152
- };
3153
- nacl.sign.keyPair.fromSeed = function(seed) {
3154
- checkArrayTypes(seed);
3155
- if (seed.length !== crypto_sign_SEEDBYTES) throw new Error("bad seed size");
3156
- var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
3157
- var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
3158
- for (var i = 0; i < 32; i++) sk[i] = seed[i];
3159
- crypto_sign_keypair(pk, sk, true);
3160
- return {
3161
- publicKey: pk,
3162
- secretKey: sk
3163
- };
3164
- };
3165
- nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
3166
- nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
3167
- nacl.sign.seedLength = crypto_sign_SEEDBYTES;
3168
- nacl.sign.signatureLength = crypto_sign_BYTES;
3169
- nacl.hash = function(msg) {
3170
- checkArrayTypes(msg);
3171
- var h = new Uint8Array(crypto_hash_BYTES);
3172
- crypto_hash(h, msg, msg.length);
3173
- return h;
3174
- };
3175
- nacl.hash.hashLength = crypto_hash_BYTES;
3176
- nacl.verify = function(x, y) {
3177
- checkArrayTypes(x, y);
3178
- if (x.length === 0 || y.length === 0) return false;
3179
- if (x.length !== y.length) return false;
3180
- return vn(x, 0, y, 0, x.length) === 0 ? true : false;
3181
- };
3182
- nacl.setPRNG = function(fn) {
3183
- randombytes = fn;
3184
- };
3185
- (function() {
3186
- var crypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
3187
- if (crypto && crypto.getRandomValues) {
3188
- var QUOTA = 65536;
3189
- nacl.setPRNG(function(x, n) {
3190
- var i, v = new Uint8Array(n);
3191
- for (i = 0; i < n; i += QUOTA) crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
3192
- for (i = 0; i < n; i++) x[i] = v[i];
3193
- cleanup(v);
3194
- });
3195
- } else if (typeof __require !== "undefined") {
3196
- crypto = __require("crypto");
3197
- if (crypto && crypto.randomBytes) nacl.setPRNG(function(x, n) {
3198
- var i, v = crypto.randomBytes(n);
3199
- for (i = 0; i < n; i++) x[i] = v[i];
3200
- cleanup(v);
3201
- });
3202
- }
3203
- })();
3204
- })(typeof module !== "undefined" && module.exports ? module.exports : self.nacl = self.nacl || {});
3205
- }));
1956
+ h = ah0;
1957
+ l = al0;
1958
+ a = l & 65535;
1959
+ b = l >>> 16;
1960
+ c = h & 65535;
1961
+ d = h >>> 16;
1962
+ h = hh[0];
1963
+ l = hl[0];
1964
+ a += l & 65535;
1965
+ b += l >>> 16;
1966
+ c += h & 65535;
1967
+ d += h >>> 16;
1968
+ b += a >>> 16;
1969
+ c += b >>> 16;
1970
+ d += c >>> 16;
1971
+ hh[0] = ah0 = c & 65535 | d << 16;
1972
+ hl[0] = al0 = a & 65535 | b << 16;
1973
+ h = ah1;
1974
+ l = al1;
1975
+ a = l & 65535;
1976
+ b = l >>> 16;
1977
+ c = h & 65535;
1978
+ d = h >>> 16;
1979
+ h = hh[1];
1980
+ l = hl[1];
1981
+ a += l & 65535;
1982
+ b += l >>> 16;
1983
+ c += h & 65535;
1984
+ d += h >>> 16;
1985
+ b += a >>> 16;
1986
+ c += b >>> 16;
1987
+ d += c >>> 16;
1988
+ hh[1] = ah1 = c & 65535 | d << 16;
1989
+ hl[1] = al1 = a & 65535 | b << 16;
1990
+ h = ah2;
1991
+ l = al2;
1992
+ a = l & 65535;
1993
+ b = l >>> 16;
1994
+ c = h & 65535;
1995
+ d = h >>> 16;
1996
+ h = hh[2];
1997
+ l = hl[2];
1998
+ a += l & 65535;
1999
+ b += l >>> 16;
2000
+ c += h & 65535;
2001
+ d += h >>> 16;
2002
+ b += a >>> 16;
2003
+ c += b >>> 16;
2004
+ d += c >>> 16;
2005
+ hh[2] = ah2 = c & 65535 | d << 16;
2006
+ hl[2] = al2 = a & 65535 | b << 16;
2007
+ h = ah3;
2008
+ l = al3;
2009
+ a = l & 65535;
2010
+ b = l >>> 16;
2011
+ c = h & 65535;
2012
+ d = h >>> 16;
2013
+ h = hh[3];
2014
+ l = hl[3];
2015
+ a += l & 65535;
2016
+ b += l >>> 16;
2017
+ c += h & 65535;
2018
+ d += h >>> 16;
2019
+ b += a >>> 16;
2020
+ c += b >>> 16;
2021
+ d += c >>> 16;
2022
+ hh[3] = ah3 = c & 65535 | d << 16;
2023
+ hl[3] = al3 = a & 65535 | b << 16;
2024
+ h = ah4;
2025
+ l = al4;
2026
+ a = l & 65535;
2027
+ b = l >>> 16;
2028
+ c = h & 65535;
2029
+ d = h >>> 16;
2030
+ h = hh[4];
2031
+ l = hl[4];
2032
+ a += l & 65535;
2033
+ b += l >>> 16;
2034
+ c += h & 65535;
2035
+ d += h >>> 16;
2036
+ b += a >>> 16;
2037
+ c += b >>> 16;
2038
+ d += c >>> 16;
2039
+ hh[4] = ah4 = c & 65535 | d << 16;
2040
+ hl[4] = al4 = a & 65535 | b << 16;
2041
+ h = ah5;
2042
+ l = al5;
2043
+ a = l & 65535;
2044
+ b = l >>> 16;
2045
+ c = h & 65535;
2046
+ d = h >>> 16;
2047
+ h = hh[5];
2048
+ l = hl[5];
2049
+ a += l & 65535;
2050
+ b += l >>> 16;
2051
+ c += h & 65535;
2052
+ d += h >>> 16;
2053
+ b += a >>> 16;
2054
+ c += b >>> 16;
2055
+ d += c >>> 16;
2056
+ hh[5] = ah5 = c & 65535 | d << 16;
2057
+ hl[5] = al5 = a & 65535 | b << 16;
2058
+ h = ah6;
2059
+ l = al6;
2060
+ a = l & 65535;
2061
+ b = l >>> 16;
2062
+ c = h & 65535;
2063
+ d = h >>> 16;
2064
+ h = hh[6];
2065
+ l = hl[6];
2066
+ a += l & 65535;
2067
+ b += l >>> 16;
2068
+ c += h & 65535;
2069
+ d += h >>> 16;
2070
+ b += a >>> 16;
2071
+ c += b >>> 16;
2072
+ d += c >>> 16;
2073
+ hh[6] = ah6 = c & 65535 | d << 16;
2074
+ hl[6] = al6 = a & 65535 | b << 16;
2075
+ h = ah7;
2076
+ l = al7;
2077
+ a = l & 65535;
2078
+ b = l >>> 16;
2079
+ c = h & 65535;
2080
+ d = h >>> 16;
2081
+ h = hh[7];
2082
+ l = hl[7];
2083
+ a += l & 65535;
2084
+ b += l >>> 16;
2085
+ c += h & 65535;
2086
+ d += h >>> 16;
2087
+ b += a >>> 16;
2088
+ c += b >>> 16;
2089
+ d += c >>> 16;
2090
+ hh[7] = ah7 = c & 65535 | d << 16;
2091
+ hl[7] = al7 = a & 65535 | b << 16;
2092
+ pos += 128;
2093
+ len -= 128;
2094
+ }
2095
+ return pos;
2096
+ }
2097
+ function hash(data) {
2098
+ const h = new SHA512();
2099
+ h.update(data);
2100
+ const digest = h.digest();
2101
+ h.clean();
2102
+ return digest;
2103
+ }
3206
2104
 
3207
2105
  //#endregion
3208
- //#region src/curve25519.ts
3209
- var curve25519_exports = /* @__PURE__ */ __exportAll({
3210
- generateKeyPair: () => generateKeyPair$1,
3211
- generateSharedSecKey: () => generateSharedSecKey
3212
- });
3213
- var import_nacl_fast = /* @__PURE__ */ __toESM(require_nacl_fast(), 1);
3214
- function generateKeyPair$1() {
3215
- const keyPair = import_nacl_fast.default.box.keyPair();
2106
+ //#region ../../node_modules/.bun/@stablelib+ed25519@2.0.2/node_modules/@stablelib/ed25519/lib/ed25519.js
2107
+ const SIGNATURE_LENGTH = 64;
2108
+ const SECRET_KEY_LENGTH = 64;
2109
+ const SEED_LENGTH = 32;
2110
+ function gf(init) {
2111
+ const r = new Float64Array(16);
2112
+ if (init) for (let i = 0; i < init.length; i++) r[i] = init[i];
2113
+ return r;
2114
+ }
2115
+ const _9 = new Uint8Array(32);
2116
+ _9[0] = 9;
2117
+ const gf0 = gf();
2118
+ const gf1 = gf([1]);
2119
+ const D = gf([
2120
+ 30883,
2121
+ 4953,
2122
+ 19914,
2123
+ 30187,
2124
+ 55467,
2125
+ 16705,
2126
+ 2637,
2127
+ 112,
2128
+ 59544,
2129
+ 30585,
2130
+ 16505,
2131
+ 36039,
2132
+ 65139,
2133
+ 11119,
2134
+ 27886,
2135
+ 20995
2136
+ ]);
2137
+ const D2 = gf([
2138
+ 61785,
2139
+ 9906,
2140
+ 39828,
2141
+ 60374,
2142
+ 45398,
2143
+ 33411,
2144
+ 5274,
2145
+ 224,
2146
+ 53552,
2147
+ 61171,
2148
+ 33010,
2149
+ 6542,
2150
+ 64743,
2151
+ 22239,
2152
+ 55772,
2153
+ 9222
2154
+ ]);
2155
+ const X = gf([
2156
+ 54554,
2157
+ 36645,
2158
+ 11616,
2159
+ 51542,
2160
+ 42930,
2161
+ 38181,
2162
+ 51040,
2163
+ 26924,
2164
+ 56412,
2165
+ 64982,
2166
+ 57905,
2167
+ 49316,
2168
+ 21502,
2169
+ 52590,
2170
+ 14035,
2171
+ 8553
2172
+ ]);
2173
+ const Y = gf([
2174
+ 26200,
2175
+ 26214,
2176
+ 26214,
2177
+ 26214,
2178
+ 26214,
2179
+ 26214,
2180
+ 26214,
2181
+ 26214,
2182
+ 26214,
2183
+ 26214,
2184
+ 26214,
2185
+ 26214,
2186
+ 26214,
2187
+ 26214,
2188
+ 26214,
2189
+ 26214
2190
+ ]);
2191
+ const I = gf([
2192
+ 41136,
2193
+ 18958,
2194
+ 6951,
2195
+ 50414,
2196
+ 58488,
2197
+ 44335,
2198
+ 6150,
2199
+ 12099,
2200
+ 55207,
2201
+ 15867,
2202
+ 153,
2203
+ 11085,
2204
+ 57099,
2205
+ 20417,
2206
+ 9344,
2207
+ 11139
2208
+ ]);
2209
+ function set25519(r, a) {
2210
+ for (let i = 0; i < 16; i++) r[i] = a[i] | 0;
2211
+ }
2212
+ function car25519(o) {
2213
+ let c = 1;
2214
+ for (let i = 0; i < 16; i++) {
2215
+ let v = o[i] + c + 65535;
2216
+ c = Math.floor(v / 65536);
2217
+ o[i] = v - c * 65536;
2218
+ }
2219
+ o[0] += c - 1 + 37 * (c - 1);
2220
+ }
2221
+ function sel25519(p, q, b) {
2222
+ const c = ~(b - 1);
2223
+ for (let i = 0; i < 16; i++) {
2224
+ const t = c & (p[i] ^ q[i]);
2225
+ p[i] ^= t;
2226
+ q[i] ^= t;
2227
+ }
2228
+ }
2229
+ function pack25519(o, n) {
2230
+ const m = gf();
2231
+ const t = gf();
2232
+ for (let i = 0; i < 16; i++) t[i] = n[i];
2233
+ car25519(t);
2234
+ car25519(t);
2235
+ car25519(t);
2236
+ for (let j = 0; j < 2; j++) {
2237
+ m[0] = t[0] - 65517;
2238
+ for (let i = 1; i < 15; i++) {
2239
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
2240
+ m[i - 1] &= 65535;
2241
+ }
2242
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
2243
+ const b = m[15] >> 16 & 1;
2244
+ m[14] &= 65535;
2245
+ sel25519(t, m, 1 - b);
2246
+ }
2247
+ for (let i = 0; i < 16; i++) {
2248
+ o[2 * i] = t[i] & 255;
2249
+ o[2 * i + 1] = t[i] >> 8;
2250
+ }
2251
+ }
2252
+ function verify32(x, y) {
2253
+ let d = 0;
2254
+ for (let i = 0; i < 32; i++) d |= x[i] ^ y[i];
2255
+ return (1 & d - 1 >>> 8) - 1;
2256
+ }
2257
+ function neq25519(a, b) {
2258
+ const c = new Uint8Array(32);
2259
+ const d = new Uint8Array(32);
2260
+ pack25519(c, a);
2261
+ pack25519(d, b);
2262
+ return verify32(c, d);
2263
+ }
2264
+ function par25519(a) {
2265
+ const d = new Uint8Array(32);
2266
+ pack25519(d, a);
2267
+ return d[0] & 1;
2268
+ }
2269
+ function unpack25519(o, n) {
2270
+ for (let i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
2271
+ o[15] &= 32767;
2272
+ }
2273
+ function add(o, a, b) {
2274
+ for (let i = 0; i < 16; i++) o[i] = a[i] + b[i];
2275
+ }
2276
+ function sub(o, a, b) {
2277
+ for (let i = 0; i < 16; i++) o[i] = a[i] - b[i];
2278
+ }
2279
+ function mul(o, a, b) {
2280
+ let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
2281
+ v = a[0];
2282
+ t0 += v * b0;
2283
+ t1 += v * b1;
2284
+ t2 += v * b2;
2285
+ t3 += v * b3;
2286
+ t4 += v * b4;
2287
+ t5 += v * b5;
2288
+ t6 += v * b6;
2289
+ t7 += v * b7;
2290
+ t8 += v * b8;
2291
+ t9 += v * b9;
2292
+ t10 += v * b10;
2293
+ t11 += v * b11;
2294
+ t12 += v * b12;
2295
+ t13 += v * b13;
2296
+ t14 += v * b14;
2297
+ t15 += v * b15;
2298
+ v = a[1];
2299
+ t1 += v * b0;
2300
+ t2 += v * b1;
2301
+ t3 += v * b2;
2302
+ t4 += v * b3;
2303
+ t5 += v * b4;
2304
+ t6 += v * b5;
2305
+ t7 += v * b6;
2306
+ t8 += v * b7;
2307
+ t9 += v * b8;
2308
+ t10 += v * b9;
2309
+ t11 += v * b10;
2310
+ t12 += v * b11;
2311
+ t13 += v * b12;
2312
+ t14 += v * b13;
2313
+ t15 += v * b14;
2314
+ t16 += v * b15;
2315
+ v = a[2];
2316
+ t2 += v * b0;
2317
+ t3 += v * b1;
2318
+ t4 += v * b2;
2319
+ t5 += v * b3;
2320
+ t6 += v * b4;
2321
+ t7 += v * b5;
2322
+ t8 += v * b6;
2323
+ t9 += v * b7;
2324
+ t10 += v * b8;
2325
+ t11 += v * b9;
2326
+ t12 += v * b10;
2327
+ t13 += v * b11;
2328
+ t14 += v * b12;
2329
+ t15 += v * b13;
2330
+ t16 += v * b14;
2331
+ t17 += v * b15;
2332
+ v = a[3];
2333
+ t3 += v * b0;
2334
+ t4 += v * b1;
2335
+ t5 += v * b2;
2336
+ t6 += v * b3;
2337
+ t7 += v * b4;
2338
+ t8 += v * b5;
2339
+ t9 += v * b6;
2340
+ t10 += v * b7;
2341
+ t11 += v * b8;
2342
+ t12 += v * b9;
2343
+ t13 += v * b10;
2344
+ t14 += v * b11;
2345
+ t15 += v * b12;
2346
+ t16 += v * b13;
2347
+ t17 += v * b14;
2348
+ t18 += v * b15;
2349
+ v = a[4];
2350
+ t4 += v * b0;
2351
+ t5 += v * b1;
2352
+ t6 += v * b2;
2353
+ t7 += v * b3;
2354
+ t8 += v * b4;
2355
+ t9 += v * b5;
2356
+ t10 += v * b6;
2357
+ t11 += v * b7;
2358
+ t12 += v * b8;
2359
+ t13 += v * b9;
2360
+ t14 += v * b10;
2361
+ t15 += v * b11;
2362
+ t16 += v * b12;
2363
+ t17 += v * b13;
2364
+ t18 += v * b14;
2365
+ t19 += v * b15;
2366
+ v = a[5];
2367
+ t5 += v * b0;
2368
+ t6 += v * b1;
2369
+ t7 += v * b2;
2370
+ t8 += v * b3;
2371
+ t9 += v * b4;
2372
+ t10 += v * b5;
2373
+ t11 += v * b6;
2374
+ t12 += v * b7;
2375
+ t13 += v * b8;
2376
+ t14 += v * b9;
2377
+ t15 += v * b10;
2378
+ t16 += v * b11;
2379
+ t17 += v * b12;
2380
+ t18 += v * b13;
2381
+ t19 += v * b14;
2382
+ t20 += v * b15;
2383
+ v = a[6];
2384
+ t6 += v * b0;
2385
+ t7 += v * b1;
2386
+ t8 += v * b2;
2387
+ t9 += v * b3;
2388
+ t10 += v * b4;
2389
+ t11 += v * b5;
2390
+ t12 += v * b6;
2391
+ t13 += v * b7;
2392
+ t14 += v * b8;
2393
+ t15 += v * b9;
2394
+ t16 += v * b10;
2395
+ t17 += v * b11;
2396
+ t18 += v * b12;
2397
+ t19 += v * b13;
2398
+ t20 += v * b14;
2399
+ t21 += v * b15;
2400
+ v = a[7];
2401
+ t7 += v * b0;
2402
+ t8 += v * b1;
2403
+ t9 += v * b2;
2404
+ t10 += v * b3;
2405
+ t11 += v * b4;
2406
+ t12 += v * b5;
2407
+ t13 += v * b6;
2408
+ t14 += v * b7;
2409
+ t15 += v * b8;
2410
+ t16 += v * b9;
2411
+ t17 += v * b10;
2412
+ t18 += v * b11;
2413
+ t19 += v * b12;
2414
+ t20 += v * b13;
2415
+ t21 += v * b14;
2416
+ t22 += v * b15;
2417
+ v = a[8];
2418
+ t8 += v * b0;
2419
+ t9 += v * b1;
2420
+ t10 += v * b2;
2421
+ t11 += v * b3;
2422
+ t12 += v * b4;
2423
+ t13 += v * b5;
2424
+ t14 += v * b6;
2425
+ t15 += v * b7;
2426
+ t16 += v * b8;
2427
+ t17 += v * b9;
2428
+ t18 += v * b10;
2429
+ t19 += v * b11;
2430
+ t20 += v * b12;
2431
+ t21 += v * b13;
2432
+ t22 += v * b14;
2433
+ t23 += v * b15;
2434
+ v = a[9];
2435
+ t9 += v * b0;
2436
+ t10 += v * b1;
2437
+ t11 += v * b2;
2438
+ t12 += v * b3;
2439
+ t13 += v * b4;
2440
+ t14 += v * b5;
2441
+ t15 += v * b6;
2442
+ t16 += v * b7;
2443
+ t17 += v * b8;
2444
+ t18 += v * b9;
2445
+ t19 += v * b10;
2446
+ t20 += v * b11;
2447
+ t21 += v * b12;
2448
+ t22 += v * b13;
2449
+ t23 += v * b14;
2450
+ t24 += v * b15;
2451
+ v = a[10];
2452
+ t10 += v * b0;
2453
+ t11 += v * b1;
2454
+ t12 += v * b2;
2455
+ t13 += v * b3;
2456
+ t14 += v * b4;
2457
+ t15 += v * b5;
2458
+ t16 += v * b6;
2459
+ t17 += v * b7;
2460
+ t18 += v * b8;
2461
+ t19 += v * b9;
2462
+ t20 += v * b10;
2463
+ t21 += v * b11;
2464
+ t22 += v * b12;
2465
+ t23 += v * b13;
2466
+ t24 += v * b14;
2467
+ t25 += v * b15;
2468
+ v = a[11];
2469
+ t11 += v * b0;
2470
+ t12 += v * b1;
2471
+ t13 += v * b2;
2472
+ t14 += v * b3;
2473
+ t15 += v * b4;
2474
+ t16 += v * b5;
2475
+ t17 += v * b6;
2476
+ t18 += v * b7;
2477
+ t19 += v * b8;
2478
+ t20 += v * b9;
2479
+ t21 += v * b10;
2480
+ t22 += v * b11;
2481
+ t23 += v * b12;
2482
+ t24 += v * b13;
2483
+ t25 += v * b14;
2484
+ t26 += v * b15;
2485
+ v = a[12];
2486
+ t12 += v * b0;
2487
+ t13 += v * b1;
2488
+ t14 += v * b2;
2489
+ t15 += v * b3;
2490
+ t16 += v * b4;
2491
+ t17 += v * b5;
2492
+ t18 += v * b6;
2493
+ t19 += v * b7;
2494
+ t20 += v * b8;
2495
+ t21 += v * b9;
2496
+ t22 += v * b10;
2497
+ t23 += v * b11;
2498
+ t24 += v * b12;
2499
+ t25 += v * b13;
2500
+ t26 += v * b14;
2501
+ t27 += v * b15;
2502
+ v = a[13];
2503
+ t13 += v * b0;
2504
+ t14 += v * b1;
2505
+ t15 += v * b2;
2506
+ t16 += v * b3;
2507
+ t17 += v * b4;
2508
+ t18 += v * b5;
2509
+ t19 += v * b6;
2510
+ t20 += v * b7;
2511
+ t21 += v * b8;
2512
+ t22 += v * b9;
2513
+ t23 += v * b10;
2514
+ t24 += v * b11;
2515
+ t25 += v * b12;
2516
+ t26 += v * b13;
2517
+ t27 += v * b14;
2518
+ t28 += v * b15;
2519
+ v = a[14];
2520
+ t14 += v * b0;
2521
+ t15 += v * b1;
2522
+ t16 += v * b2;
2523
+ t17 += v * b3;
2524
+ t18 += v * b4;
2525
+ t19 += v * b5;
2526
+ t20 += v * b6;
2527
+ t21 += v * b7;
2528
+ t22 += v * b8;
2529
+ t23 += v * b9;
2530
+ t24 += v * b10;
2531
+ t25 += v * b11;
2532
+ t26 += v * b12;
2533
+ t27 += v * b13;
2534
+ t28 += v * b14;
2535
+ t29 += v * b15;
2536
+ v = a[15];
2537
+ t15 += v * b0;
2538
+ t16 += v * b1;
2539
+ t17 += v * b2;
2540
+ t18 += v * b3;
2541
+ t19 += v * b4;
2542
+ t20 += v * b5;
2543
+ t21 += v * b6;
2544
+ t22 += v * b7;
2545
+ t23 += v * b8;
2546
+ t24 += v * b9;
2547
+ t25 += v * b10;
2548
+ t26 += v * b11;
2549
+ t27 += v * b12;
2550
+ t28 += v * b13;
2551
+ t29 += v * b14;
2552
+ t30 += v * b15;
2553
+ t0 += 38 * t16;
2554
+ t1 += 38 * t17;
2555
+ t2 += 38 * t18;
2556
+ t3 += 38 * t19;
2557
+ t4 += 38 * t20;
2558
+ t5 += 38 * t21;
2559
+ t6 += 38 * t22;
2560
+ t7 += 38 * t23;
2561
+ t8 += 38 * t24;
2562
+ t9 += 38 * t25;
2563
+ t10 += 38 * t26;
2564
+ t11 += 38 * t27;
2565
+ t12 += 38 * t28;
2566
+ t13 += 38 * t29;
2567
+ t14 += 38 * t30;
2568
+ c = 1;
2569
+ v = t0 + c + 65535;
2570
+ c = Math.floor(v / 65536);
2571
+ t0 = v - c * 65536;
2572
+ v = t1 + c + 65535;
2573
+ c = Math.floor(v / 65536);
2574
+ t1 = v - c * 65536;
2575
+ v = t2 + c + 65535;
2576
+ c = Math.floor(v / 65536);
2577
+ t2 = v - c * 65536;
2578
+ v = t3 + c + 65535;
2579
+ c = Math.floor(v / 65536);
2580
+ t3 = v - c * 65536;
2581
+ v = t4 + c + 65535;
2582
+ c = Math.floor(v / 65536);
2583
+ t4 = v - c * 65536;
2584
+ v = t5 + c + 65535;
2585
+ c = Math.floor(v / 65536);
2586
+ t5 = v - c * 65536;
2587
+ v = t6 + c + 65535;
2588
+ c = Math.floor(v / 65536);
2589
+ t6 = v - c * 65536;
2590
+ v = t7 + c + 65535;
2591
+ c = Math.floor(v / 65536);
2592
+ t7 = v - c * 65536;
2593
+ v = t8 + c + 65535;
2594
+ c = Math.floor(v / 65536);
2595
+ t8 = v - c * 65536;
2596
+ v = t9 + c + 65535;
2597
+ c = Math.floor(v / 65536);
2598
+ t9 = v - c * 65536;
2599
+ v = t10 + c + 65535;
2600
+ c = Math.floor(v / 65536);
2601
+ t10 = v - c * 65536;
2602
+ v = t11 + c + 65535;
2603
+ c = Math.floor(v / 65536);
2604
+ t11 = v - c * 65536;
2605
+ v = t12 + c + 65535;
2606
+ c = Math.floor(v / 65536);
2607
+ t12 = v - c * 65536;
2608
+ v = t13 + c + 65535;
2609
+ c = Math.floor(v / 65536);
2610
+ t13 = v - c * 65536;
2611
+ v = t14 + c + 65535;
2612
+ c = Math.floor(v / 65536);
2613
+ t14 = v - c * 65536;
2614
+ v = t15 + c + 65535;
2615
+ c = Math.floor(v / 65536);
2616
+ t15 = v - c * 65536;
2617
+ t0 += c - 1 + 37 * (c - 1);
2618
+ c = 1;
2619
+ v = t0 + c + 65535;
2620
+ c = Math.floor(v / 65536);
2621
+ t0 = v - c * 65536;
2622
+ v = t1 + c + 65535;
2623
+ c = Math.floor(v / 65536);
2624
+ t1 = v - c * 65536;
2625
+ v = t2 + c + 65535;
2626
+ c = Math.floor(v / 65536);
2627
+ t2 = v - c * 65536;
2628
+ v = t3 + c + 65535;
2629
+ c = Math.floor(v / 65536);
2630
+ t3 = v - c * 65536;
2631
+ v = t4 + c + 65535;
2632
+ c = Math.floor(v / 65536);
2633
+ t4 = v - c * 65536;
2634
+ v = t5 + c + 65535;
2635
+ c = Math.floor(v / 65536);
2636
+ t5 = v - c * 65536;
2637
+ v = t6 + c + 65535;
2638
+ c = Math.floor(v / 65536);
2639
+ t6 = v - c * 65536;
2640
+ v = t7 + c + 65535;
2641
+ c = Math.floor(v / 65536);
2642
+ t7 = v - c * 65536;
2643
+ v = t8 + c + 65535;
2644
+ c = Math.floor(v / 65536);
2645
+ t8 = v - c * 65536;
2646
+ v = t9 + c + 65535;
2647
+ c = Math.floor(v / 65536);
2648
+ t9 = v - c * 65536;
2649
+ v = t10 + c + 65535;
2650
+ c = Math.floor(v / 65536);
2651
+ t10 = v - c * 65536;
2652
+ v = t11 + c + 65535;
2653
+ c = Math.floor(v / 65536);
2654
+ t11 = v - c * 65536;
2655
+ v = t12 + c + 65535;
2656
+ c = Math.floor(v / 65536);
2657
+ t12 = v - c * 65536;
2658
+ v = t13 + c + 65535;
2659
+ c = Math.floor(v / 65536);
2660
+ t13 = v - c * 65536;
2661
+ v = t14 + c + 65535;
2662
+ c = Math.floor(v / 65536);
2663
+ t14 = v - c * 65536;
2664
+ v = t15 + c + 65535;
2665
+ c = Math.floor(v / 65536);
2666
+ t15 = v - c * 65536;
2667
+ t0 += c - 1 + 37 * (c - 1);
2668
+ o[0] = t0;
2669
+ o[1] = t1;
2670
+ o[2] = t2;
2671
+ o[3] = t3;
2672
+ o[4] = t4;
2673
+ o[5] = t5;
2674
+ o[6] = t6;
2675
+ o[7] = t7;
2676
+ o[8] = t8;
2677
+ o[9] = t9;
2678
+ o[10] = t10;
2679
+ o[11] = t11;
2680
+ o[12] = t12;
2681
+ o[13] = t13;
2682
+ o[14] = t14;
2683
+ o[15] = t15;
2684
+ }
2685
+ function square(o, a) {
2686
+ mul(o, a, a);
2687
+ }
2688
+ function inv25519(o, i) {
2689
+ const c = gf();
2690
+ let a;
2691
+ for (a = 0; a < 16; a++) c[a] = i[a];
2692
+ for (a = 253; a >= 0; a--) {
2693
+ square(c, c);
2694
+ if (a !== 2 && a !== 4) mul(c, c, i);
2695
+ }
2696
+ for (a = 0; a < 16; a++) o[a] = c[a];
2697
+ }
2698
+ function pow2523(o, i) {
2699
+ const c = gf();
2700
+ let a;
2701
+ for (a = 0; a < 16; a++) c[a] = i[a];
2702
+ for (a = 250; a >= 0; a--) {
2703
+ square(c, c);
2704
+ if (a !== 1) mul(c, c, i);
2705
+ }
2706
+ for (a = 0; a < 16; a++) o[a] = c[a];
2707
+ }
2708
+ function edadd(p, q) {
2709
+ const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
2710
+ sub(a, p[1], p[0]);
2711
+ sub(t, q[1], q[0]);
2712
+ mul(a, a, t);
2713
+ add(b, p[0], p[1]);
2714
+ add(t, q[0], q[1]);
2715
+ mul(b, b, t);
2716
+ mul(c, p[3], q[3]);
2717
+ mul(c, c, D2);
2718
+ mul(d, p[2], q[2]);
2719
+ add(d, d, d);
2720
+ sub(e, b, a);
2721
+ sub(f, d, c);
2722
+ add(g, d, c);
2723
+ add(h, b, a);
2724
+ mul(p[0], e, f);
2725
+ mul(p[1], h, g);
2726
+ mul(p[2], g, f);
2727
+ mul(p[3], e, h);
2728
+ }
2729
+ function cswap(p, q, b) {
2730
+ for (let i = 0; i < 4; i++) sel25519(p[i], q[i], b);
2731
+ }
2732
+ function pack(r, p) {
2733
+ const tx = gf(), ty = gf(), zi = gf();
2734
+ inv25519(zi, p[2]);
2735
+ mul(tx, p[0], zi);
2736
+ mul(ty, p[1], zi);
2737
+ pack25519(r, ty);
2738
+ r[31] ^= par25519(tx) << 7;
2739
+ }
2740
+ function scalarmult(p, q, s) {
2741
+ set25519(p[0], gf0);
2742
+ set25519(p[1], gf1);
2743
+ set25519(p[2], gf1);
2744
+ set25519(p[3], gf0);
2745
+ for (let i = 255; i >= 0; --i) {
2746
+ const b = s[i / 8 | 0] >> (i & 7) & 1;
2747
+ cswap(p, q, b);
2748
+ edadd(q, p);
2749
+ edadd(p, p);
2750
+ cswap(p, q, b);
2751
+ }
2752
+ }
2753
+ function scalarbase(p, s) {
2754
+ const q = [
2755
+ gf(),
2756
+ gf(),
2757
+ gf(),
2758
+ gf()
2759
+ ];
2760
+ set25519(q[0], X);
2761
+ set25519(q[1], Y);
2762
+ set25519(q[2], gf1);
2763
+ mul(q[3], X, Y);
2764
+ scalarmult(p, q, s);
2765
+ }
2766
+ function generateKeyPairFromSeed(seed) {
2767
+ if (seed.length !== 32) throw new Error(`ed25519: seed must be ${32} bytes`);
2768
+ const d = hash(seed);
2769
+ d[0] &= 248;
2770
+ d[31] &= 127;
2771
+ d[31] |= 64;
2772
+ const publicKey = new Uint8Array(32);
2773
+ const p = [
2774
+ gf(),
2775
+ gf(),
2776
+ gf(),
2777
+ gf()
2778
+ ];
2779
+ scalarbase(p, d);
2780
+ pack(publicKey, p);
2781
+ const secretKey = new Uint8Array(64);
2782
+ secretKey.set(seed);
2783
+ secretKey.set(publicKey, 32);
3216
2784
  return {
3217
- publicKey: keyPair.publicKey,
3218
- secretKey: keyPair.secretKey
2785
+ publicKey,
2786
+ secretKey
3219
2787
  };
3220
2788
  }
3221
- function generateSharedSecKey(priKey, pubKey) {
3222
- return import_nacl_fast.default.scalarMult(priKey, pubKey);
2789
+ function generateKeyPair$1(prng) {
2790
+ const seed = randomBytes(32, prng);
2791
+ const result = generateKeyPairFromSeed(seed);
2792
+ wipe(seed);
2793
+ return result;
2794
+ }
2795
+ const L = new Float64Array([
2796
+ 237,
2797
+ 211,
2798
+ 245,
2799
+ 92,
2800
+ 26,
2801
+ 99,
2802
+ 18,
2803
+ 88,
2804
+ 214,
2805
+ 156,
2806
+ 247,
2807
+ 162,
2808
+ 222,
2809
+ 249,
2810
+ 222,
2811
+ 20,
2812
+ 0,
2813
+ 0,
2814
+ 0,
2815
+ 0,
2816
+ 0,
2817
+ 0,
2818
+ 0,
2819
+ 0,
2820
+ 0,
2821
+ 0,
2822
+ 0,
2823
+ 0,
2824
+ 0,
2825
+ 0,
2826
+ 0,
2827
+ 16
2828
+ ]);
2829
+ function modL(r, x) {
2830
+ let carry;
2831
+ let i;
2832
+ let j;
2833
+ let k;
2834
+ for (i = 63; i >= 32; --i) {
2835
+ carry = 0;
2836
+ for (j = i - 32, k = i - 12; j < k; ++j) {
2837
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
2838
+ carry = Math.floor((x[j] + 128) / 256);
2839
+ x[j] -= carry * 256;
2840
+ }
2841
+ x[j] += carry;
2842
+ x[i] = 0;
2843
+ }
2844
+ carry = 0;
2845
+ for (j = 0; j < 32; j++) {
2846
+ x[j] += carry - (x[31] >> 4) * L[j];
2847
+ carry = x[j] >> 8;
2848
+ x[j] &= 255;
2849
+ }
2850
+ for (j = 0; j < 32; j++) x[j] -= carry * L[j];
2851
+ for (i = 0; i < 32; i++) {
2852
+ x[i + 1] += x[i] >> 8;
2853
+ r[i] = x[i] & 255;
2854
+ }
2855
+ }
2856
+ function reduce(r) {
2857
+ const x = new Float64Array(64);
2858
+ for (let i = 0; i < 64; i++) x[i] = r[i];
2859
+ for (let i = 0; i < 64; i++) r[i] = 0;
2860
+ modL(r, x);
2861
+ }
2862
+ function sign$1(secretKey, message) {
2863
+ if (secretKey.length !== 64) throw new Error(`ed25519: secret key must be ${64} bytes`);
2864
+ const x = new Float64Array(64);
2865
+ const p = [
2866
+ gf(),
2867
+ gf(),
2868
+ gf(),
2869
+ gf()
2870
+ ];
2871
+ const d = hash(secretKey.subarray(0, 32));
2872
+ d[0] &= 248;
2873
+ d[31] &= 127;
2874
+ d[31] |= 64;
2875
+ const signature = new Uint8Array(64);
2876
+ signature.set(d.subarray(32), 32);
2877
+ const hs = new SHA512();
2878
+ hs.update(signature.subarray(32));
2879
+ hs.update(message);
2880
+ const r = hs.digest();
2881
+ hs.clean();
2882
+ reduce(r);
2883
+ scalarbase(p, r);
2884
+ pack(signature, p);
2885
+ hs.reset();
2886
+ hs.update(signature.subarray(0, 32));
2887
+ hs.update(secretKey.subarray(32));
2888
+ hs.update(message);
2889
+ const h = hs.digest();
2890
+ reduce(h);
2891
+ for (let i = 0; i < 32; i++) x[i] = r[i];
2892
+ for (let i = 0; i < 32; i++) for (let j = 0; j < 32; j++) x[i + j] += h[i] * d[j];
2893
+ modL(signature.subarray(32), x);
2894
+ return signature;
2895
+ }
2896
+ function unpackneg(r, p) {
2897
+ const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
2898
+ set25519(r[2], gf1);
2899
+ unpack25519(r[1], p);
2900
+ square(num, r[1]);
2901
+ mul(den, num, D);
2902
+ sub(num, num, r[2]);
2903
+ add(den, r[2], den);
2904
+ square(den2, den);
2905
+ square(den4, den2);
2906
+ mul(den6, den4, den2);
2907
+ mul(t, den6, num);
2908
+ mul(t, t, den);
2909
+ pow2523(t, t);
2910
+ mul(t, t, num);
2911
+ mul(t, t, den);
2912
+ mul(t, t, den);
2913
+ mul(r[0], t, den);
2914
+ square(chk, r[0]);
2915
+ mul(chk, chk, den);
2916
+ if (neq25519(chk, num)) mul(r[0], r[0], I);
2917
+ square(chk, r[0]);
2918
+ mul(chk, chk, den);
2919
+ if (neq25519(chk, num)) return -1;
2920
+ if (par25519(r[0]) === p[31] >> 7) sub(r[0], gf0, r[0]);
2921
+ mul(r[3], r[0], r[1]);
2922
+ return 0;
2923
+ }
2924
+ function verify$1(publicKey, message, signature) {
2925
+ const t = new Uint8Array(32);
2926
+ const p = [
2927
+ gf(),
2928
+ gf(),
2929
+ gf(),
2930
+ gf()
2931
+ ];
2932
+ const q = [
2933
+ gf(),
2934
+ gf(),
2935
+ gf(),
2936
+ gf()
2937
+ ];
2938
+ if (signature.length !== 64) throw new Error(`ed25519: signature must be ${64} bytes`);
2939
+ if (unpackneg(q, publicKey)) return false;
2940
+ const hs = new SHA512();
2941
+ hs.update(signature.subarray(0, 32));
2942
+ hs.update(publicKey);
2943
+ hs.update(message);
2944
+ const h = hs.digest();
2945
+ reduce(h);
2946
+ scalarmult(p, q, h);
2947
+ scalarbase(q, signature.subarray(32));
2948
+ edadd(p, q);
2949
+ pack(t, p);
2950
+ if (verify32(signature, t)) return false;
2951
+ return true;
3223
2952
  }
3224
2953
 
3225
2954
  //#endregion
@@ -3230,17 +2959,13 @@ var ed25519_exports = /* @__PURE__ */ __exportAll({
3230
2959
  verify: () => verify
3231
2960
  });
3232
2961
  function generateKeyPair() {
3233
- const keyPair = import_nacl_fast.default.sign.keyPair();
3234
- return {
3235
- publicKey: keyPair.publicKey,
3236
- secretKey: keyPair.secretKey
3237
- };
2962
+ return generateKeyPair$1();
3238
2963
  }
3239
2964
  function sign(message, secretKey) {
3240
- return import_nacl_fast.default.sign.detached(message, secretKey);
2965
+ return sign$1(secretKey, message);
3241
2966
  }
3242
2967
  function verify(message, signature, publicKey) {
3243
- return import_nacl_fast.default.sign.detached.verify(message, signature, publicKey);
2968
+ return verify$1(publicKey, message, signature);
3244
2969
  }
3245
2970
 
3246
2971
  //#endregion