Test HKDF deriveBits operation with malformed parameters On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS crypto.subtle.deriveBits("HKDF", baseKey, null) rejected promise with TypeError: Member HkdfParams.hash is required and must be an instance of (object or DOMString). PASS crypto.subtle.deriveBits({name: "HKDF"}, baseKey, null) rejected promise with TypeError: Member HkdfParams.hash is required and must be an instance of (object or DOMString). PASS crypto.subtle.deriveBits({name: "HKDF", salt: true, info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", salt: null, info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", salt: undefined, info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Member HkdfParams.salt is required and must be an instance of (ArrayBufferView or ArrayBuffer). PASS crypto.subtle.deriveBits({name: "HKDF", salt: Symbol(), info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", salt: { }, info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", salt: 1, info: info, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", info: true, salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", info: null, salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", info: undefined, salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Member HkdfParams.info is required and must be an instance of (ArrayBufferView or ArrayBuffer). PASS crypto.subtle.deriveBits({name: "HKDF", info: Symbol(), salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", info: { }, salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", info: 1, salt: salt, hash: "sha-1"}, baseKey, 128) rejected promise with TypeError: Type error. PASS crypto.subtle.deriveBits({name: "HKDF", salt: salt, info: info, hash: "sha-1"}, baseKey, null) rejected promise with OperationError: The operation failed for an operation-specific reason. PASS crypto.subtle.deriveBits({name: "HKDF", salt: salt, info: info, hash: "sha-1"}, baseKey, 0) rejected promise with OperationError: The operation failed for an operation-specific reason. PASS crypto.subtle.deriveBits({name: "HKDF", salt: salt, info: info, hash: "sha-1"}, baseKey, 5) rejected promise with OperationError: The operation failed for an operation-specific reason. PASS crypto.subtle.deriveBits({name: "HKDF", salt: salt, info: info, hash: "sha-1"}, baseKey, 100000) rejected promise with OperationError: The operation failed for an operation-specific reason. PASS successfullyParsed is true TEST COMPLETE