| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>WebAuthn navigator.credentials.create() pubKeyCredParams Tests</title> | |
| <meta name="timeout" content="long"> | |
| <link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org"> | |
| <link rel="help" href="https://w3c.github.io/webauthn/#iface-credential"> | |
| <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"; | |
| var badType = { | |
| type: "something-else", | |
| alg: cose_alg_ECDSA_w_SHA512 | |
| }; | |
| var badTypeEmptyString = cloneObject(badType); | |
| badTypeEmptyString.type = ""; | |
| var badTypeNull = cloneObject(badType); | |
| badTypeNull.type = null; | |
| var badTypeEmptyObj = cloneObject(badType); | |
| badTypeEmptyObj.type = {}; | |
| var badAlg = { | |
| type: "public-key", | |
| alg: 42 | |
| }; | |
| var badAlgZero = cloneObject(badAlg); | |
| badAlgZero.alg = 0; | |
| // bad pubKeyCredParams values | |
| new CreateCredentialsTest({path: "options.publicKey.pubKeyCredParams", value: undefined}).runTest("Bad pubKeyCredParams: pubKeyCredParams is undefined", TypeError); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", "hi mom").runTest("Bad pubKeyCredParams: pubKeyCredParams is string", TypeError); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", null).runTest("Bad pubKeyCredParams: pubKeyCredParams is null", TypeError); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badType]).runTest("Bad pubKeyCredParams: first param has bad type (\"something-else\")", "NotSupportedError"); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeEmptyString]).runTest("Bad pubKeyCredParams: first param has bad type (\"\")", "NotSupportedError"); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeNull]).runTest("Bad pubKeyCredParams: first param has bad type (null)", "NotSupportedError"); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badTypeEmptyObj]).runTest("Bad pubKeyCredParams: first param has bad type (empty object)", "NotSupportedError"); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badAlg]) | |
| .modify("options.publicKey.timeout", 300) | |
| .runTest("Bad pubKeyCredParams: first param has bad alg (42)", "NotAllowedError"); | |
| new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [badAlgZero]) | |
| .modify("options.publicKey.timeout", 300) | |
| .runTest("Bad pubKeyCredParams: first param has bad alg (0)", "NotAllowedError"); | |
| // TODO: come back to this when mock authenticators support multiple cryptos so that we can test the preference ranking | |
| // function verifyEC256(res) { | |
| // debug ("verifyEC256 got", res); | |
| // debug ("client data JSON", ab2str(res.response.clientDataJSON)); | |
| // parseAuthenticatorData(res.response.attestationObject); | |
| // } | |
| // new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [pkParamEC256, pkParamEC512]) | |
| // .afterTest(verifyEC256) | |
| // .runTest("EC256, EC512 pubKeyCredParams"); | |
| // function verifyEC512(res) { | |
| // debug ("verifyEC512 got", res); | |
| // debug ("client data JSON", ab2str(res.response.clientDataJSON)); | |
| // // parseAuthenticatorData(res.response.attestationObject); | |
| // printHex ("clientDataJSON", res.response.clientDataJSON); | |
| // printHex ("attestationObject", res.response.attestationObject); | |
| // } | |
| // new CreateCredentialsTest("options.publicKey.pubKeyCredParams", [pkParamEC512, pkParamEC256]) | |
| // .afterTest(verifyEC512) | |
| // .runTest("EC512, EC256 pubKeyCredParams"); | |
| }); | |
| /* JSHINT */ | |
| /* globals standardSetup, CreateCredentialsTest, cose_alg_ECDSA_w_SHA512, cloneObject */ | |
| </script> |