crypto: HMACSHA512 into crypto and add tests
This commit is contained in:
parent
f70ccc9215
commit
276a339d60
4 changed files with 42 additions and 17 deletions
|
@ -1,4 +1,5 @@
|
|||
// Crypto, crypto, where art thou crypto
|
||||
var assert = require('assert')
|
||||
var CryptoJS = require('crypto-js')
|
||||
var crypto = require('crypto')
|
||||
var convert = require('./convert')
|
||||
|
@ -32,9 +33,23 @@ function sha256(buffer) {
|
|||
return crypto.createHash('sha256').update(buffer).digest()
|
||||
}
|
||||
|
||||
// FIXME: Name not consistent with others
|
||||
function HmacSHA512(data, secret) {
|
||||
assert(Buffer.isBuffer(data), 'Expected Buffer for data, got ' + data)
|
||||
assert(Buffer.isBuffer(secret), 'Expected Buffer for secret, got ' + secret)
|
||||
|
||||
var dataWords = convert.bytesToWordArray(data)
|
||||
var secretWords = convert.bytesToWordArray(secret)
|
||||
|
||||
var hash = CryptoJS.HmacSHA512(dataWords, secretWords)
|
||||
|
||||
return new Buffer(convert.wordArrayToBytes(hash))
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
sha1: sha1,
|
||||
sha256: sha256,
|
||||
hash160: hash160,
|
||||
hash256: hash256
|
||||
hash256: hash256,
|
||||
HmacSHA512: HmacSHA512
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ var convert = require('./convert')
|
|||
|
||||
var Address = require('./address')
|
||||
var BigInteger = require('bigi')
|
||||
var CJS = require('crypto-js')
|
||||
var crypto = require('./crypto')
|
||||
var ECKey = require('./eckey').ECKey
|
||||
var ECPubKey = require('./eckey').ECPubKey
|
||||
|
@ -13,18 +12,6 @@ var networks = require('./networks')
|
|||
var sec = require('./sec')
|
||||
var ecparams = sec("secp256k1")
|
||||
|
||||
function HmacSHA512(data, secret) {
|
||||
assert(Buffer.isBuffer(data))
|
||||
assert(Buffer.isBuffer(secret))
|
||||
|
||||
var dataWords = convert.bytesToWordArray(data)
|
||||
var secretWords = convert.bytesToWordArray(secret)
|
||||
|
||||
var hash = CJS.HmacSHA512(dataWords, secretWords)
|
||||
|
||||
return new Buffer(convert.wordArrayToBytes(hash))
|
||||
}
|
||||
|
||||
function HDWallet(seed, networkString) {
|
||||
if (seed == undefined) return; // FIXME: Boo, should be stricter
|
||||
|
||||
|
@ -34,7 +21,7 @@ function HDWallet(seed, networkString) {
|
|||
throw new Error("Unknown network: " + this.network)
|
||||
}
|
||||
|
||||
var I = HmacSHA512(seed, HDWallet.MASTER_SECRET)
|
||||
var I = crypto.HmacSHA512(seed, HDWallet.MASTER_SECRET)
|
||||
var IL = I.slice(0, 32)
|
||||
var IR = I.slice(32)
|
||||
|
||||
|
@ -217,7 +204,7 @@ HDWallet.prototype.derive = function(index) {
|
|||
])
|
||||
}
|
||||
|
||||
var I = HmacSHA512(data, this.chaincode)
|
||||
var I = crypto.HmacSHA512(data, this.chaincode)
|
||||
var IL = I.slice(0, 32)
|
||||
var IR = I.slice(32)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue