-
- Notifications
You must be signed in to change notification settings - Fork 33.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.