52 lines
1.9 KiB
HTML
52 lines
1.9 KiB
HTML
<!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>
|