8 lines
9.3 KiB
JavaScript
8 lines
9.3 KiB
JavaScript
/*!
|
|
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
* (c) Dani Biro
|
|
* @license MIT
|
|
*/
|
|
|
|
!function(A,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).hashwasm=A.hashwasm||{})}(this,(function(A){"use strict";var e,t={name:"md4",data:"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",hash:"bd8ce7c7"};function n(A,e,t,n){return new(t||(t=Promise))((function(i,o){function B(A){try{a(n.next(A))}catch(A){o(A)}}function r(A){try{a(n.throw(A))}catch(A){o(A)}}function a(A){var e;A.done?i(A.value):(e=A.value,e instanceof t?e:new t((function(A){A(e)}))).then(B,r)}a((n=n.apply(A,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class i{constructor(){this.mutex=Promise.resolve()}lock(){let A=()=>{};return this.mutex=this.mutex.then((()=>new Promise(A))),new Promise((e=>{A=e}))}dispatch(A){return n(this,void 0,void 0,(function*(){const e=yield this.lock();try{return yield Promise.resolve(A())}finally{e()}}))}}const o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,B=null!==(e=o.Buffer)&&void 0!==e?e:null,r=o.TextEncoder?new o.TextEncoder:null;function a(A,e){return(15&A)+(A>>6|A>>3&8)<<4|(15&e)+(e>>6|e>>3&8)}const I="a".charCodeAt(0)-10,g="0".charCodeAt(0);function E(A,e,t){let n=0;for(let i=0;i<t;i++){let t=e[i]>>>4;A[n++]=t>9?t+I:t+g,t=15&e[i],A[n++]=t>9?t+I:t+g}return String.fromCharCode.apply(null,A)}const Q=null!==B?A=>{if("string"==typeof A){const e=B.from(A,"utf8");return new Uint8Array(e.buffer,e.byteOffset,e.length)}if(B.isBuffer(A))return new Uint8Array(A.buffer,A.byteOffset,A.length);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("Invalid data type!")}:A=>{if("string"==typeof A)return r.encode(A);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("Invalid data type!")},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=new Uint8Array(256);for(let A=0;A<c.length;A++)s[c.charCodeAt(A)]=A;function f(A){const e=function(A){let e=Math.floor(.75*A.length);const t=A.length;return"="===A[t-1]&&(e-=1,"="===A[t-2]&&(e-=1)),e}(A),t=A.length,n=new Uint8Array(e);let i=0;for(let e=0;e<t;e+=4){const t=s[A.charCodeAt(e)],o=s[A.charCodeAt(e+1)],B=s[A.charCodeAt(e+2)],r=s[A.charCodeAt(e+3)];n[i]=t<<2|o>>4,i+=1,n[i]=(15&o)<<4|B>>2,i+=1,n[i]=(3&B)<<6|63&r,i+=1}return n}const h=16384,l=new i,y=new Map;function d(A,e){return n(this,void 0,void 0,(function*(){let t=null,i=null,o=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const B=()=>new DataView(t.exports.memory.buffer).getUint32(t.exports.STATE_SIZE,!0),r=l.dispatch((()=>n(this,void 0,void 0,(function*(){if(!y.has(A.name)){const e=f(A.data),t=WebAssembly.compile(e);y.set(A.name,t)}const e=yield y.get(A.name);t=yield WebAssembly.instantiate(e,{})})))),I=(A=null)=>{o=!0,t.exports.Hash_Init(A)},g=A=>{if(!o)throw new Error("update() called before init()");(A=>{let e=0;for(;e<A.length;){const n=A.subarray(e,e+h);e+=n.length,i.set(n),t.exports.Hash_Update(n.length)}})(Q(A))},c=new Uint8Array(2*e),s=(A,n=null)=>{if(!o)throw new Error("digest() called before init()");return o=!1,t.exports.Hash_Final(n),"binary"===A?i.slice(0,e):E(c,i,e)},d=A=>"string"==typeof A?A.length<4096:A.byteLength<h;let C=d;switch(A.name){case"argon2":case"scrypt":C=()=>!0;break;case"blake2b":case"blake2s":C=(A,e)=>e<=512&&d(A);break;case"blake3":C=(A,e)=>0===e&&d(A);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":C=()=>!1}return yield(()=>n(this,void 0,void 0,(function*(){t||(yield r);const A=t.exports.Hash_GetBuffer(),e=t.exports.memory.buffer;i=new Uint8Array(e,A,h)})))(),{getMemory:()=>i,writeMemory:(A,e=0)=>{i.set(A,e)},getExports:()=>t.exports,setMemorySize:A=>{t.exports.Hash_SetMemorySize(A);const e=t.exports.Hash_GetBuffer(),n=t.exports.memory.buffer;i=new Uint8Array(n,e,A)},init:I,update:g,digest:s,save:()=>{if(!o)throw new Error("save() can only be called after init() and before digest()");const e=t.exports.Hash_GetState(),n=B(),i=t.exports.memory.buffer,r=new Uint8Array(i,e,n),I=new Uint8Array(4+n);return function(A,e){const t=e.length>>1;for(let n=0;n<t;n++){const t=n<<1;A[n]=a(e.charCodeAt(t),e.charCodeAt(t+1))}}(I,A.hash),I.set(r,4),I},load:e=>{if(!(e instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const n=t.exports.Hash_GetState(),i=B(),r=4+i,I=t.exports.memory.buffer;if(e.length!==r)throw new Error(`Bad state length (expected ${r} bytes, got ${e.length})`);if(!function(A,e){if(A.length!==2*e.length)return!1;for(let t=0;t<e.length;t++){const n=t<<1;if(e[t]!==a(A.charCodeAt(n),A.charCodeAt(n+1)))return!1}return!0}(A.hash,e.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const g=e.subarray(4);new Uint8Array(I,n,i).set(g),o=!0},calculate:(A,n=null,o=null)=>{if(!C(A,n))return I(n),g(A),s("hex",o);const B=Q(A);return i.set(B),t.exports.Hash_Calculate(B.length,n,o),E(c,i,e)},hashLength:e}}))}const C=new i;let u=null;A.createMD4=function(){return d(t,16).then((A=>{A.init();const e={init:()=>(A.init(),e),update:t=>(A.update(t),e),digest:e=>A.digest(e),save:()=>A.save(),load:t=>(A.load(t),e),blockSize:64,digestSize:16};return e}))},A.md4=function(A){if(null===u)return function(A,e,t){return n(this,void 0,void 0,(function*(){const n=yield A.lock(),i=yield d(e,t);return n(),i}))}(C,t,16).then((e=>(u=e,u.calculate(A))));try{const e=u.calculate(A);return Promise.resolve(e)}catch(A){return Promise.reject(A)}}}));
|