You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
js-sha3/build/sha3.min.js

10 lines
9.1 KiB
JavaScript

/**
* [js-sha3]{@link https://github.com/emn178/js-sha3}
*
8 years ago
* @version 0.6.1
* @author Chen, Yi-Cyuan [emn178@gmail.com]
* @copyright Chen, Yi-Cyuan 2015-2017
* @license MIT
*/
!function(){"use strict";function t(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;50>n;++n)this.s[n]=0}function e(e,r,n){t.call(this,e,r,n)}var r="object"==typeof window?window:{},n=!r.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;n&&(r=global);var o=!r.JS_SHA3_NO_COMMON_JS&&"object"==typeof module&&module.exports,i=!r.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),s=[31,7936,2031616,520093696],u=[4,1024,262144,67108864],f=[1,256,65536,16777216],c=[6,1536,393216,100663296],h=[0,8,16,24],p=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],d=[224,256,384,512],y=[128,256],l=["hex","buffer","arrayBuffer","array"],b={128:168,256:136};(r.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)});for(var v=function(e,r,n){return function(o){return new t(e,r,e).update(o)[n]()}},A=function(e,r,n){return function(o,i){return new t(e,r,i).update(o)[n]()}},g=function(t,e,r){return function(e,n,o,i){return S["cshake"+t].update(e,n,o,i)[r]()}},k=function(t,e,r){return function(e,n,o,i){return S["kmac"+t].update(e,n,o,i)[r]()}},B=function(t,e,r,n){for(var o=0;o<l.length;++o){var i=l[o];t[i]=e(r,n,i)}return t},w=function(e,r){var n=v(e,r,"hex");return n.create=function(){return new t(e,r,e)},n.update=function(t){return n.create().update(t)},B(n,v,e,r)},_=function(e,r){var n=A(e,r,"hex");return n.create=function(n){return new t(e,r,n)},n.update=function(t,e){return n.create(e).update(t)},B(n,A,e,r)},C=function(e,r){var n=b[e],o=g(e,r,"hex");return o.create=function(o,i,a){return i||a?new t(e,r,o).bytepad([i,a],n):S["shake"+e].create(o)},o.update=function(t,e,r,n){return o.create(e,r,n).update(t)},B(o,g,e,r)},m=function(t,r){var n=b[t],o=k(t,r,"hex");return o.create=function(o,i,a){return new e(t,r,i).bytepad(["KMAC",a],n).bytepad([o],n)},o.update=function(t,e,r,n){return o.create(t,r,n).update(e)},B(o,k,t,r)},x=[{name:"keccak",padding:f,bits:d,createMethod:w},{name:"sha3",padding:c,bits:d,createMethod:w},{name:"shake",padding:s,bits:y,createMethod:_},{name:"cshake",padding:u,bits:y,createMethod:C},{name:"kmac",padding:u,bits:y,createMethod:m}],S={},M=[],O=0;O<x.length;++O)for(var J=x[O],N=J.bits,z=0;z<N.length;++z){var j=J.name+"_"+N[z];if(M.push(j),S[j]=J.createMethod(N[z],J.padding),"sha3"!==J.name){var H=J.name+N[z];M.push(H),S[H]=S[j]}}t.prototype.update=function(t){var e="string"!=typeof t;e&&t.constructor===r.ArrayBuffer&&(t=new Uint8Array(t));var n=t.length;if(!(!e||"number"==typeof n&&(Array.isArray(t)||i&&ArrayBuffer.isView(t))))throw"input is invalid type";for(var o,a,s=this.blocks,u=this.byteCount,f=this.blockCount,c=0,p=this.s;n>c;){if(this.reset)for(this.reset=!1,s[0]=this.block,o=1;f+1>o;++o)s[o]=0;if(e)for(o=this.start;n>c&&u>o;++c)s[o>>2]|=t[c]<<h[3&o++];else for(o=this.start;n>c&&u>o;++c)a=t.charCodeAt(c),128>a?s[o>>2]|=a<<h[3&o++]:2048>a?(s[o>>2]|=(192|a>>6)<<h[3&o++],s[o>>2]|=(128|63&a)<<h[3&o++]):55296>a||a>=57344?(s[o>>2]|=(224|a>>12)<<h[3&o++],s[o>>2]|=(128|a>>6&63)<<h[3&o++],s[o>>2]|=(128|63&a)<<h[3&o++]):(a=65536+((1023&a)<<10|1023&t.charCodeAt(++c)),s[o>>2]|=(240|a>>18)<<h[3&o++],s[o>>2]|=(128|a>>12&63)<<h[3&o++],s[o>>2]|=(128|a>>6&63)<<h[3&o++],s[o>>2]|=(128|63&a)<<h[3&o++]);if(this.lastByteIndex=o,o>=u){for(this.start=o-u,this.block=s[f],o=0;f>o;++o)p[o]^=s[o];U(p),this.reset=!0}else this.start=o}return this},t.prototype.encode=function(t,e){var r=255&t,n=1,o=[r];for(t>>=8,r=255&t;r>0;)o.unshift(r),t>>=8,r=255&t,++n;return e?o.push(n):o.unshift(n),this.update(o),o.length},t.prototype.encodeS