| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>WebAuthn getPublicKey</title> | |
| <meta name="timeout" content="long"> | |
| <link rel="help" href="https://w3c.github.io/webauthn/#sctn-public-key-easy"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/resources/testdriver.js"></script> | |
| <script src="/resources/testdriver-vendor.js"></script> | |
| <script src="helpers.js"></script> | |
| <script src="resources/utils.js"></script> | |
| <script> | |
| function testGetPublicKey() { | |
| standardSetup(function() { | |
| promise_test(async t => { | |
| let cred = await createCredential(); | |
| const response = cred.response; | |
| assert_equals(response.getPublicKeyAlgorithm(), | |
| cose_alg_ECDSA_w_SHA256); | |
| const attestationObject = | |
| new Cbor(response.attestationObject).getCBOR(); | |
| const claimedAuthDataHex = uint8ArrayToHex( | |
| new Uint8Array(response.getAuthenticatorData())); | |
| const actualAuthDataHex = uint8ArrayToHex(attestationObject.authData); | |
| assert_equals(actualAuthDataHex, claimedAuthDataHex); | |
| // Check that the x and y coordinates of the public key appear in | |
| // the claimed SPKI, at least. | |
| const spkiHex = uint8ArrayToHex( | |
| new Uint8Array(response.getPublicKey())); | |
| const authData = parseAuthenticatorData(attestationObject.authData); | |
| const pubKey = authData.attestedCredentialData.credentialPublicKey; | |
| const xHex = uint8ArrayToHex(pubKey.x); | |
| const yHex = uint8ArrayToHex(pubKey.y); | |
| assert_not_equals(-1, spkiHex.indexOf(xHex)); | |
| assert_not_equals(-1, spkiHex.indexOf(yHex)); | |
| t.done(); | |
| }); | |
| }); | |
| } | |
| testGetPublicKey(); | |
| /* JSHINT */ | |
| /* globals standardSetup, createCredential */ | |
| </script> | |
| </head> | |
| <body></body> | |
| </html> |