-
-
Notifications
You must be signed in to change notification settings - Fork 32.7k
Description
Hi.
I try to improve test coverage of internal/crypto.
Already I submitted pull requests that I can write test.
#17555, #17458, #17449, #17447, #17426, #17418, #17728 and #17730.
I found two coverage blockers.
1. process.binding('crypto').PBKDF2
does not returns -1
Code
node/lib/internal/crypto/pbkdf2.js
Lines 82 to 87 in 7124b46
if (PBKDF2(password, salt, iterations, keylen, digest, next) === -1) | |
throw new errors.TypeError('ERR_CRYPTO_INVALID_DIGEST', digest); | |
} else { | |
const ret = PBKDF2(password, salt, iterations, keylen, digest); | |
if (ret === -1) | |
throw new errors.TypeError('ERR_CRYPTO_INVALID_DIGEST', digest); |
Reason
PBKDF2
returns undefined always because PBKDF2
returns anything.
See also:
Line 5569 in efffcc2
void PBKDF2(const FunctionCallbackInfo<Value>& args) { |
So never match returns -1
.
2. Can't throw ERR_CRYPTO_HASH_UPDATE_FAILED
Code
node/lib/internal/crypto/hash.js
Lines 57 to 58 in 7907534
if (!this._handle.update(data, encoding || getDefaultEncoding())) | |
throw new errors.Error('ERR_CRYPTO_HASH_UPDATE_FAILED'); |
Reason
Hash#_handle.update does not throw an Error(ERR_CRYPTO_HASH_UPDATE_FAILED).
Hash#_handle.update returns false when mdctx_
pointed at null.
But I could not reproduce mdctx_ make the null pointer.
See also:
Lines 4131 to 4133 in efffcc2
bool Hash::HashUpdate(const char* data, int len) { | |
if (mdctx_ == nullptr) | |
return false; |
1: I think should remove check where PBKDF2 returns -1.
2: Please teach me how to make mdctx_
to the null pointer.