bitcoinjs-lib/src/convert.js
2014-05-12 10:17:38 +10:00

43 lines
1 KiB
JavaScript

var assert = require('assert')
var Crypto = require('crypto-js')
var WordArray = Crypto.lib.WordArray
function bytesToWords(bytes) {
assert(Array.isArray(bytes) || Buffer.isBuffer(bytes), 'Input must be a byte array')
var words = []
for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
words[b >>> 5] |= bytes[i] << (24 - b % 32)
}
return words
}
function wordsToBytes(words) {
var bytes = []
for (var b = 0; b < words.length * 32; b += 8) {
bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
}
return bytes
}
function bytesToWordArray(bytes) {
return new WordArray.init(bytesToWords(bytes), bytes.length)
}
function wordArrayToBytes(wordArray) {
return wordsToBytes(wordArray.words)
}
function reverseEndian(hex) {
var buffer = new Buffer(hex, 'hex')
Array.prototype.reverse.call(buffer)
return buffer.toString('hex')
}
module.exports = {
bytesToWords: bytesToWords,
wordsToBytes: wordsToBytes,
bytesToWordArray: bytesToWordArray,
wordArrayToBytes: wordArrayToBytes,
reverseEndian: reverseEndian
}