tinyhmacmd5 0.0.1 → 0.0.2

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 3298 bytes.
5
+ The minified browser bundle ([`browser.min.js`](browser.min.js)) is only 2911 bytes.
6
6
 
7
7
  ## Setup
8
8
 
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=Array,t=Math.floor,n=new TextEncoder,o=(r,e)=>(r>>>0)+(e>>>0)|0,f=(r,e)=>r<<e|r>>>32-e,i=(r,e,t,n,i,a)=>o(f(o(o(e,r),o(n,a)),i),t),a=(r,e,t,n,o,f,a)=>i(e&t|~e&n,r,e,o,f,a),l=(r,e,t,n,o,f,a)=>i(e&n|t&~n,r,e,o,f,a),u=(r,e,t,n,o,f,a)=>i(e^t^n,r,e,o,f,a),c=(r,e,t,n,o,f,a)=>i(t^(e|~n),r,e,o,f,a),h=(e,n)=>{var f,i,h,s,d=0,g=1732584193,v=-271733879,y=-1732584194,x=271733878,m=16*t((n+64)/512)+14;for(e[t(n/32)]|=128<<n%32>>>0,e[m]=n>>>0,e[m+1]=n/4294967296>>>0;d<e[r];d+=16)f=g,i=v,h=y,s=x,g=a(g,v,y,x,e[d],7,-680876936),x=a(x,g,v,y,e[d+1],12,-389564586),y=a(y,x,g,v,e[d+2],17,606105819),v=a(v,y,x,g,e[d+3],22,-1044525330),g=a(g,v,y,x,e[d+4],7,-176418897),x=a(x,g,v,y,e[d+5],12,1200080426),y=a(y,x,g,v,e[d+6],17,-1473231341),v=a(v,y,x,g,e[d+7],22,-45705983),g=a(g,v,y,x,e[d+8],7,1770035416),x=a(x,g,v,y,e[d+9],12,-1958414417),y=a(y,x,g,v,e[d+10],17,-42063),v=a(v,y,x,g,e[d+11],22,-1990404162),g=a(g,v,y,x,e[d+12],7,1804603682),x=a(x,g,v,y,e[d+13],12,-40341101),y=a(y,x,g,v,e[d+14],17,-1502002290),v=a(v,y,x,g,e[d+15],22,1236535329),g=l(g,v,y,x,e[d+1],5,-165796510),x=l(x,g,v,y,e[d+6],9,-1069501632),y=l(y,x,g,v,e[d+11],14,643717713),v=l(v,y,x,g,e[d],20,-373897302),g=l(g,v,y,x,e[d+5],5,-701558691),x=l(x,g,v,y,e[d+10],9,38016083),y=l(y,x,g,v,e[d+15],14,-660478335),v=l(v,y,x,g,e[d+4],20,-405537848),g=l(g,v,y,x,e[d+9],5,568446438),x=l(x,g,v,y,e[d+14],9,-1019803690),y=l(y,x,g,v,e[d+3],14,-187363961),v=l(v,y,x,g,e[d+8],20,1163531501),g=l(g,v,y,x,e[d+13],5,-1444681467),x=l(x,g,v,y,e[d+2],9,-51403784),y=l(y,x,g,v,e[d+7],14,1735328473),v=l(v,y,x,g,e[d+12],20,-1926607734),g=u(g,v,y,x,e[d+5],4,-378558),x=u(x,g,v,y,e[d+8],11,-2022574463),y=u(y,x,g,v,e[d+11],16,1839030562),v=u(v,y,x,g,e[d+14],23,-35309556),g=u(g,v,y,x,e[d+1],4,-1530992060),x=u(x,g,v,y,e[d+4],11,1272893353),y=u(y,x,g,v,e[d+7],16,-155497632),v=u(v,y,x,g,e[d+10],23,-1094730640),g=u(g,v,y,x,e[d+13],4,681279174),x=u(x,g,v,y,e[d],11,-358537222),y=u(y,x,g,v,e[d+3],16,-722521979),v=u(v,y,x,g,e[d+6],23,76029189),g=u(g,v,y,x,e[d+9],4,-640364487),x=u(x,g,v,y,e[d+12],11,-421815835),y=u(y,x,g,v,e[d+15],16,530742520),v=u(v,y,x,g,e[d+2],23,-995338651),g=c(g,v,y,x,e[d],6,-198630844),x=c(x,g,v,y,e[d+7],10,1126891415),y=c(y,x,g,v,e[d+14],15,-1416354905),v=c(v,y,x,g,e[d+5],21,-57434055),g=c(g,v,y,x,e[d+12],6,1700485571),x=c(x,g,v,y,e[d+3],10,-1894986606),y=c(y,x,g,v,e[d+10],15,-1051523),v=c(v,y,x,g,e[d+1],21,-2054922799),g=c(g,v,y,x,e[d+8],6,1873313359),x=c(x,g,v,y,e[d+15],10,-30611744),y=c(y,x,g,v,e[d+6],15,-1560198380),v=c(v,y,x,g,e[d+13],21,1309151649),g=c(g,v,y,x,e[d+4],6,-145523070),x=c(x,g,v,y,e[d+11],10,-1120210379),y=c(y,x,g,v,e[d+2],15,718787259),v=c(v,y,x,g,e[d+9],21,-343485551),g=o(g,f),v=o(v,i),y=o(y,h),x=o(x,s);return[g,v,y,x]},s=n=>{for(var o=n[r],f=e(Math.ceil(o/4));o;)f[t(--o/4)]|=n[o]<<o%4*8;return f};var md5=(o,f,i)=>{"string"==typeof o&&(o=n.encode(o));var a=8*o[r],l=s(o),u=16,c=new Uint8Array(16);if(null!=f){"string"==typeof f&&(f=n.encode(f));let t=16,o=s(f),i=e(16),u=e(16);for(o[r]>16&&(o=h(o,8*f[r]));t;u[t]=1549556828^o[t])i[--t]=909522486^o[t];l.unshift(...i),(l=h(l,512+a)).unshift(...u),a=640}for(l=h(l,a);u;)c[--u]=l[t(u/4)]>>>u%4*8;return i?c:c.toHex?c.toHex():e.from(c,r=>(0+r.toString(16)).slice(-2)).join("")}}
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),"")}}
package/main.js CHANGED
@@ -5,12 +5,11 @@
5
5
  /** @type {"length"} */
