@dioxide-js/silas
Version:
RPC utility for Silas
1 lines • 10.3 kB
Source Map (JSON)
{"version":3,"file":"sm3.mjs","sources":["../../../../../../node_modules/sm-crypto/src/sm2/sm3.js"],"sourcesContent":["// 消息扩展\nconst W = new Uint32Array(68)\nconst M = new Uint32Array(64) // W'\n\n/**\n * 循环左移\n */\nfunction rotl(x, n) {\n const s = n & 31\n return (x << s) | (x >>> (32 - s))\n}\n\n/**\n * 二进制异或运算\n */\nfunction xor(x, y) {\n const result = []\n for (let i = x.length - 1; i >= 0; i--) result[i] = (x[i] ^ y[i]) & 0xff\n return result\n}\n\n/**\n * 压缩函数中的置换函数 P0(X) = X xor (X <<< 9) xor (X <<< 17)\n */\nfunction P0(X) {\n return (X ^ rotl(X, 9)) ^ rotl(X, 17)\n}\n\n/**\n * 消息扩展中的置换函数 P1(X) = X xor (X <<< 15) xor (X <<< 23)\n */\nfunction P1(X) {\n return (X ^ rotl(X, 15)) ^ rotl(X, 23)\n}\n\n/**\n * sm3 本体\n */\nfunction sm3(array) {\n let len = array.length * 8\n\n // k 是满足 len + 1 + k = 448mod512 的最小的非负整数\n let k = len % 512\n // 如果 448 <= (512 % len) < 512,需要多补充 (len % 448) 比特'0'以满足总比特长度为512的倍数\n k = k >= 448 ? 512 - (k % 448) - 1 : 448 - k - 1\n\n // 填充\n const kArr = new Array((k - 7) / 8)\n const lenArr = new Array(8)\n for (let i = 0, len = kArr.length; i < len; i++) kArr[i] = 0\n for (let i = 0, len = lenArr.length; i < len; i++) lenArr[i] = 0\n len = len.toString(2)\n for (let i = 7; i >= 0; i--) {\n if (len.length > 8) {\n const start = len.length - 8\n lenArr[i] = parseInt(len.substr(start), 2)\n len = len.substr(0, start)\n } else if (len.length > 0) {\n lenArr[i] = parseInt(len, 2)\n len = ''\n }\n }\n const m = new Uint8Array([...array, 0x80, ...kArr, ...lenArr])\n const dataView = new DataView(m.buffer, 0)\n\n // 迭代压缩\n const n = m.length / 64\n const V = new Uint32Array([0x7380166f, 0x4914b2b9, 0x172442d7, 0xda8a0600, 0xa96f30bc, 0x163138aa, 0xe38dee4d, 0xb0fb0e4e])\n for (let i = 0; i < n; i++) {\n W.fill(0)\n M.fill(0)\n\n // 将消息分组B划分为 16 个字 W0, W1,……,W15\n const start = 16 * i\n for (let j = 0; j < 16; j++) {\n W[j] = dataView.getUint32((start + j) * 4, false)\n }\n\n // W16 ~ W67:W[j] <- P1(W[j−16] xor W[j−9] xor (W[j−3] <<< 15)) xor (W[j−13] <<< 7) xor W[j−6]\n for (let j = 16; j < 68; j++) {\n W[j] = (P1((W[j - 16] ^ W[j - 9]) ^ rotl(W[j - 3], 15)) ^ rotl(W[j - 13], 7)) ^ W[j - 6]\n }\n\n // W′0 ~ W′63:W′[j] = W[j] xor W[j+4]\n for (let j = 0; j < 64; j++) {\n M[j] = W[j] ^ W[j + 4]\n }\n\n // 压缩\n const T1 = 0x79cc4519\n const T2 = 0x7a879d8a\n // 字寄存器\n let A = V[0]\n let B = V[1]\n let C = V[2]\n let D = V[3]\n let E = V[4]\n let F = V[5]\n let G = V[6]\n let H = V[7]\n // 中间变量\n let SS1\n let SS2\n let TT1\n let TT2\n let T\n for (let j = 0; j < 64; j++) {\n T = j >= 0 && j <= 15 ? T1 : T2\n SS1 = rotl(rotl(A, 12) + E + rotl(T, j), 7)\n SS2 = SS1 ^ rotl(A, 12)\n\n TT1 = (j >= 0 && j <= 15 ? ((A ^ B) ^ C) : (((A & B) | (A & C)) | (B & C))) + D + SS2 + M[j]\n TT2 = (j >= 0 && j <= 15 ? ((E ^ F) ^ G) : ((E & F) | ((~E) & G))) + H + SS1 + W[j]\n\n D = C\n C = rotl(B, 9)\n B = A\n A = TT1\n H = G\n G = rotl(F, 19)\n F = E\n E = P0(TT2)\n }\n\n V[0] ^= A\n V[1] ^= B\n V[2] ^= C\n V[3] ^= D\n V[4] ^= E\n V[5] ^= F\n V[6] ^= G\n V[7] ^= H\n }\n\n // 转回 uint8\n const result = []\n for (let i = 0, len = V.length; i < len; i++) {\n const word = V[i]\n result.push((word & 0xff000000) >>> 24, (word & 0xff0000) >>> 16, (word & 0xff00) >>> 8, word & 0xff)\n }\n\n return result\n}\n\n/**\n * hmac 实现\n */\nconst blockLen = 64\nconst iPad = new Uint8Array(blockLen)\nconst oPad = new Uint8Array(blockLen)\nfor (let i = 0; i < blockLen; i++) {\n iPad[i] = 0x36\n oPad[i] = 0x5c\n}\nfunction hmac(input, key) {\n // 密钥填充\n if (key.length > blockLen) key = sm3(key)\n while (key.length < blockLen) key.push(0)\n\n const iPadKey = xor(key, iPad)\n const oPadKey = xor(key, oPad)\n\n const hash = sm3([...iPadKey, ...input])\n return sm3([...oPadKey, ...hash])\n}\n\nmodule.exports = {\n sm3,\n hmac,\n}\n"],"names":[],"mappings":";;;;;;AAAA;AACA,CAAA,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE;AAC5B,CAAA,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,EAAC;;AAE7B;AACA;AACA;AACA,CAAA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;AACpB,GAAE,MAAM,CAAC,GAAG,CAAC,GAAG;GACd,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC;;AAEA;AACA;AACA;AACA,CAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;GACjB,MAAM,MAAM,GAAG;AACjB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;AACtE,GAAE,OAAO;AACT;;AAEA;AACA;AACA;CACA,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,GAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACtC;;AAEA;AACA;AACA;CACA,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,GAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACvC;;AAEA;AACA;AACA;CACA,SAAS,GAAG,CAAC,KAAK,EAAE;AACpB,GAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG;;AAE3B;AACA,GAAE,IAAI,CAAC,GAAG,GAAG,GAAG;AAChB;AACA,GAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG;;AAEjD;GACE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,GAAE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC;GAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;GAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG;AACjE,GAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/B,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,OAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG;AACjC,OAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;OACzC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK;AAC/B,MAAK,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;OACzB,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;AACjC,OAAM,GAAG,GAAG;AACZ;AACA;AACA,GAAE,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;GAC7D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;;AAE3C;AACA,GAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG;GACrB,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;AAC5H,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,KAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,KAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAEZ;AACA,KAAI,MAAM,KAAK,GAAG,EAAE,GAAG;AACvB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK;AACtD;;AAEA;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;OAC5B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7F;;AAEA;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B;;AAEA;KACI,MAAM,EAAE,GAAG;KACX,MAAM,EAAE,GAAG;AACf;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf;AACA,KAAI,IAAI;AACR,KAAI,IAAI;AACR,KAAI,IAAI;AACR,KAAI,IAAI;AACR,KAAI,IAAI;AACR,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;OAC3B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;OAC7B,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;OAC1C,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE;;AAE5B,OAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACjG,OAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;;AAExF,OAAM,CAAC,GAAG;AACV,OAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AACnB,OAAM,CAAC,GAAG;AACV,OAAM,CAAC,GAAG;AACV,OAAM,CAAC,GAAG;AACV,OAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE;AACpB,OAAM,CAAC,GAAG;AACV,OAAM,CAAC,GAAG,EAAE,CAAC,GAAG;AAChB;;AAEA,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ;;AAEA;GACE,MAAM,MAAM,GAAG;AACjB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChD,KAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;KAChB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,UAAU,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQ,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI;AACxG;;AAEA,GAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA,CAAA,MAAM,QAAQ,GAAG;AACjB,CAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;AACpC,CAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;CACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACnC,GAAE,IAAI,CAAC,CAAC,CAAC,GAAG;AACZ,GAAE,IAAI,CAAC,CAAC,CAAC,GAAG;AACZ;AACA,CAAA,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAC1B;GACE,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG;GACxC,OAAO,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;;AAE1C,GAAE,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI;AAC/B,GAAE,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI;;GAE7B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;GACvC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;AAClC;;AAEA,CAAA,KAAc,GAAG;AACjB,GAAE,GAAG;AACL,GAAE,IAAI;AACN;;;;;;","x_google_ignoreList":[0]}