diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index 321506eaf4a531..fb17ba36ced0e3 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -44,7 +44,7 @@ class KeyObject { if (type !== 'secret' && type !== 'public' && type !== 'private') throw new ERR_INVALID_ARG_VALUE('type', type); if (typeof handle !== 'object') - throw new ERR_INVALID_ARG_TYPE('handle', 'string', handle); + throw new ERR_INVALID_ARG_TYPE('handle', 'object', handle); this[kKeyType] = type; diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js index ab9005f8598a73..2a3a3ec2f0bff1 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js @@ -13,6 +13,7 @@ const { createSecretKey, createPublicKey, createPrivateKey, + KeyObject, randomBytes, publicEncrypt, privateDecrypt @@ -39,6 +40,27 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', }); } +{ + // Attempting to create a key of a wrong type should throw + const TYPE = 'wrong_type'; + + common.expectsError(() => new KeyObject(TYPE), { + type: TypeError, + code: 'ERR_INVALID_ARG_VALUE', + message: `The argument 'type' is invalid. Received '${TYPE}'` + }); +} + +{ + // Attempting to create a key with non-object handle should throw + common.expectsError(() => new KeyObject('secret', ''), { + type: TypeError, + code: 'ERR_INVALID_ARG_TYPE', + message: + 'The "handle" argument must be of type object. Received type string' + }); +} + { const keybuf = randomBytes(32); const key = createSecretKey(keybuf);