diff options
author | Brian Turek <brian.turek@gmail.com> | 2017-05-03 17:51:06 +0100 |
---|---|---|
committer | Brian Turek <brian.turek@gmail.com> | 2017-05-03 17:51:06 +0100 |
commit | da12f07f8d91a5a62fbb7ef40042b5ab48e4ccb1 (patch) | |
tree | b3fd10be94bde04b8df4eaacccee20e67ce87b1e | |
parent | 30ff219a018bd0bcf835a02938e052bc78f07f80 (diff) | |
download | jsSHA-da12f07f8d91a5a62fbb7ef40042b5ab48e4ccb1.zip jsSHA-da12f07f8d91a5a62fbb7ef40042b5ab48e4ccb1.tar.gz jsSHA-da12f07f8d91a5a62fbb7ef40042b5ab48e4ccb1.tar.bz2 |
Fixed ArrayBuffer issues
-rw-r--r-- | src/sha_dev.js | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/sha_dev.js b/src/sha_dev.js index ddccbe5..cfd2289 100644 --- a/src/sha_dev.js +++ b/src/sha_dev.js @@ -330,12 +330,13 @@ var SUPPORTED_ALGS = 8 | 4 | 2 | 1; */ function arraybuffer2packed(arr, existingPacked, existingPackedLen, bigEndianMod) { - var packed, i, existingByteLen, intOffset, byteOffset, shiftModifier; + var packed, i, existingByteLen, intOffset, byteOffset, shiftModifier, arrView; packed = existingPacked || [0]; existingPackedLen = existingPackedLen || 0; existingByteLen = existingPackedLen >>> 3; shiftModifier = (bigEndianMod === -1) ? 3 : 0; + arrView = new Uint8Array(arr); for (i = 0; i < arr.byteLength; i += 1) { @@ -345,7 +346,7 @@ var SUPPORTED_ALGS = 8 | 4 | 2 | 1; { packed.push(0); } - packed[intOffset] |= arr[i] << (8 * (shiftModifier + bigEndianMod * (byteOffset % 4))); + packed[intOffset] |= arrView[i] << (8 * (shiftModifier + bigEndianMod * (byteOffset % 4))); } return {"value" : packed, "binLen" : arr.byteLength * 8 + existingPackedLen}; @@ -467,13 +468,14 @@ var SUPPORTED_ALGS = 8 | 4 | 2 | 1; */ function packed2arraybuffer(packed, outputLength, bigEndianMod) { - var length = outputLength / 8, i, retVal = new ArrayBuffer(length), shiftModifier; + var length = outputLength / 8, i, retVal = new ArrayBuffer(length), shiftModifier, arrView; + arrView = new Uint8Array(retVal); shiftModifier = (bigEndianMod === -1) ? 3 : 0; for (i = 0; i < length; i += 1) { - retVal[i] = (packed[i >>> 2] >>> (8 * (shiftModifier + bigEndianMod * (i % 4)))) & 0xFF; + arrView[i] = (packed[i >>> 2] >>> (8 * (shiftModifier + bigEndianMod * (i % 4)))) & 0xFF; } return retVal; |