@@ -3,44 +3,6 @@ function define_tests() {
3
3
// May want to test prefixed implementations.
4
4
var subtle = self . crypto . subtle ;
5
5
6
- var pkcs8 = {
7
- "X25519" : new Uint8Array ( [ 48 , 46 , 2 , 1 , 0 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 4 , 34 , 4 , 32 , 200 , 131 , 142 , 118 , 208 , 87 , 223 , 183 , 216 , 201 , 90 , 105 , 225 , 56 , 22 , 10 , 221 , 99 , 115 , 253 , 113 , 164 , 210 , 118 , 187 , 86 , 227 , 168 , 27 , 100 , 255 , 97 ] ) ,
8
- "X448" : new Uint8Array ( [ 48 , 70 , 2 , 1 , 0 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 4 , 58 , 4 , 56 , 88 , 199 , 210 , 154 , 62 , 181 , 25 , 178 , 157 , 0 , 207 , 177 , 145 , 187 , 100 , 252 , 109 , 138 , 66 , 216 , 241 , 113 , 118 , 39 , 43 , 137 , 242 , 39 , 45 , 24 , 25 , 41 , 92 , 101 , 37 , 192 , 130 , 150 , 113 , 176 , 82 , 239 , 7 , 39 , 83 , 15 , 24 , 142 , 49 , 208 , 204 , 83 , 191 , 38 , 146 , 158 ] )
9
- } ;
10
-
11
- var spki = {
12
- "X25519" : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 28 , 242 , 177 , 230 , 2 , 46 , 197 , 55 , 55 , 30 , 215 , 245 , 62 , 84 , 250 , 17 , 84 , 216 , 62 , 152 , 235 , 100 , 234 , 81 , 250 , 229 , 179 , 48 , 124 , 254 , 151 , 6 ] ) ,
13
- "X448" : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 182 , 4 , 161 , 209 , 165 , 205 , 29 , 148 , 38 , 213 , 97 , 239 , 99 , 10 , 158 , 177 , 108 , 190 , 105 , 213 , 185 , 202 , 97 , 94 , 220 , 83 , 99 , 62 , 251 , 82 , 234 , 49 , 230 , 230 , 160 , 161 , 219 , 172 , 198 , 231 , 108 , 188 , 230 , 72 , 45 , 126 , 75 , 163 , 213 , 93 , 158 , 128 , 39 , 101 , 206 , 111 ] )
14
- } ;
15
-
16
- var sizes = {
17
- "X25519" : 32 ,
18
- "X448" : 56
19
- } ;
20
-
21
- var derivations = {
22
- "X25519" : new Uint8Array ( [ 39 , 104 , 64 , 157 , 250 , 185 , 158 , 194 , 59 , 140 , 137 , 185 , 63 , 245 , 136 , 2 , 149 , 247 , 97 , 118 , 8 , 143 , 137 , 228 , 61 , 254 , 190 , 126 , 161 , 149 , 0 , 8 ] ) ,
23
- "X448" : new Uint8Array ( [ 240 , 246 , 197 , 241 , 127 , 148 , 244 , 41 , 30 , 171 , 113 , 120 , 134 , 109 , 55 , 236 , 137 , 6 , 221 , 108 , 81 , 65 , 67 , 220 , 133 , 190 , 124 , 242 , 141 , 239 , 243 , 155 , 114 , 110 , 15 , 109 , 207 , 129 , 14 , 181 , 148 , 220 , 169 , 123 , 72 , 130 , 189 , 68 , 196 , 62 , 167 , 220 , 103 , 244 , 154 , 78 ] )
24
- } ;
25
-
26
- var kSmallOrderPoint = {
27
- "X25519" : [
28
- { order : "0" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) } ,
29
- { order : "1" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) } ,
30
- { order : "8" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 224 , 235 , 122 , 124 , 59 , 65 , 184 , 174 , 22 , 86 , 227 , 250 , 241 , 159 , 196 , 106 , 218 , 9 , 141 , 235 , 156 , 50 , 177 , 253 , 134 , 98 , 5 , 22 , 95 , 73 , 184 , 0 ] ) } ,
31
- { order : "p-1 (order 2)" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 236 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 127 ] ) } ,
32
- { order : "p (=0, order 4)" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 237 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 127 ] ) } ,
33
- { order : "p+1 (=1, order 1)" , vector : new Uint8Array ( [ 48 , 42 , 48 , 5 , 6 , 3 , 43 , 101 , 110 , 3 , 33 , 0 , 238 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 127 ] ) } ,
34
- ] ,
35
- "X448" : [
36
- { order : "0" , vector : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) } ,
37
- { order : "1" , vector : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) } ,
38
- { order : "p-1 (order 2)" , vector : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 254 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 254 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] ) } ,
39
- { order : "p (=0, order 4)" , vector : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 254 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] ) } ,
40
- { order : "p+1 (=1, order 1)" , vector : new Uint8Array ( [ 48 , 66 , 48 , 5 , 6 , 3 , 43 , 101 , 111 , 3 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] ) } ,
41
- ]
42
- } ;
43
-
44
6
// Verify the derive functions perform checks against the all-zero value results,
45
7
// ensuring small-order points are rejected.
46
8
// https://www.rfc-editor.org/rfc/rfc7748#section-6.1
@@ -50,16 +12,16 @@ function define_tests() {
50
12
kSmallOrderPoint [ algorithmName ] . forEach ( function ( test ) {
51
13
promise_test ( async ( ) => {
52
14
let derived ;
53
- let privateKey = await subtle . importKey ( "pkcs8" , pkcs8 [ algorithmName ] ,
15
+ let privateKey ;
16
+ let publicKey ;
17
+ try {
18
+ privateKey = await subtle . importKey ( "pkcs8" , pkcs8 [ algorithmName ] ,
54
19
{ name : algorithmName } ,
55
20
false , [ "deriveBits" , "deriveKey" ] ) ;
56
- let publicKey = await subtle . importKey ( "spki" , test . vector ,
21
+ publicKey = await subtle . importKey ( "spki" , test . vector ,
57
22
{ name : algorithmName } ,
58
23
false , [ ] )
59
- try {
60
- derived = await subtle . deriveKey ( { name : algorithmName , public : publicKey } , privateKey ,
61
- { name : "HMAC" , hash : "SHA-256" , length : 256 } , true ,
62
- [ "sign" , "verify" ] ) ;
24
+ derived = await subtle . deriveBits ( { name : algorithmName , public : publicKey } , privateKey , 8 * sizes [ algorithmName ] ) ;
63
25
} catch ( err ) {
64
26
assert_false ( privateKey === undefined , "Private key should be valid." ) ;
65
27
assert_false ( publicKey === undefined , "Public key should be valid." ) ;
0 commit comments