6
6
  let $length = "length"
7
7
 
8
- let _Array = Array
8
+ /** @type {16} */
9
+ let $16 = 16
9
10
 
10
11
  let floor = Math.floor
11
12
 
12
- let textEncoder = new TextEncoder;
13
-
14
13
  /**
15
14
  * Add integers, wrapping at 2^32.
16
15
  *
@@ -18,7 +17,7 @@ let textEncoder = new TextEncoder;
18
17
  * @param {number} y Second integer
19
18
  * @returns {number} Sum
20
19
  */
21
- let safeAdd = (x, y) => ((x >>> 0) + (y >>> 0)) | 0
20
+ let safeAdd = (x, y) => 0 | (0 | x) + (0 | y)
22
21
 
23
22
  /**
24
23
  * Bitwise rotate a 32-bit number to the left.
@@ -115,91 +114,95 @@ let binlMD5 = (x, bitLen) => {
115
114
  , b = -271733879
116
115
  , c = -1732584194
117
116
  , d = 271733878
118
- , padLenIndex = floor((bitLen + 64) / 512) * 16 + 14
117
+ , padLenIndex = floor((bitLen + 64) / 512) * $16 + 14
119
118
 
120
119
  // append padding
121
- x[floor(bitLen / 32)] |= (0x80 << (bitLen % 32)) >>> 0;
122
- x[padLenIndex] = bitLen >>> 0;
123
- x[padLenIndex + 1] = (bitLen / 0x100000000) >>> 0;
120
+ x[floor(bitLen / 32)] |= 0x80 << bitLen % 32;
121
+ x[padLenIndex] = 0 | bitLen;
122
+ x[padLenIndex + 1] = 0 | bitLen / 0x100000000;
123
+
124
+ for (; i < x[$length]; d = safeAdd(d, oldd)) {
125
+ let [
126
+ x0, x1, x2, x3, x4, x5, x6, x7,
127
+ x8, x9, x10, x11, x12, x13, x14, x15
128
+ ] = x.slice(i, i += $16)
124
129
 
125
- for (; i < x[$length]; i += 16) {
126
130
  olda = a
127
131
  oldb = b
128
132
  oldc = c
129
133
  oldd = d
130
134
 
131
- a = md5ff(a, b, c, d, x[i], 7, -680876936)
132
- d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
133
- c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
134
- b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
135
- a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
136
- d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
137
- c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
138
- b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
139
- a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
140
- d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
141
- c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
142
- b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
143
- a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
144
- d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
145
- c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
146
- b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
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)
147
151
 
148
- a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
149
- d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
150
- c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
151
- b = md5gg(b, c, d, a, x[i], 20, -373897302)
152
- a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
153
- d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
154
- c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
155
- b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
156
- a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
157
- d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
158
- c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
159
- b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
160
- a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
161
- d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
162
- c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
163
- b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
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)
164
168
 
165
- a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
166
- d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
167
- c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
168
- b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
169
- a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
170
- d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
171
- c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
172
- b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
173
- a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
174
- d = md5hh(d, a, b, c, x[i], 11, -358537222)
175
- c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
176
- b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
177
- a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
178
- d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
179
- c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
180
- b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)
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)
181
185
 
182
- a = md5ii(a, b, c, d, x[i], 6, -198630844)
183
- d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
184
- c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
185
- b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
186
- a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
187
- d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
188
- c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
189
- b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
190
- a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
191
- d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
192
- c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
193
- b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
194
- a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
195
- d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
196
- c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
197
- b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)
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)
198
202
 
199
203
  a = safeAdd(a, olda)
200
204
  b = safeAdd(b, oldb)
201
205
  c = safeAdd(c, oldc)
202
- d = safeAdd(d, oldd)
203
206
  }
204
207
  return [a, b, c, d]
205
208
  }
@@ -212,13 +215,24 @@ let binlMD5 = (x, bitLen) => {
212
215
  */
