@@ -26,6 +26,53 @@ const { subtle, getRandomValues } = require('crypto').webcrypto;
26
26
code : 'ERR_INVALID_ARG_TYPE'
27
27
} ) ;
28
28
} ) ;
29
+ assert . rejects (
30
+ subtle . importKey ( 'raw' , keyData , {
31
+ name : 'HMAC'
32
+ } , false , [ 'sign' , 'verify' ] ) , {
33
+ code : 'ERR_MISSING_OPTION'
34
+ } ) . then ( common . mustCall ( ) ) ;
35
+ assert . rejects (
36
+ subtle . importKey ( 'raw' , keyData , {
37
+ name : 'HMAC' ,
38
+ hash : 'SHA-256'
39
+ } , false , [ 'deriveBits' ] ) , {
40
+ name : 'SyntaxError' ,
41
+ message : 'Unsupported key usage for an HMAC key'
42
+ } ) . then ( common . mustCall ( ) ) ;
43
+ assert . rejects (
44
+ subtle . importKey ( 'node.keyObject' , '' , {
45
+ name : 'HMAC' ,
46
+ hash : 'SHA-256'
47
+ } , false , [ 'sign' , 'verify' ] ) , {
48
+ code : 'ERR_INVALID_ARG_TYPE'
49
+ } ) . then ( common . mustCall ( ) ) ;
50
+ assert . rejects (
51
+ subtle . importKey ( 'raw' , keyData , {
52
+ name : 'HMAC' ,
53
+ hash : 'SHA-256' ,
54
+ length : 0
55
+ } , false , [ 'sign' , 'verify' ] ) , {
56
+ name : 'DataError' ,
57
+ message : 'Zero-length key is not supported'
58
+ } ) . then ( common . mustCall ( ) ) ;
59
+ assert . rejects (
60
+ subtle . importKey ( 'raw' , keyData , {
61
+ name : 'HMAC' ,
62
+ hash : 'SHA-256' ,
63
+ length : 1
64
+ } , false , [ 'sign' , 'verify' ] ) , {
65
+ name : 'DataError' ,
66
+ message : 'Invalid key length'
67
+ } ) . then ( common . mustCall ( ) ) ;
68
+ assert . rejects (
69
+ subtle . importKey ( 'jwk' , null , {
70
+ name : 'HMAC' ,
71
+ hash : 'SHA-256' ,
72
+ } , false , [ 'sign' , 'verify' ] ) , {
73
+ name : 'DataError' ,
74
+ message : 'Invalid JWK keyData'
75
+ } ) . then ( common . mustCall ( ) ) ;
29
76
}
30
77
31
78
// Import/Export HMAC Secret Key
0 commit comments