({ name, publicUsages, privateUsages }, extractable)
| 291 | } |
| 292 | |
| 293 | async function testImportJwk({ name, publicUsages, privateUsages }, extractable) { |
| 294 | |
| 295 | const jwk = keyData[name].jwk; |
| 296 | |
| 297 | const tests = [ |
| 298 | subtle.importKey( |
| 299 | 'jwk', |
| 300 | { |
| 301 | kty: jwk.kty, |
| 302 | alg: jwk.alg, |
| 303 | pub: jwk.pub, |
| 304 | }, |
| 305 | { name }, |
| 306 | extractable, publicUsages), |
| 307 | subtle.importKey( |
| 308 | 'jwk', |
| 309 | jwk, |
| 310 | { name }, |
| 311 | extractable, |
| 312 | privateUsages), |
| 313 | ]; |
| 314 | |
| 315 | const [ |
| 316 | publicKey, |
| 317 | privateKey, |
| 318 | ] = await Promise.all(tests); |
| 319 | |
| 320 | assert.strictEqual(publicKey.type, 'public'); |
| 321 | assert.strictEqual(privateKey.type, 'private'); |
| 322 | assert.strictEqual(publicKey.extractable, extractable); |
| 323 | assert.strictEqual(privateKey.extractable, extractable); |
| 324 | assert.deepStrictEqual(publicKey.usages, publicUsages); |
| 325 | assert.deepStrictEqual(privateKey.usages, privateUsages); |
| 326 | assert.strictEqual(publicKey.algorithm.name, name); |
| 327 | assert.strictEqual(privateKey.algorithm.name, name); |
| 328 | assert.strictEqual(privateKey.algorithm, privateKey.algorithm); |
| 329 | assert.strictEqual(privateKey.usages, privateKey.usages); |
| 330 | assert.strictEqual(publicKey.algorithm, publicKey.algorithm); |
| 331 | assert.strictEqual(publicKey.usages, publicKey.usages); |
| 332 | |
| 333 | if (extractable) { |
| 334 | // Test the round trip |
| 335 | const [ |
| 336 | pubJwk, |
| 337 | pvtJwk, |
| 338 | ] = await Promise.all([ |
| 339 | subtle.exportKey('jwk', publicKey), |
| 340 | subtle.exportKey('jwk', privateKey), |
| 341 | ]); |
| 342 | |
| 343 | assert.deepStrictEqual(pubJwk.key_ops, publicUsages); |
| 344 | assert.strictEqual(pubJwk.ext, true); |
| 345 | assert.strictEqual(pubJwk.kty, 'AKP'); |
| 346 | assert.strictEqual(pubJwk.pub, jwk.pub); |
| 347 | |
| 348 | assert.deepStrictEqual(pvtJwk.key_ops, privateUsages); |
| 349 | assert.strictEqual(pvtJwk.ext, true); |
| 350 | assert.strictEqual(pvtJwk.kty, 'AKP'); |
no test coverage detected