From: Dmitry Volyntsev Date: Fri, 4 May 2018 16:25:15 +0000 (+0300) Subject: Fixed crypto.createHmac() for keys with size >= alg size and < 64. X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=c1633e51e24640c531cfaf10cc3d5b097840534a;p=njs.git Fixed crypto.createHmac() for keys with size >= alg size and < 64. --- diff --git a/njs/njs_crypto.c b/njs/njs_crypto.c index 984f9d3c..ccb60710 100644 --- a/njs/njs_crypto.c +++ b/njs/njs_crypto.c @@ -425,13 +425,9 @@ njs_crypto_create_hmac(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, memcpy(key_buf, digest, alg->size); memset(key_buf + alg->size, 0, sizeof(key_buf) - alg->size); - } else if (key.length < alg->size) { - - memcpy(key_buf, key.start, key.length); - memset(key_buf + key.length, 0, sizeof(key_buf) - key.length); - } else { memcpy(key_buf, key.start, sizeof(key_buf)); + memset(key_buf + key.length, 0, sizeof(key_buf) - key.length); } for (i = 0; i < 64; i++) { diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index d32c76b4..1bf0411e 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -9256,6 +9256,10 @@ static njs_unit_test_t njs_test[] = "h.update('abc'.repeat(100)).digest('hex')"), nxt_string("b105ad6921e4c54d3fa0a9ec3f7f0ee9bd2c659d") }, + { nxt_string("var h = require('crypto').createHmac('sha1', 'A'.repeat(40));" + "h.update('AB').digest('hex')"), + nxt_string("0b84f78ca5275d76d4b7dafb5845ee2b6a79c4c2") }, + { nxt_string("var h = require('crypto').createHmac('sha1', 'A'.repeat(64));" "h.update('AB').digest('hex')"), nxt_string("400ce530816c6b3247e2959f3982a12aaf58c0c9") },