!function(globals) { 'use strict' var _imports = {} if (typeof module !== 'undefined' && module.exports) { //CommonJS _imports.bytesToHex = require('convert-hex').bytesToHex _imports.convertString = require('convert-string') module.exports = sha256 } else { _imports.bytesToHex = globals.convertHex.bytesToHex _imports.convertString = globals.convertString globals.sha256 = sha256 } /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ // Initialization round constants tables var K = [] // Compute constants !function () { function isPrime(n) { var sqrtN = Math.sqrt(n); for (var factor = 2; factor <= sqrtN; factor++) { if (!(n % factor)) return false } return true } function getFractionalBits(n) { return ((n - (n | 0)) * 0x100000000) | 0 } var n = 2 var nPrime = 0 while (nPrime < 64) { if (isPrime(n)) { K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)) nPrime++ } n++ } }() var bytesToWords = function (bytes) { var words = [] for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { words[b >>> 5] |= bytes[i] << (24 - b % 32) } return words } var wordsToBytes = function (words) { var bytes = [] for (var b = 0; b < words.length * 32; b += 8) { bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) } return bytes } // Reusable object var W = [] var processBlock = function (H, M, offset) { // Working variables var a = H[0], b = H[1], c = H[2], d = H[3] var e = H[4], f = H[5], g = H[6], h = H[7] // Computation for (var i = 0; i < 64; i++) { if (i < 16) { W[i] = M[offset + i] | 0 } else { var gamma0x = W[i - 15] var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ ((gamma0x << 14) | (gamma0x >>> 18)) ^ (gamma0x >>> 3) var gamma1x = W[i - 2]; var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ ((gamma1x << 13) | (gamma1x >>> 19)) ^ (gamma1x >>> 10) W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; } var ch = (e & f) ^ (~e & g); var maj = (a & b) ^ (a & c) ^ (b & c); var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); var t1 = h + sigma1 + ch + K[i] + W[i]; var t2 = sigma0 + maj; h = g; g = f; f = e; e = (d + t1) | 0; d = c; c = b; b = a; a = (t1 + t2) | 0; } // Intermediate hash value H[0] = (H[0] + a) | 0; H[1] = (H[1] + b) | 0; H[2] = (H[2] + c) | 0; H[3] = (H[3] + d) | 0; H[4] = (H[4] + e) | 0; H[5] = (H[5] + f) | 0; H[6] = (H[6] + g) | 0; H[7] = (H[7] + h) | 0; } function sha256(message, options) {; if (message.constructor === String) { message = _imports.convertString.UTF8.stringToBytes(message); } var H =[ 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 ]; var m = bytesToWords(message); var l = message.length * 8; m[l >> 5] |= 0x80 << (24 - l % 32); m[((l + 64 >> 9) << 4) + 15] = l; for (var i=0 ; i<m.length; i += 16) { processBlock(H, m, i); } var digestbytes = wordsToBytes(H); return options && options.asBytes ? digestbytes : options && options.asString ? _imports.convertString.bytesToString(digestbytes) : _imports.bytesToHex(digestbytes) } sha256.x2 = function(message, options) { return sha256(sha256(message, { asBytes:true }), options) } }(this);