tinyhmacmd5 0.0.2 → 0.0.3

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A tiny JavaScript HMAC-MD5 implementation.
4
4
 
5
- The minified browser bundle ([`browser.min.js`](browser.min.js)) is only 2911 bytes.
5
+ The minified browser bundle ([`browser.min.js`](browser.min.js)) is only 2471 bytes.
6
6
 
7
7
  ## Setup
8
8
 
@@ -32,12 +32,12 @@ HMAC-MD5:
32
32
 
33
33
  ```js
34
34
  // string to hex
35
- // returns "1feba2d374d15f7b446f1bc1c0855868"
36
- md5("Hello world!👋", "83e6ecec0587c82060f1")
35
+ // returns "c87fdc912df24da05a6e3fed927e9d89"
36
+ md5("Hello world!👋", "HMAC key 🔑")
37
37
 
38
38
  // string to bytes
39
39
  // returns Uint8Array<ArrayBuffer>
40
- md5("Hello world!👋", "83e6ecec0587c82060f1", true)
40
+ md5("Hello world!👋", "HMAC key 🔑", true)
41
41
 
42
42
  // bytes to hex
43
43
  // returns "f881235eccf71ab49b937753a72ac673"
package/browser.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /** @license https://github.com/bddjr/tinyhmacmd5/blob/HEAD/LICENSE */
2
- {let r="length",e=16,t=Math.floor,n=(r,e)=>0|(0|r)+(0|e),o=(r,e)=>r<<e|r>>>32-e,f=(r,e,t,f,l,a)=>n(o(n(n(e,r),n(f,a)),l),t),l=(r,e,t,n,o,l,a)=>f(e&t|~e&n,r,e,o,l,a),a=(r,e,t,n,o,l,a)=>f(e&n|t&~n,r,e,o,l,a),i=(r,e,t,n,o,l,a)=>f(e^t^n,r,e,o,l,a),u=(r,e,t,n,o,l,a)=>f(t^(e|~n),r,e,o,l,a),c=(o,f)=>{var c,d,v,g,h=0,s=1732584193,y=-271733879,w=-1732584194,A=271733878,m=t((f+64)/512)*e+14;for(o[t(f/32)]|=128<<f%32,o[m]=0|f,o[m+1]=0|f/4294967296;h<o[r];A=n(A,g)){let[r,t,f,m,p,x,E,M,S,T,U,b,j,k,q,z]=o.slice(h,h+=e);c=s,d=y,v=w,g=A,s=l(s,y,w,A,r,7,-680876936),A=l(A,s,y,w,t,12,-389564586),w=l(w,A,s,y,f,17,606105819),y=l(y,w,A,s,m,22,-1044525330),s=l(s,y,w,A,p,7,-176418897),A=l(A,s,y,w,x,12,1200080426),w=l(w,A,s,y,E,17,-1473231341),y=l(y,w,A,s,M,22,-45705983),s=l(s,y,w,A,S,7,1770035416),A=l(A,s,y,w,T,12,-1958414417),w=l(w,A,s,y,U,17,-42063),y=l(y,w,A,s,b,22,-1990404162),s=l(s,y,w,A,j,7,1804603682),A=l(A,s,y,w,k,12,-40341101),w=l(w,A,s,y,q,17,-1502002290),y=l(y,w,A,s,z,22,1236535329),s=a(s,y,w,A,t,5,-165796510),A=a(A,s,y,w,E,9,-1069501632),w=a(w,A,s,y,b,14,643717713),y=a(y,w,A,s,r,20,-373897302),s=a(s,y,w,A,x,5,-701558691),A=a(A,s,y,w,U,9,38016083),w=a(w,A,s,y,z,14,-660478335),y=a(y,w,A,s,p,20,-405537848),s=a(s,y,w,A,T,5,568446438),A=a(A,s,y,w,q,9,-1019803690),w=a(w,A,s,y,m,14,-187363961),y=a(y,w,A,s,S,20,1163531501),s=a(s,y,w,A,k,5,-1444681467),A=a(A,s,y,w,f,9,-51403784),w=a(w,A,s,y,M,14,1735328473),y=a(y,w,A,s,j,20,-1926607734),s=i(s,y,w,A,x,4,-378558),A=i(A,s,y,w,S,11,-2022574463),w=i(w,A,s,y,b,e,1839030562),y=i(y,w,A,s,q,23,-35309556),s=i(s,y,w,A,t,4,-1530992060),A=i(A,s,y,w,p,11,1272893353),w=i(w,A,s,y,M,e,-155497632),y=i(y,w,A,s,U,23,-1094730640),s=i(s,y,w,A,k,4,681279174),A=i(A,s,y,w,r,11,-358537222),w=i(w,A,s,y,m,e,-722521979),y=i(y,w,A,s,E,23,76029189),s=i(s,y,w,A,T,4,-640364487),A=i(A,s,y,w,j,11,-421815835),w=i(w,A,s,y,z,e,530742520),y=i(y,w,A,s,f,23,-995338651),s=u(s,y,w,A,r,6,-198630844),A=u(A,s,y,w,M,10,1126891415),w=u(w,A,s,y,q,15,-1416354905),y=u(y,w,A,s,x,21,-57434055),s=u(s,y,w,A,j,6,1700485571),A=u(A,s,y,w,m,10,-1894986606),w=u(w,A,s,y,U,15,-1051523),y=u(y,w,A,s,t,21,-2054922799),s=u(s,y,w,A,S,6,1873313359),A=u(A,s,y,w,z,10,-30611744),w=u(w,A,s,y,E,15,-1560198380),y=u(y,w,A,s,k,21,1309151649),s=u(s,y,w,A,p,6,-145523070),A=u(A,s,y,w,b,10,-1120210379),w=u(w,A,s,y,f,15,718787259),y=u(y,w,A,s,T,21,-343485551),s=n(s,c),y=n(y,d),w=n(w,v)}return[s,y,w,A]},d=e=>{for(var n=e[r],o=[];n;)o[t(--n/4)]|=e[n]<<n%4*8;return o},v=r=>"string"==typeof r?(new TextEncoder).encode(r):r;var md5=(t,n,o)=>{var f=d(t=v(t)),l=8*t[r],a=e,i=new Uint8Array(a);if(null!=n){let t=d(n=v(n)),o=e,a=Array(o),i=r=>f.unshift(...a);for(i(t[r]>e&&(t=c(t,8*n[r])));o;a[o]=1549556828^t[o])f[--o]=909522486^t[o];i(f=c(f,512+l)),l=640}for(f=c(f,l);a;)i[--a]=f[a>>2]>>>a%4*8;return o?i:i.reduce((r,t)=>r+(t>>4&&"")+t.toString(e),"")}}
2
+ {let r="length",e=16,n=2**32,t=Math,o=t.floor,a=(r,e)=>0|(0|r)+(0|e),f=(r,e)=>r<<e|r>>>32-e,l=(r,e,n,t,o,l)=>a(f(a(e,r)+a(t,l),o),n),i=(r,e,n,t,o,a,f)=>l(e&n|~e&t,r,e,o,a,f),u=(r,e,n,t,o,a,f)=>l(e&t|n&~t,r,e,o,a,f),s=(r,e,n,t,o,a,f)=>l(e^n^t,r,e,o,a,f),c=(r,e,n,t,o,a,f)=>l(n^(e|~t),r,e,o,a,f),d=[],v=(f,l)=>{var v,g,h,w,y,b=0,m=1732584193,p=271733878,x=~m,A=~p,E=o((l+64)/512)*e+14,M=r=>d[y++]??=0|n*t.abs(t.sin(y));for(f[o(l/32)]|=128<<l%32,f[E]=0|l,f[E+1]=0|l/n;b<f[r];p=a(p,w)){let[r,n,t,o,l,d,E,S,T,U,j,k,q,z,B,C]=f.slice(b,b+=e);v=m,g=A,h=x,w=p,y=0,m=i(m,A,x,p,r,7,M()),p=i(p,m,A,x,n,12,M()),x=i(x,p,m,A,t,17,M()),A=i(A,x,p,m,o,22,M()),m=i(m,A,x,p,l,7,M()),p=i(p,m,A,x,d,12,M()),x=i(x,p,m,A,E,17,M()),A=i(A,x,p,m,S,22,M()),m=i(m,A,x,p,T,7,M()),p=i(p,m,A,x,U,12,M()),x=i(x,p,m,A,j,17,M()),A=i(A,x,p,m,k,22,M()),m=i(m,A,x,p,q,7,M()),p=i(p,m,A,x,z,12,M()),x=i(x,p,m,A,B,17,M()),A=i(A,x,p,m,C,22,M()),m=u(m,A,x,p,n,5,M()),p=u(p,m,A,x,E,9,M()),x=u(x,p,m,A,k,14,M()),A=u(A,x,p,m,r,20,M()),m=u(m,A,x,p,d,5,M()),p=u(p,m,A,x,j,9,M()),x=u(x,p,m,A,C,14,M()),A=u(A,x,p,m,l,20,M()),m=u(m,A,x,p,U,5,M()),p=u(p,m,A,x,B,9,M()),x=u(x,p,m,A,o,14,M()),A=u(A,x,p,m,T,20,M()),m=u(m,A,x,p,z,5,M()),p=u(p,m,A,x,t,9,M()),x=u(x,p,m,A,S,14,M()),A=u(A,x,p,m,q,20,M()),m=s(m,A,x,p,d,4,M()),p=s(p,m,A,x,T,11,M()),x=s(x,p,m,A,k,e,M()),A=s(A,x,p,m,B,23,M()),m=s(m,A,x,p,n,4,M()),p=s(p,m,A,x,l,11,M()),x=s(x,p,m,A,S,e,M()),A=s(A,x,p,m,j,23,M()),m=s(m,A,x,p,z,4,M()),p=s(p,m,A,x,r,11,M()),x=s(x,p,m,A,o,e,M()),A=s(A,x,p,m,E,23,M()),m=s(m,A,x,p,U,4,M()),p=s(p,m,A,x,q,11,M()),x=s(x,p,m,A,C,e,M()),A=s(A,x,p,m,t,23,M()),m=c(m,A,x,p,r,6,M()),p=c(p,m,A,x,S,10,M()),x=c(x,p,m,A,B,15,M()),A=c(A,x,p,m,d,21,M()),m=c(m,A,x,p,q,6,M()),p=c(p,m,A,x,o,10,M()),x=c(x,p,m,A,j,15,M()),A=c(A,x,p,m,n,21,M()),m=c(m,A,x,p,T,6,M()),p=c(p,m,A,x,C,10,M()),x=c(x,p,m,A,E,15,M()),A=c(A,x,p,m,z,21,M()),m=c(m,A,x,p,l,6,M()),p=c(p,m,A,x,k,10,M()),x=c(x,p,m,A,t,15,M()),A=c(A,x,p,m,U,21,M()),m=a(m,v),A=a(A,g),x=a(x,h)}return[m,A,x,p]},g=e=>{for(var n=e[r],t=[];n;)t[o(--n/4)]|=e[n]<<n%4*8;return t},h=r=>"string"==typeof r?(new TextEncoder).encode(r):r;var md5=(n,t,o)=>{var a,f=g(n=h(n)),l=8*n[r],i=e,u=new Uint8Array(e),s=r=>{for(;i;)f.unshift(r^a[--i]);i=e};for(null!=t&&((a=g(t=h(t)))[r]>e&&(a=v(a,8*t[r])),s(909522486),f=v(f,512+l),s(1549556828),l=640),f=v(f,l);i;)u[--i]=f[i>>2]>>>i%4*8;return o?u:u.reduce((r,n)=>r+(n>>4&&"")+n.toString(e),"")}}
package/main.js CHANGED
@@ -8,7 +8,12 @@ let $length = "length"
8
8
  /** @type {16} */
9
9
  let $16 = 16
10
10
 
11
- let floor = Math.floor
11
+ /** @type {number} */
12
+ let $2_32 = 2 ** 32
13
+
14
+ let $Math = Math
15
+
16
+ let floor = $Math.floor
12
17
 
13
18
  /**
14
19
  * Add integers, wrapping at 2^32.
@@ -39,7 +44,7 @@ let bitRotateLeft = (num, cnt) => (num << cnt) | (num >>> (32 - cnt))
39
44
  * @param {number} t t
40
45
  * @returns {number} Result
41
46
  */
42
- let md5cmn = (q, a, b, x, s, t) => safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
47
+ let md5cmn = (q, a, b, x, s, t) => safeAdd(bitRotateLeft(safeAdd(a, q) + safeAdd(x, t), s), b)
43
48
 
44
49
  /**
45
50
  * Basic operation the algorithm uses.
@@ -97,6 +102,9 @@ let md5hh = (a, b, c, d, x, s, t) => md5cmn(b ^ c ^ d, a, b, x, s, t)
97
102
  */
98
103
  let md5ii = (a, b, c, d, x, s, t) => md5cmn(c ^ (b | ~d), a, b, x, s, t)
99
104
 
105
+ /** @type {number[]} MD5 constants cached in memory */
106
+ let K = []
107
+
100
108
  /**
101
109
  * Calculate the MD5 of an array of little-endian words, and a bit length.
102
110
  *
@@ -111,15 +119,18 @@ let binlMD5 = (x, bitLen) => {
111
119
  , oldc
112
120
  , oldd
113
121
  , a = 1732584193
114
- , b = -271733879
115
- , c = -1732584194
116
122
  , d = 271733878
123
+ , c = ~a
124
+ , b = ~d
117
125
  , padLenIndex = floor((bitLen + 64) / 512) * $16 + 14
126
+ /** @type {number} */
127
+ var k_i
128
+ , k = (/**@type {*}*/ _) => K[k_i++] ??= 0 | $2_32 * $Math.abs($Math.sin(k_i))
118
129
 
119
130
  // append padding
120
131
  x[floor(bitLen / 32)] |= 0x80 << bitLen % 32;
121
132
  x[padLenIndex] = 0 | bitLen;
122
- x[padLenIndex + 1] = 0 | bitLen / 0x100000000;
133
+ x[padLenIndex + 1] = 0 | bitLen / $2_32;
123
134
 
124
135
  for (; i < x[$length]; d = safeAdd(d, oldd)) {
125
136
  let [
@@ -132,73 +143,75 @@ let binlMD5 = (x, bitLen) => {
132
143
  oldc = c
133
144
  oldd = d
134
145
 
135
- a = md5ff(a, b, c, d, x0, 7, -680876936)
136
- d = md5ff(d, a, b, c, x1, 12, -389564586)
137
- c = md5ff(c, d, a, b, x2, 17, 606105819)
138
- b = md5ff(b, c, d, a, x3, 22, -1044525330)
139
- a = md5ff(a, b, c, d, x4, 7, -176418897)
140
- d = md5ff(d, a, b, c, x5, 12, 1200080426)
141
- c = md5ff(c, d, a, b, x6, 17, -1473231341)
142
- b = md5ff(b, c, d, a, x7, 22, -45705983)
143
- a = md5ff(a, b, c, d, x8, 7, 1770035416)
144
- d = md5ff(d, a, b, c, x9, 12, -1958414417)
145
- c = md5ff(c, d, a, b, x10, 17, -42063)
146
- b = md5ff(b, c, d, a, x11, 22, -1990404162)
147
- a = md5ff(a, b, c, d, x12, 7, 1804603682)
148
- d = md5ff(d, a, b, c, x13, 12, -40341101)
149
- c = md5ff(c, d, a, b, x14, 17, -1502002290)
150
- b = md5ff(b, c, d, a, x15, 22, 1236535329)
151
-
152
- a = md5gg(a, b, c, d, x1, 5, -165796510)
153
- d = md5gg(d, a, b, c, x6, 9, -1069501632)
154
- c = md5gg(c, d, a, b, x11, 14, 643717713)
155
- b = md5gg(b, c, d, a, x0, 20, -373897302)
156
- a = md5gg(a, b, c, d, x5, 5, -701558691)
157
- d = md5gg(d, a, b, c, x10, 9, 38016083)
158
- c = md5gg(c, d, a, b, x15, 14, -660478335)
159
- b = md5gg(b, c, d, a, x4, 20, -405537848)
160
- a = md5gg(a, b, c, d, x9, 5, 568446438)
161
- d = md5gg(d, a, b, c, x14, 9, -1019803690)
162
- c = md5gg(c, d, a, b, x3, 14, -187363961)
163
- b = md5gg(b, c, d, a, x8, 20, 1163531501)
164
- a = md5gg(a, b, c, d, x13, 5, -1444681467)
165
- d = md5gg(d, a, b, c, x2, 9, -51403784)
166
- c = md5gg(c, d, a, b, x7, 14, 1735328473)
167
- b = md5gg(b, c, d, a, x12, 20, -1926607734)
168
-
169
- a = md5hh(a, b, c, d, x5, 4, -378558)
170
- d = md5hh(d, a, b, c, x8, 11, -2022574463)
171
- c = md5hh(c, d, a, b, x11, $16, 1839030562)
172
- b = md5hh(b, c, d, a, x14, 23, -35309556)
173
- a = md5hh(a, b, c, d, x1, 4, -1530992060)
174
- d = md5hh(d, a, b, c, x4, 11, 1272893353)
175
- c = md5hh(c, d, a, b, x7, $16, -155497632)
176
- b = md5hh(b, c, d, a, x10, 23, -1094730640)
177
- a = md5hh(a, b, c, d, x13, 4, 681279174)
178
- d = md5hh(d, a, b, c, x0, 11, -358537222)
179
- c = md5hh(c, d, a, b, x3, $16, -722521979)
180
- b = md5hh(b, c, d, a, x6, 23, 76029189)
181
- a = md5hh(a, b, c, d, x9, 4, -640364487)
182
- d = md5hh(d, a, b, c, x12, 11, -421815835)
183
- c = md5hh(c, d, a, b, x15, $16, 530742520)
184
- b = md5hh(b, c, d, a, x2, 23, -995338651)
185
-
186
- a = md5ii(a, b, c, d, x0, 6, -198630844)
187
- d = md5ii(d, a, b, c, x7, 10, 1126891415)
188
- c = md5ii(c, d, a, b, x14, 15, -1416354905)
189
- b = md5ii(b, c, d, a, x5, 21, -57434055)
190
- a = md5ii(a, b, c, d, x12, 6, 1700485571)
191
- d = md5ii(d, a, b, c, x3, 10, -1894986606)
192
- c = md5ii(c, d, a, b, x10, 15, -1051523)
193
- b = md5ii(b, c, d, a, x1, 21, -2054922799)
194
- a = md5ii(a, b, c, d, x8, 6, 1873313359)
195
- d = md5ii(d, a, b, c, x15, 10, -30611744)
196
- c = md5ii(c, d, a, b, x6, 15, -1560198380)
197
- b = md5ii(b, c, d, a, x13, 21, 1309151649)
198
- a = md5ii(a, b, c, d, x4, 6, -145523070)
199
- d = md5ii(d, a, b, c, x11, 10, -1120210379)
200
- c = md5ii(c, d, a, b, x2, 15, 718787259)
201
- b = md5ii(b, c, d, a, x9, 21, -343485551)
146
+ k_i = 0
147
+
148
+ a = md5ff(a, b, c, d, x0, 7, k())
149
+ d = md5ff(d, a, b, c, x1, 12, k())
150
+ c = md5ff(c, d, a, b, x2, 17, k())
151
+ b = md5ff(b, c, d, a, x3, 22, k())
152
+ a = md5ff(a, b, c, d, x4, 7, k())
153
+ d = md5ff(d, a, b, c, x5, 12, k())
154
+ c = md5ff(c, d, a, b, x6, 17, k())
155
+ b = md5ff(b, c, d, a, x7, 22, k())
156
+ a = md5ff(a, b, c, d, x8, 7, k())
157
+ d = md5ff(d, a, b, c, x9, 12, k())
158
+ c = md5ff(c, d, a, b, x10, 17, k())
159
+ b = md5ff(b, c, d, a, x11, 22, k())
160
+ a = md5ff(a, b, c, d, x12, 7, k())
161
+ d = md5ff(d, a, b, c, x13, 12, k())
162
+ c = md5ff(c, d, a, b, x14, 17, k())
163
+ b = md5ff(b, c, d, a, x15, 22, k())
164
+
165
+ a = md5gg(a, b, c, d, x1, 5, k())
166
+ d = md5gg(d, a, b, c, x6, 9, k())
167
+ c = md5gg(c, d, a, b, x11, 14, k())
168
+ b = md5gg(b, c, d, a, x0, 20, k())
169
+ a = md5gg(a, b, c, d, x5, 5, k())
170
+ d = md5gg(d, a, b, c, x10, 9, k())
171
+ c = md5gg(c, d, a, b, x15, 14, k())
172
+ b = md5gg(b, c, d, a, x4, 20, k())
173
+ a = md5gg(a, b, c, d, x9, 5, k())
174
+ d = md5gg(d, a, b, c, x14, 9, k())
175
+ c = md5gg(c, d, a, b, x3, 14, k())
176
+ b = md5gg(b, c, d, a, x8, 20, k())
177
+ a = md5gg(a, b, c, d, x13, 5, k())
178
+ d = md5gg(d, a, b, c, x2, 9, k())
179
+ c = md5gg(c, d, a, b, x7, 14, k())
180
+ b = md5gg(b, c, d, a, x12, 20, k())
181
+
182
+ a = md5hh(a, b, c, d, x5, 4, k())
183
+ d = md5hh(d, a, b, c, x8, 11, k())
184
+ c = md5hh(c, d, a, b, x11, $16, k())
185
+ b = md5hh(b, c, d, a, x14, 23, k())
186
+ a = md5hh(a, b, c, d, x1, 4, k())
187
+ d = md5hh(d, a, b, c, x4, 11, k())
188
+ c = md5hh(c, d, a, b, x7, $16, k())
189
+ b = md5hh(b, c, d, a, x10, 23, k())
190
+ a = md5hh(a, b, c, d, x13, 4, k())
191
+ d = md5hh(d, a, b, c, x0, 11, k())
192
+ c = md5hh(c, d, a, b, x3, $16, k())
193
+ b = md5hh(b, c, d, a, x6, 23, k())
194
+ a = md5hh(a, b, c, d, x9, 4, k())
195
+ d = md5hh(d, a, b, c, x12, 11, k())
196
+ c = md5hh(c, d, a, b, x15, $16, k())
197
+ b = md5hh(b, c, d, a, x2, 23, k())
198
+
199
+ a = md5ii(a, b, c, d, x0, 6, k())
200
+ d = md5ii(d, a, b, c, x7, 10, k())
201
+ c = md5ii(c, d, a, b, x14, 15, k())
202
+ b = md5ii(b, c, d, a, x5, 21, k())
203
+ a = md5ii(a, b, c, d, x12, 6, k())
204
+ d = md5ii(d, a, b, c, x3, 10, k())
205
+ c = md5ii(c, d, a, b, x10, 15, k())
206
+ b = md5ii(b, c, d, a, x1, 21, k())
207
+ a = md5ii(a, b, c, d, x8, 6, k())
208
+ d = md5ii(d, a, b, c, x15, 10, k())
209
+ c = md5ii(c, d, a, b, x6, 15, k())
210
+ b = md5ii(b, c, d, a, x13, 21, k())
211
+ a = md5ii(a, b, c, d, x4, 6, k())
212
+ d = md5ii(d, a, b, c, x11, 10, k())
213
+ c = md5ii(c, d, a, b, x2, 15, k())
214
+ b = md5ii(b, c, d, a, x9, 21, k())
202
215
 
203
216
  a = safeAdd(a, olda)
204
217
  b = safeAdd(b, oldb)
@@ -262,19 +275,25 @@ var md5 = (data, key, raw) => {
262
275
  var bdata = bytesToBinl(data = inputToBytes(data))
263
276
  , bitLen = data[$length] * 8
264
277
  , i = $16
265
- , out = new Uint8Array(i)
278
+ , out = new Uint8Array($16)
279
+ /** @type {*} */
280
+ var bkey
281
+ , pad = (/**@type {number}*/ x) => {
282
+ for (; i;) {
283
+ bdata.unshift(x ^ bkey[--i])
284
+ }
285
+ i = $16
286
+ }
266
287
 
267
288
  if (key != null) {
268
289
  // HMAC
269
- let bkey = bytesToBinl(key = inputToBytes(key))
270
- , i = $16
271
- , opad = Array(i)
272
- , unshift = (/**@type{*}*/ _) => bdata.unshift(...opad)
273
- unshift(bkey[$length] > $16 && (bkey = binlMD5(bkey, key[$length] * 8)))
274
- for (; i; opad[i] = bkey[i] ^ 0x5c5c5c5c) {
275
- bdata[--i] = bkey[i] ^ 0x36363636
290
+ bkey = bytesToBinl(key = inputToBytes(key))
291
+ if (bkey[$length] > $16) {
292
+ bkey = binlMD5(bkey, key[$length] * 8)
276
293
  }
277
- unshift(bdata = binlMD5(bdata, 512 + bitLen))
294
+ pad(0x36363636)
295
+ bdata = binlMD5(bdata, 512 + bitLen)
296
+ pad(0x5c5c5c5c)
278
297
  bitLen = 512 + 128
279
298
  }
280
299
 
@@ -288,6 +307,7 @@ var md5 = (data, key, raw) => {
288
307
  return raw
289
308
  ? out
290
309
  : out.reduce((p, v) => p + (v >> 4 && '') + v.toString($16), '')
310
+ // : out.toHex()
291
311
  }
292
312
 
293
313
  export default md5
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tinyhmacmd5",
3
- "version": "0.0.2",
4
- "description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only 2911 bytes.",
3
+ "version": "0.0.3",
4
+ "description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only 2471 bytes.",
5
5
  "author": "bddjr",
6
6
  "license": "MIT",
7
7
  "type": "module",