sm3.js 3.9 KB

1
  1. !function(r,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sm3=n():r.sm3=n()}("undefined"!=typeof self?self:this,function(){return function(r){function n(e){if(t[e])return t[e].exports;var o=t[e]={i:e,l:!1,exports:{}};return r[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=r,n.c=t,n.d=function(r,t,e){n.o(r,t)||Object.defineProperty(r,t,{configurable:!1,enumerable:!0,get:e})},n.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return n.d(t,"a",t),t},n.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},n.p="",n(n.s=6)}({1:function(r,n,t){"use strict";function e(r,n){for(var t=[],e=~~(n/8),o=n%8,u=0,i=r.length;u<i;u++)t[u]=(r[(u+e)%i]<<o&255)+(r[(u+e+1)%i]>>>8-o&255);return t}function o(r,n){for(var t=[],e=r.length-1;e>=0;e--)t[e]=255&(r[e]^n[e]);return t}function u(r,n){for(var t=[],e=r.length-1;e>=0;e--)t[e]=r[e]&n[e]&255;return t}function i(r,n){for(var t=[],e=r.length-1;e>=0;e--)t[e]=255&(r[e]|n[e]);return t}function f(r,n){for(var t=[],e=0,o=r.length-1;o>=0;o--){var u=r[o]+n[o]+e;u>255?(e=1,t[o]=255&u):(e=0,t[o]=255&u)}return t}function s(r){for(var n=[],t=r.length-1;t>=0;t--)n[t]=255&~r[t];return n}function c(r){return o(o(r,e(r,9)),e(r,17))}function a(r){return o(o(r,e(r,15)),e(r,23))}function l(r,n,t,e){return e>=0&&e<=15?o(o(r,n),t):i(i(u(r,n),u(r,t)),u(n,t))}function p(r,n,t,e){return e>=0&&e<=15?o(o(r,n),t):i(u(r,n),u(s(r),t))}function h(r,n){for(var t=[],u=[],i=0;i<16;i++){var s=4*i;t.push(n.slice(s,s+4))}for(var h=16;h<68;h++)t.push(o(o(a(o(o(t[h-16],t[h-9]),e(t[h-3],15))),e(t[h-13],7)),t[h-6]));for(var v=0;v<64;v++)u.push(o(t[v],t[v+4]));for(var g=[121,204,69,25],d=[122,135,157,138],y=r.slice(0,4),m=r.slice(4,8),w=r.slice(8,12),x=r.slice(12,16),b=r.slice(16,20),j=r.slice(20,24),A=r.slice(24,28),E=r.slice(28,32),I=void 0,O=void 0,P=void 0,k=void 0,S=0;S<64;S++){var _=S>=0&&S<=15?g:d;I=e(f(f(e(y,12),b),e(_,S)),7),O=o(I,e(y,12)),P=f(f(f(l(y,m,w,S),x),O),u[S]),k=f(f(f(p(b,j,A,S),E),I),t[S]),x=w,w=e(m,9),m=y,y=P,E=A,A=e(j,19),j=b,b=c(k)}return o([].concat(y,m,w,x,b,j,A,E),r)}function v(r){var n=8*r.length,t=n%512;t=t>=448?512-t%448-1:448-t-1;for(var e=new Array((t-7)/8),o=0,u=e.length;o<u;o++)e[o]=0;var i=[];n=n.toString(2);for(var f=7;f>=0;f--)if(n.length>8){var s=n.length-8;i[f]=parseInt(n.substr(s),2),n=n.substr(0,s)}else n.length>0?(i[f]=parseInt(n,2),n=""):i[f]=0;for(var c=[].concat(r,[128],e,i),a=c.length/64,l=[115,128,22,111,73,20,178,185,23,36,66,215,218,138,6,0,169,111,48,188,22,49,56,170,227,141,238,77,176,251,14,78],p=0;p<a;p++){var v=64*p;l=h(l,c.slice(v,v+64))}return l}function g(r,n){for(n.length>d&&(n=v(n));n.length<d;)n.push(0);var t=o(n,y),e=t.concat(r);return e=v(e),e=o(n,m).concat(e),e=v(e)}for(var d=64,y=new Array(d),m=new Array(d),w=0;w<d;w++)y[w]=54,m[w]=92;r.exports={sm3:v,hmac:g}},6:function(r,n,t){"use strict";function e(r,n){return r.length>=n?r:new Array(n-r.length+1).join("0")+r}function o(r){return r.map(function(r){return r=r.toString(16),1===r.length?"0"+r:r}).join("")}function u(r){var n=[],t=r.length;t%2!=0&&(r=e(r,t+1)),t=r.length;for(var o=0;o<t;o+=2)n.push(parseInt(r.substr(o,2),16));return n}function i(r){for(var n=[],t=0,e=r.length;t<e;t++){var o=r.codePointAt(t);if(o<=127)n.push(o);else if(o<=2047)n.push(192|o>>>6),n.push(128|63&o);else if(o<=55295||o>=57344&&o<=65535)n.push(224|o>>>12),n.push(128|o>>>6&63),n.push(128|63&o);else{if(!(o>=65536&&o<=1114111))throw n.push(o),new Error("input is not supported");t++,n.push(240|o>>>18&28),n.push(128|o>>>12&63),n.push(128|o>>>6&63),n.push(128|63&o)}}return n}var f=t(1),s=f.sm3,c=f.hmac;r.exports=function(r,n){if(r="string"==typeof r?i(r):Array.prototype.slice.call(r),n){if("hmac"!==(n.mode||"hmac"))throw new Error("invalid mode");var t=n.key;if(!t)throw new Error("invalid key");return t="string"==typeof t?u(t):Array.prototype.slice.call(t),o(c(r,t))}return o(s(r))}}})});