bcrypt-ts 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/constant.ts DELETED
@@ -1,204 +0,0 @@
1
- export const BCRYPT_SALT_LEN = 16;
2
-
3
- export const GENSALT_DEFAULT_LOG2_ROUNDS = 10;
4
-
5
- export const BLOWFISH_NUM_ROUNDS = 16;
6
-
7
- export const MAX_EXECUTION_TIME = 100;
8
-
9
- export const BASE64_CODE =
10
- "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");
11
-
12
- export const BASE64_INDEX = [
13
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
15
- -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
16
- -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
17
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28,
18
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
19
- 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1,
20
- ];
21
-
22
- export const P_ORIG = [
23
- 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,
24
- 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
25
- 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,
26
- ];
27
-
28
- export const S_ORIG = [
29
- 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
30
- 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
31
- 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,
32
- 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
33
- 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
34
- 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
35
- 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,
36
- 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
37
- 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,
38
- 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
39
- 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,
40
- 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
41
- 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,
42
- 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
43
- 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
44
- 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
45
- 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,
46
- 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
47
- 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,
48
- 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
49
- 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,
50
- 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
51
- 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,
52
- 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
53
- 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
54
- 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
55
- 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,
56
- 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
57
- 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,
58
- 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
59
- 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,
60
- 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
61
- 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,
62
- 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
63
- 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
64
- 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
65
- 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,
66
- 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
67
- 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,
68
- 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
69
- 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,
70
- 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
71
- 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,
72
- 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
73
- 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
74
- 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
75
- 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,
76
- 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
77
- 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,
78
- 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
79
- 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,
80
- 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
81
- 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,
82
- 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
83
- 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
84
- 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
85
- 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,
86
- 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
87
- 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,
88
- 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
89
- 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,
90
- 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
91
- 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,
92
- 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
93
- 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
94
- 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
95
- 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,
96
- 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
97
- 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,
98
- 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
99
- 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,
100
- 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
101
- 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,
102
- 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
103
- 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
104
- 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
105
- 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,
106
- 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
107
- 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,
108
- 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
109
- 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,
110
- 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
111
- 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,
112
- 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
113
- 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
114
- 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
115
- 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,
116
- 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
117
- 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,
118
- 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
119
- 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,
120
- 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
121
- 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,
122
- 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
123
- 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
124
- 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
125
- 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,
126
- 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
127
- 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,
128
- 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
129
- 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,
130
- 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
131
- 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,
132
- 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
133
- 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
134
- 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
135
- 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,
136
- 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
137
- 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,
138
- 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
139
- 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,
140
- 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
141
- 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,
142
- 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
143
- 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
144
- 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
145
- 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,
146
- 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
147
- 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,
148
- 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
149
- 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,
150
- 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
151
- 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,
152
- 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
153
- 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
154
- 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
155
- 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,
156
- 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,
157
- 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,
158
- 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
159
- 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,
160
- 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
161
- 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,
162
- 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
163
- 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
164
- 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
165
- 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,
166
- 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
167
- 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,
168
- 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
169
- 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,
170
- 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
171
- 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,
172
- 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
173
- 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
174
- 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
175
- 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,
176
- 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
177
- 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,
178
- 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
179
- 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,
180
- 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
181
- 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,
182
- 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
183
- 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
184
- 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
185
- 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,
186
- 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
187
- 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,
188
- 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
189
- 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,
190
- 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
191
- 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,
192
- 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
193
- 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
194
- 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
195
- 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,
196
- 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
197
- 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,
198
- 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
199
- 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,
200
- ];
201
-
202
- export const C_ORIG = [
203
- 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,
204
- ];
package/src/crypt.ts DELETED
@@ -1,307 +0,0 @@
1
- import {
2
- BCRYPT_SALT_LEN,
3
- BLOWFISH_NUM_ROUNDS,
4
- MAX_EXECUTION_TIME,
5
- C_ORIG,
6
- P_ORIG,
7
- S_ORIG,
8
- } from "./constant";
9
- import { nextTick } from "./utils";
10
-
11
- // A base64 implementation for the bcrypt algorithm. This is partly non-standard.
12
-
13
- const encipher = (
14
- lr: number[],
15
- off: number,
16
- P: Int32Array | number[],
17
- S: Int32Array | number[]
18
- ): number[] => {
19
- // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt
20
- let n: number;
21
- let l = lr[off];
22
- let r = lr[off + 1];
23
-
24
- l ^= P[0];
25
-
26
- //The following is an unrolled version of the above loop.
27
- //Iteration 0
28
- n = S[l >>> 24];
29
- n += S[0x100 | ((l >> 16) & 0xff)];
30
- n ^= S[0x200 | ((l >> 8) & 0xff)];
31
- n += S[0x300 | (l & 0xff)];
32
- r ^= n ^ P[1];
33
- n = S[r >>> 24];
34
- n += S[0x100 | ((r >> 16) & 0xff)];
35
- n ^= S[0x200 | ((r >> 8) & 0xff)];
36
- n += S[0x300 | (r & 0xff)];
37
- l ^= n ^ P[2];
38
- //Iteration 1
39
- n = S[l >>> 24];
40
- n += S[0x100 | ((l >> 16) & 0xff)];
41
- n ^= S[0x200 | ((l >> 8) & 0xff)];
42
- n += S[0x300 | (l & 0xff)];
43
- r ^= n ^ P[3];
44
- n = S[r >>> 24];
45
- n += S[0x100 | ((r >> 16) & 0xff)];
46
- n ^= S[0x200 | ((r >> 8) & 0xff)];
47
- n += S[0x300 | (r & 0xff)];
48
- l ^= n ^ P[4];
49
- //Iteration 2
50
- n = S[l >>> 24];
51
- n += S[0x100 | ((l >> 16) & 0xff)];
52
- n ^= S[0x200 | ((l >> 8) & 0xff)];
53
- n += S[0x300 | (l & 0xff)];
54
- r ^= n ^ P[5];
55
- n = S[r >>> 24];
56
- n += S[0x100 | ((r >> 16) & 0xff)];
57
- n ^= S[0x200 | ((r >> 8) & 0xff)];
58
- n += S[0x300 | (r & 0xff)];
59
- l ^= n ^ P[6];
60
- //Iteration 3
61
- n = S[l >>> 24];
62
- n += S[0x100 | ((l >> 16) & 0xff)];
63
- n ^= S[0x200 | ((l >> 8) & 0xff)];
64
- n += S[0x300 | (l & 0xff)];
65
- r ^= n ^ P[7];
66
- n = S[r >>> 24];
67
- n += S[0x100 | ((r >> 16) & 0xff)];
68
- n ^= S[0x200 | ((r >> 8) & 0xff)];
69
- n += S[0x300 | (r & 0xff)];
70
- l ^= n ^ P[8];
71
- //Iteration 4
72
- n = S[l >>> 24];
73
- n += S[0x100 | ((l >> 16) & 0xff)];
74
- n ^= S[0x200 | ((l >> 8) & 0xff)];
75
- n += S[0x300 | (l & 0xff)];
76
- r ^= n ^ P[9];
77
- n = S[r >>> 24];
78
- n += S[0x100 | ((r >> 16) & 0xff)];
79
- n ^= S[0x200 | ((r >> 8) & 0xff)];
80
- n += S[0x300 | (r & 0xff)];
81
- l ^= n ^ P[10];
82
- //Iteration 5
83
- n = S[l >>> 24];
84
- n += S[0x100 | ((l >> 16) & 0xff)];
85
- n ^= S[0x200 | ((l >> 8) & 0xff)];
86
- n += S[0x300 | (l & 0xff)];
87
- r ^= n ^ P[11];
88
- n = S[r >>> 24];
89
- n += S[0x100 | ((r >> 16) & 0xff)];
90
- n ^= S[0x200 | ((r >> 8) & 0xff)];
91
- n += S[0x300 | (r & 0xff)];
92
- l ^= n ^ P[12];
93
- //Iteration 6
94
- n = S[l >>> 24];
95
- n += S[0x100 | ((l >> 16) & 0xff)];
96
- n ^= S[0x200 | ((l >> 8) & 0xff)];
97
- n += S[0x300 | (l & 0xff)];
98
- r ^= n ^ P[13];
99
- n = S[r >>> 24];
100
- n += S[0x100 | ((r >> 16) & 0xff)];
101
- n ^= S[0x200 | ((r >> 8) & 0xff)];
102
- n += S[0x300 | (r & 0xff)];
103
- l ^= n ^ P[14];
104
- //Iteration 7
105
- n = S[l >>> 24];
106
- n += S[0x100 | ((l >> 16) & 0xff)];
107
- n ^= S[0x200 | ((l >> 8) & 0xff)];
108
- n += S[0x300 | (l & 0xff)];
109
- r ^= n ^ P[15];
110
- n = S[r >>> 24];
111
- n += S[0x100 | ((r >> 16) & 0xff)];
112
- n ^= S[0x200 | ((r >> 8) & 0xff)];
113
- n += S[0x300 | (r & 0xff)];
114
- l ^= n ^ P[16];
115
-
116
- lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];
117
- lr[off + 1] = l;
118
-
119
- return lr;
120
- };
121
-
122
- const streamtoword = (
123
- data: number[],
124
- offp: number
125
- ): { key: number; offp: number } => {
126
- let word = 0;
127
-
128
- for (let i = 0; i < 4; ++i)
129
- (word = (word << 8) | (data[offp] & 0xff)),
130
- (offp = (offp + 1) % data.length);
131
-
132
- return { key: word, offp: offp };
133
- };
134
-
135
- const key = (
136
- key: number[],
137
- P: Int32Array | number[],
138
- S: Int32Array | number[]
139
- ): void => {
140
- const pLength = P.length;
141
- const sLength = S.length;
142
- let offp = 0;
143
- let lr = [0, 0];
144
- let sw: {
145
- key: number;
146
- offp: number;
147
- };
148
-
149
- for (let i = 0; i < pLength; i++)
150
- (sw = streamtoword(key, offp)), (offp = sw.offp), (P[i] = P[i] ^ sw.key);
151
-
152
- for (let i = 0; i < pLength; i += 2)
153
- (lr = encipher(lr, 0, P, S)), (P[i] = lr[0]), (P[i + 1] = lr[1]);
154
-
155
- for (let i = 0; i < sLength; i += 2)
156
- (lr = encipher(lr, 0, P, S)), (S[i] = lr[0]), (S[i + 1] = lr[1]);
157
- };
158
-
159
- /**
160
- * Expensive key schedule Blowfish.
161
- */
162
- const ekskey = (
163
- data: number[],
164
- key: number[],
165
- P: Int32Array | number[],
166
- S: Int32Array | number[]
167
- ): void => {
168
- const pLength = P.length;
169
- const sLength = S.length;
170
- let offp = 0;
171
- let lr = [0, 0];
172
- let sw: {
173
- key: number;
174
- offp: number;
175
- };
176
-
177
- for (let i = 0; i < pLength; i++)
178
- (sw = streamtoword(key, offp)), (offp = sw.offp), (P[i] = P[i] ^ sw.key);
179
-
180
- offp = 0;
181
-
182
- for (let i = 0; i < pLength; i += 2)
183
- (sw = streamtoword(data, offp)),
184
- (offp = sw.offp),
185
- (lr[0] ^= sw.key),
186
- (sw = streamtoword(data, offp)),
187
- (offp = sw.offp),
188
- (lr[1] ^= sw.key),
189
- (lr = encipher(lr, 0, P, S)),
190
- (P[i] = lr[0]),
191
- (P[i + 1] = lr[1]);
192
-
193
- for (let i = 0; i < sLength; i += 2)
194
- (sw = streamtoword(data, offp)),
195
- (offp = sw.offp),
196
- (lr[0] ^= sw.key),
197
- (sw = streamtoword(data, offp)),
198
- (offp = sw.offp),
199
- (lr[1] ^= sw.key),
200
- (lr = encipher(lr, 0, P, S)),
201
- (S[i] = lr[0]),
202
- (S[i + 1] = lr[1]);
203
- };
204
-
205
- /**
206
- * Internaly crypts a string.
207
- *
208
- * @param bytes Bytes to crypt
209
- * @param salt Salt bytes to use
210
- * @param rounds Number of rounds
211
- * @param progressCallback Callback called with the current progress
212
- */
213
- export const crypt = (
214
- bytes: number[],
215
- salt: number[],
216
- rounds: number,
217
- sync: boolean,
218
- progressCallback?: (progress: number) => void
219
- ): Promise<number[]> | number[] => {
220
- const cdata = C_ORIG.slice();
221
- const cLength = cdata.length;
222
-
223
- // Validate
224
- if (rounds < 4 || rounds > 31) {
225
- const err = new Error(`Illegal number of rounds (4-31): ${rounds}`);
226
-
227
- if (sync === false) return Promise.reject(err);
228
-
229
- throw err;
230
- }
231
-
232
- if (salt.length !== BCRYPT_SALT_LEN) {
233
- const err = new Error(
234
- `Illegal salt length: ${salt.length} != ${BCRYPT_SALT_LEN}`
235
- );
236
-
237
- if (sync === false) return Promise.reject(err);
238
-
239
- throw err;
240
- }
241
-
242
- rounds = (1 << rounds) >>> 0;
243
-
244
- let P: Int32Array | number[];
245
- let S: Int32Array | number[];
246
- let i = 0;
247
- let j: number;
248
-
249
- //Use typed arrays when available - huge speedup!
250
- if (Int32Array) {
251
- P = new Int32Array(P_ORIG);
252
- S = new Int32Array(S_ORIG);
253
- } else {
254
- P = P_ORIG.slice();
255
- S = S_ORIG.slice();
256
- }
257
-
258
- ekskey(salt, bytes, P, S);
259
-
260
- /**
261
- * Calcualtes the next round.
262
- */
263
- const next = (): Promise<number[] | undefined> | number[] | void => {
264
- if (progressCallback) progressCallback(i / rounds);
265
-
266
- if (i < rounds) {
267
- const start = Date.now();
268
-
269
- for (; i < rounds; ) {
270
- i = i + 1;
271
- key(bytes, P, S);
272
- key(salt, P, S);
273
- if (Date.now() - start > MAX_EXECUTION_TIME) break;
274
- }
275
- } else {
276
- for (i = 0; i < 64; i++)
277
- for (j = 0; j < cLength >> 1; j++) encipher(cdata, j << 1, P, S);
278
- const ret: number[] = [];
279
-
280
- for (i = 0; i < cLength; i++)
281
- ret.push(((cdata[i] >> 24) & 0xff) >>> 0),
282
- ret.push(((cdata[i] >> 16) & 0xff) >>> 0),
283
- ret.push(((cdata[i] >> 8) & 0xff) >>> 0),
284
- ret.push((cdata[i] & 0xff) >>> 0);
285
-
286
- if (sync === false) return Promise.resolve(ret);
287
-
288
- return ret;
289
- }
290
-
291
- if (sync === false)
292
- return new Promise((resolve) =>
293
- nextTick(() => {
294
- void (next() as Promise<number[] | undefined>).then(resolve);
295
- })
296
- );
297
- };
298
-
299
- if (sync === false) return next() as Promise<number[]>;
300
- else {
301
- let res;
302
-
303
- // eslint-disable-next-line no-constant-condition
304
- while (true)
305
- if (typeof (res = next()) !== "undefined") return (res as number[]) || [];
306
- }
307
- };
package/src/hash.ts DELETED
@@ -1,168 +0,0 @@
1
- import { encodeBase64, decodeBase64 } from "./base64";
2
- import {
3
- BCRYPT_SALT_LEN,
4
- C_ORIG,
5
- GENSALT_DEFAULT_LOG2_ROUNDS,
6
- } from "./constant";
7
- import { crypt } from "./crypt";
8
- import { genSalt, genSaltSync } from "./salt";
9
- import { stringToBytes } from "./utils";
10
-
11
- /**
12
- * Internally hashes a string.
13
- *
14
- * @param contentString String to hash
15
- * @param salt Salt to use, actually never null
16
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,
17
- * hashing is perormed synchronously.
18
- * @param {function(number)=} progressCallback Callback called with the current progress
19
- * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`
20
- * @inner
21
- */
22
- function _hash(
23
- contentString: string,
24
- salt: string,
25
- sync: boolean,
26
- progressCallback?: (progress: number) => void
27
- ): Promise<string> | string {
28
- if (typeof contentString !== "string" || typeof salt !== "string") {
29
- const err = new Error("Invalid string / salt: Not a string");
30
-
31
- if (sync === false) return Promise.reject(err);
32
-
33
- throw err;
34
- }
35
-
36
- // Validate the salt
37
- let minor: string;
38
- let offset: number;
39
-
40
- if (salt.charAt(0) !== "$" || salt.charAt(1) !== "2") {
41
- const err = new Error("Invalid salt version: " + salt.substring(0, 2));
42
-
43
- if (sync === false) return Promise.reject(err);
44
-
45
- throw err;
46
- }
47
- if (salt.charAt(2) === "$") (minor = String.fromCharCode(0)), (offset = 3);
48
- else {
49
- minor = salt.charAt(2);
50
- if (
51
- (minor !== "a" && minor !== "b" && minor !== "y") ||
52
- salt.charAt(3) !== "$"
53
- ) {
54
- const err = Error("Invalid salt revision: " + salt.substring(2, 4));
55
-
56
- if (sync === false) return Promise.reject(err);
57
-
58
- throw err;
59
- }
60
- offset = 4;
61
- }
62
-
63
- // Extract number of rounds
64
- if (salt.charAt(offset + 2) > "$") {
65
- const err = new Error("Missing salt rounds");
66
-
67
- if (sync === false) return Promise.reject(err);
68
-
69
- throw err;
70
- }
71
-
72
- const r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,
73
- r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),
74
- rounds = r1 + r2,
75
- realSalt = salt.substring(offset + 3, offset + 25);
76
-
77
- contentString += minor >= "a" ? "\x00" : "";
78
-
79
- const passwordBytes = stringToBytes(contentString),
80
- saltBytes = decodeBase64(realSalt, BCRYPT_SALT_LEN);
81
-
82
- /**
83
- * Finishes hashing.
84
- * @param bytes Byte array
85
- */
86
- const finish = (bytes: number[]): string => {
87
- const res = [];
88
-
89
- res.push("$2");
90
- if (minor >= "a") res.push(minor);
91
- res.push("$");
92
- if (rounds < 10) res.push("0");
93
- res.push(rounds.toString());
94
- res.push("$");
95
- res.push(encodeBase64(saltBytes, saltBytes.length));
96
- res.push(encodeBase64(bytes, C_ORIG.length * 4 - 1));
97
-
98
- return res.join("");
99
- };
100
-
101
- // Sync
102
- if (sync === false)
103
- return (
104
- crypt(
105
- passwordBytes,
106
- saltBytes,
107
- rounds,
108
- false,
109
- progressCallback
110
- ) as Promise<number[]>
111
- ).then((bytes) => finish(bytes));
112
-
113
- return finish(
114
- crypt(passwordBytes, saltBytes, rounds, true, progressCallback) as number[]
115
- );
116
- }
117
-
118
- /**
119
- * Synchronously generates a hash for the given string.
120
- *
121
- * @param contentString String to hash
122
- * @param salt Salt length to generate or salt to use, default to 10
123
- * @returns Resulting hash
124
- */
125
- export const hashSync = (
126
- contentString: string,
127
- salt: string | number = GENSALT_DEFAULT_LOG2_ROUNDS
128
- ): string => {
129
- if (typeof salt === "number") salt = genSaltSync(salt);
130
- if (typeof contentString !== "string" || typeof salt !== "string")
131
- throw Error(
132
- "Illegal arguments: " + typeof contentString + ", " + typeof salt
133
- );
134
-
135
- return _hash(contentString, salt, true) as string;
136
- };
137
-
138
- /**
139
- * Asynchronously generates a hash for the given string.
140
- *
141
- * @param contentString String to hash
142
- * @param salt Salt length to generate or salt to use
143
- * @param progressCallback Callback successively called with the percentage of rounds completed
144
- * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
145
- */
146
- export const hash = function (
147
- contentString: string,
148
- salt: number | string,
149
- progressCallback?: (progress: number) => void
150
- ): Promise<string> {
151
- if (typeof contentString === "string" && typeof salt === "number")
152
- return genSalt(salt).then(
153
- (salt) =>
154
- _hash(contentString, salt, false, progressCallback) as Promise<string>
155
- );
156
-
157
- if (typeof contentString === "string" && typeof salt === "string")
158
- return _hash(
159
- contentString,
160
- salt,
161
- false,
162
- progressCallback
163
- ) as Promise<string>;
164
-
165
- return Promise.reject(
166
- new Error(`Illegal arguments: ${typeof contentString}, ${typeof salt}`)
167
- );
168
- };