Update to new blake2b
This commit is contained in:
parent
776ffea91c
commit
1967024766
@ -10,11 +10,11 @@ module.exports.crypto_generichash_KEYBYTES_MAX = blake2b.KEYBYTES_MAX
|
||||
module.exports.crypto_generichash_KEYBYTES = blake2b.KEYBYTES
|
||||
|
||||
module.exports.crypto_generichash = function (output, input, key) {
|
||||
blake2b(output, input, key)
|
||||
blake2b(output.length, key).update(input).final(output)
|
||||
}
|
||||
|
||||
module.exports.crypto_generichash_batch = function (output, inputArray, key) {
|
||||
var ctx = blake2b.instance(output.length, key)
|
||||
var ctx = blake2b(output.length, key)
|
||||
for (var i = 0; i < inputArray.length; i++) {
|
||||
ctx.update(inputArray[i])
|
||||
}
|
||||
@ -23,5 +23,5 @@ module.exports.crypto_generichash_batch = function (output, inputArray, key) {
|
||||
|
||||
module.exports.crypto_generichash_instance = function (key, outlen) {
|
||||
if (outlen == null) outlen = module.exports.crypto_generichash_BYTES
|
||||
return blake2b.instance(outlen, key)
|
||||
return blake2b(outlen, key)
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
var assert = require('assert')
|
||||
var assert = require('nanoassert')
|
||||
var randombytes_buf = require('.').randombytes_buf
|
||||
var blake2b = require('blake2b')
|
||||
|
||||
@ -18,20 +18,22 @@ function STORE64_LE(dest, int) {
|
||||
}
|
||||
|
||||
module.exports.crypto_kdf_derive_from_key = function crypto_kdf_derive_from_key (subkey, subkey_id, ctx, key) {
|
||||
assert(subkey.length >= module.exports.crypto_kdf_BYTES_MIN, 'subkey must be')
|
||||
assert(ctx.length >= module.exports.crypto_kdf_CONTEXTBYTES, 'context must be')
|
||||
assert(subkey.length >= module.exports.crypto_kdf_BYTES_MIN, 'subkey must be at least crypto_kdf_BYTES_MIN')
|
||||
assert(subkey_id >= 0 && subkey_id <= 0x1fffffffffffff, 'subkey_id must be safe integer')
|
||||
assert(ctx.length >= module.exports.crypto_kdf_CONTEXTBYTES, 'context must be at least crypto_kdf_CONTEXTBYTES')
|
||||
|
||||
var ctx_padded = new Uint8Array(blake2b.PERSONALBYTES)
|
||||
var salt = new Uint8Array(blake2b.SALTBYTES)
|
||||
|
||||
ctx_padded.set(ctx, 0, module.exports.crypto_kdf_CONTEXTBYTES)
|
||||
|
||||
STORE64_LE(salt, subkey_id)
|
||||
|
||||
blake2b(subkey.slice(0, Math.min(subkey.length, module.exports.crypto_kdf_BYTES_MAX)), [], key, salt, ctx_padded, true)
|
||||
var outlen = Math.min(subkey.length, module.exports.crypto_kdf_BYTES_MAX)
|
||||
blake2b(outlen, key, salt, ctx_padded, true)
|
||||
.final(subkey)
|
||||
}
|
||||
|
||||
module.exports.crypto_kdf_keygen = function crypto_kdf_keygen (out) {
|
||||
assert(out.length >= module.exports.crypto_kdf_KEYBYTES)
|
||||
assert(out.length >= module.exports.crypto_kdf_KEYBYTES, 'out.length must be crypto_kdf_KEYBYTES')
|
||||
randombytes_buf(out.subarray(0, module.exports.crypto_kdf_KEYBYTES))
|
||||
}
|
||||
|
@ -4,11 +4,15 @@
|
||||
"description": "WIP - a pure javascript version of sodium-native",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"blake2b": "^1.2.0"
|
||||
"blake2b": "^2.1.1",
|
||||
"nanoassert": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"sodium-test": "^0.3.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": " node test.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mafintosh/sodium-javascript.git"
|
||||
|
Loading…
Reference in New Issue
Block a user