213
216
  let bytesToBinl = (input) => {
214
217
  var i = input[$length]
215
- , output = _Array(Math.ceil(i / 4))
218
+ /** @type {number[]} */
219
+ var output = []
216
220
  for (; i;) {
217
- output[floor(--i / 4)] |= input[i] << ((i % 4) * 8)
221
+ output[floor(--i / 4)] |= input[i] << i % 4 * 8
218
222
  }
219
223
  return output
220
224
  }
221
225
 
226
+ /**
227
+ * @param {string | Uint8Array} input
228
+ * @returns {Uint8Array}
229
+ */
230
+ let inputToBytes = (input) => (
231
+ typeof input == 'string'
232
+ ? new TextEncoder().encode(input)
233
+ : input
234
+ )
235
+
222
236
  /**
223
237
  * @overload
224
238
  * @param {string | Uint8Array} data
@@ -245,29 +259,22 @@ let bytesToBinl = (input) => {
245
259
  * @returns {string | Uint8Array<ArrayBuffer>} The MD5 (or HMAC‑MD5) digest, either as a hex string or a Uint8Array.
246
260
  */
247
261
  var md5 = (data, key, raw) => {
248
- if (typeof data == 'string') data = textEncoder.encode(data);
249
-
250
- var bitLen = data[$length] * 8
251
- , bdata = bytesToBinl(data)
252
- , i = 16
253
- , out = new Uint8Array(16)
262
+ var bdata = bytesToBinl(data = inputToBytes(data))
263
+ , bitLen = data[$length] * 8
264
+ , i = $16
265
+ , out = new Uint8Array(i)
254
266
 
255
267
  if (key != null) {
256
268
  // HMAC
257
- if (typeof key == 'string') key = textEncoder.encode(key);
258
- let i = 16
259
- , bkey = bytesToBinl(key)
260
- , ipad = _Array(16)
261
- , opad = _Array(16)
262
- if (bkey[$length] > 16) {
263
- bkey = binlMD5(bkey, key[$length] * 8)
264
- }
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)))
265
274
  for (; i; opad[i] = bkey[i] ^ 0x5c5c5c5c) {
266
- ipad[--i] = bkey[i] ^ 0x36363636
275
+ bdata[--i] = bkey[i] ^ 0x36363636
267
276
  }
268
- bdata.unshift(...ipad)
269
- bdata = binlMD5(bdata, 512 + bitLen)
270
- bdata.unshift(...opad)
277
+ unshift(bdata = binlMD5(bdata, 512 + bitLen))
271
278
  bitLen = 512 + 128
272
279
  }
273
280
 
@@ -275,14 +282,12 @@ var md5 = (data, key, raw) => {
275
282
 
276
283
  // binl to bytes
277
284
  for (; i;) {
278
- out[--i] = bdata[floor(i / 4)] >>> ((i % 4) * 8)
285
+ out[--i] = bdata[i >> 2] >>> i % 4 * 8
279
286
  }
280
287
 
281
288
  return raw
282
289
  ? out
283
- : out.toHex
284
- ? out.toHex()
285
- : _Array.from(out, byte => (0 + byte.toString(16)).slice(-2)).join('')
290
+ : out.reduce((p, v) => p + (v >> 4 && '') + v.toString($16), '')
286
291
  }
287
292
 
288
293
  export default md5
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tinyhmacmd5",
3
- "version": "0.0.1",
4
- "description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only 3298 bytes.",
3
+ "version": "0.0.2",
4
+ "description": "A tiny JavaScript HMAC-MD5 implementation. The minified browser bundle is only 2911 bytes.",
5
5
  "author": "bddjr",
6
6
  "license": "MIT",
7
7
  "type": "module",