summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webauthn/createcredential-prf.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webauthn/createcredential-prf.https.html')
-rw-r--r--testing/web-platform/tests/webauthn/createcredential-prf.https.html69
1 files changed, 69 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webauthn/createcredential-prf.https.html b/testing/web-platform/tests/webauthn/createcredential-prf.https.html
new file mode 100644
index 0000000000..ac2d5b5f36
--- /dev/null
+++ b/testing/web-platform/tests/webauthn/createcredential-prf.https.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>navigator.credentials.create() prf extension tests with authenticator support</title>
+<meta name="timeout" content="long">
+<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>
+<body></body>
+<script>
+standardSetup(function() {
+ "use strict";
+
+ promise_test(async t => {
+ const credential = await createCredential({
+ options: {
+ publicKey: {
+ extensions: {
+ prf: {},
+ },
+ },
+ },
+ });
+ assert_true(credential.getClientExtensionResults().prf.enabled);
+ }, "navigator.credentials.create() with prf requested");
+
+ promise_test(async t => {
+ const promise = createCredential({
+ options: {
+ publicKey: {
+ extensions: {
+ prf: {evalByCredential: {"Zm9v": {first: new Uint8Array([1,2,3,4]).buffer}}},
+ },
+ },
+ },
+ });
+ return promise_rejects_dom(t, "NotSupportedError", promise);
+ }, "navigator.credentials.create() with nonsensical evalByCredential");
+
+ promise_test(async t => {
+ // Evaluating the PRF at creation time is not supported by security keys
+ // because it cannot be expressed with the CTAP2 hmac-secret extension,
+ // but it is defined at the WebAuthn level.
+
+ const credential = await createCredential({
+ options: {
+ publicKey: {
+ extensions: {
+ prf: {eval: {first: new Uint8Array([1,2,3,4]).buffer}},
+ },
+ },
+ },
+ });
+ assert_true(credential.getClientExtensionResults().prf.enabled,
+ "prf.enabled");
+ assert_true('results' in credential.getClientExtensionResults().prf,
+ "has results");
+ assert_true('first' in credential.getClientExtensionResults().prf.results,
+ "has results.first");
+ assert_equals(
+ credential.getClientExtensionResults().prf.results.first.byteLength, 32,
+ "correct length output");
+ }, "navigator.credentials.create() with eval");
+}, {
+ protocol: "ctap2_1",
+ extensions: ["prf"],
+});
+</script>