2014-04-30 05:07:41 +10:00
|
|
|
var assert = require('assert')
|
2014-03-31 11:47:47 +08:00
|
|
|
var Crypto = require('crypto-js')
|
|
|
|
var WordArray = Crypto.lib.WordArray
|
2013-02-17 00:39:15 -05:00
|
|
|
|
2014-06-04 15:20:45 +10:00
|
|
|
function bufferToWordArray(buffer) {
|
|
|
|
assert(Buffer.isBuffer(buffer), 'Expected Buffer, got', buffer)
|
|
|
|
|
2014-03-31 11:47:47 +08:00
|
|
|
var words = []
|
2014-06-04 15:16:19 +10:00
|
|
|
for (var i = 0, b = 0; i < buffer.length; i++, b += 8) {
|
|
|
|
words[b >>> 5] |= buffer[i] << (24 - b % 32)
|
2014-03-24 16:00:14 +11:00
|
|
|
}
|
2014-03-11 09:52:48 +08:00
|
|
|
|
2014-06-04 15:20:45 +10:00
|
|
|
return new WordArray.init(words, buffer.length)
|
2014-03-11 09:52:48 +08:00
|
|
|
}
|
|
|
|
|
2014-06-04 15:16:19 +10:00
|
|
|
function wordArrayToBuffer(wordArray) {
|
2014-06-04 15:20:45 +10:00
|
|
|
assert(Array.isArray(wordArray.words), 'Expected WordArray, got' + wordArray)
|
|
|
|
|
|
|
|
var words = wordArray.words
|
|
|
|
var buffer = new Buffer(words.length * 4)
|
|
|
|
|
|
|
|
words.forEach(function(value, i) {
|
|
|
|
buffer.writeInt32BE(value & -1, i * 4)
|
|
|
|
})
|
|
|
|
|
|
|
|
return buffer
|
2014-03-11 09:52:48 +08:00
|
|
|
}
|
|
|
|
|
2014-03-24 15:53:57 +11:00
|
|
|
module.exports = {
|
2014-06-04 15:16:19 +10:00
|
|
|
bufferToWordArray: bufferToWordArray,
|
2014-06-04 15:21:12 +10:00
|
|
|
wordArrayToBuffer: wordArrayToBuffer
|
2014-03-24 15:53:57 +11:00
|
|
|
}
|