summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html')
-rw-r--r--testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html52
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html b/testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html
new file mode 100644
index 0000000000..215519913d
--- /dev/null
+++ b/testing/web-platform/tests/webauthn/createcredential-getpublickey.https.html
@@ -0,0 +1,52 @@
+<!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>