mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
9ec8781502
Make the cipher/decipher/hash/hmac update() methods ignore the input encoding when the input is a buffer. This is the documented behavior but some inputs were rejected, notably when the specified encoding is 'hex' and the buffer has an odd length (because a _string_ with an odd length is never a valid hex string.) The sign/verify update() methods work okay because they use different validation logic. Fixes: https://github.com/nodejs/node/issues/31751 PR-URL: https://github.com/nodejs/node/pull/31766 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
23 lines
716 B
JavaScript
23 lines
716 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const crypto = require('crypto');
|
|
|
|
const zeros = Buffer.alloc;
|
|
const key = zeros(16);
|
|
const iv = zeros(16);
|
|
|
|
const cipher = () => crypto.createCipheriv('aes-128-cbc', key, iv);
|
|
const decipher = () => crypto.createDecipheriv('aes-128-cbc', key, iv);
|
|
const hash = () => crypto.createSign('sha256');
|
|
const hmac = () => crypto.createHmac('sha256', key);
|
|
const sign = () => crypto.createSign('sha256');
|
|
const verify = () => crypto.createVerify('sha256');
|
|
|
|
for (const f of [cipher, decipher, hash, hmac, sign, verify])
|
|
for (const n of [15, 16])
|
|
f().update(zeros(n), 'hex'); // Should ignore inputEncoding.
|