| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>TestCredentials</title> | |
| <script> | |
| var CHALLENGE = new TextEncoder().encode("climb a mountain"); | |
| var PUBLIC_KEY_RP = { | |
| id: "subdomain.example.test", | |
| name: "Acme" | |
| }; | |
| var PUBLIC_KEY_USER = { | |
| id: new TextEncoder().encode("1098237235409872"), | |
| name: "avery.a.jones@example.com", | |
| displayName: "Avery A. Jones", | |
| icon: "https://pics.acme.com/00/p/aBjjjpqPb.png" | |
| }; | |
| var PUBLIC_KEY_PARAMETERS = [{ | |
| type: "public-key", | |
| alg: -7, | |
| },]; | |
| var ACCEPTABLE_CREDENTIAL = { | |
| type: "public-key", | |
| id: new TextEncoder().encode("acceptableCredential"), | |
| transports: ["usb", "nfc", "ble"] | |
| }; | |
| function doCreatePublicKeyCredential() { | |
| if (window.PublicKeyCredential === undefined) { | |
| window.document.title = 'Fail: navigator.credentials.create({publicKey}) === undefined'; | |
| return; | |
| } | |
| var customPublicKey = { | |
| challenge: CHALLENGE, | |
| rp: PUBLIC_KEY_RP, | |
| user: PUBLIC_KEY_USER, | |
| pubKeyCredParams: PUBLIC_KEY_PARAMETERS, | |
| }; | |
| navigator.credentials.create({publicKey : customPublicKey}) | |
| .then(r => { window.document.title = 'Success'; | |
| }).catch(e => { | |
| if (e.message == "Not implemented") { | |
| window.document.title = 'Success'; | |
| } else { | |
| window.document.title = 'Fail: ' + e.name + e.message; | |
| } | |
| }); | |
| } | |
| function doGetPublicKeyCredential() { | |
| if (window.PublicKeyCredential === undefined) { | |
| window.document.title = 'Fail: navigator.credentials.get({publicKey}) === undefined'; | |
| return; | |
| } | |
| var customPublicKey = { | |
| challenge: CHALLENGE, | |
| rpId: "subdomain.example.test", | |
| allowCredentials: [ACCEPTABLE_CREDENTIAL] | |
| }; | |
| navigator.credentials.get({publicKey : customPublicKey}) | |
| .then(r => { window.document.title = 'Success'; | |
| }).catch(e => { | |
| if (e.message == "Not implemented") { | |
| window.document.title = 'Success'; | |
| } else { | |
| window.document.title = 'Fail: ' + e.name + e.message; | |
| } | |
| }); | |
| } | |
| function doIsUserVerifyingPlatformAuthenticatorAvailable() { | |
| if (window.PublicKeyCredential === undefined) { | |
| window.document.title = 'Fail: isUserVerifyingPlatformAuthenticatorAvailable() === undefined'; | |
| return; | |
| } | |
| if (window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable === undefined) { | |
| window.document.title = 'Fail: isUserVerifyingPlatformAuthenticatorAvailable() === undefined'; | |
| return; | |
| } | |
| PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() | |
| .then(r => { | |
| if (r == false) { | |
| window.document.title = 'Success'; | |
| } else { | |
| window.document.title = 'Fail: expected response to be false, got ' + r + ' instead'; | |
| } | |
| }) | |
| .catch(e => { | |
| window.document.title = 'Fail: ' + e.name + " " + e.message; | |
| }); | |
| } | |
| function doIsConditionalMediationAvailable() { | |
| if (window.PublicKeyCredential === undefined) { | |
| window.document.title = 'Fail: PublicKeyCredential === undefined'; | |
| return; | |
| } | |
| if (window.PublicKeyCredential.isConditionalMediationAvailable === undefined) { | |
| window.document.title = 'Fail: isConditionalMediationAvailable() === undefined'; | |
| return; | |
| } | |
| PublicKeyCredential.isConditionalMediationAvailable() | |
| .then(r => { | |
| if (r == false) { | |
| window.document.title = 'Success'; | |
| } else { | |
| window.document.title = 'Fail: expected response to be false, got ' + r + ' instead'; | |
| } | |
| }) | |
| .catch(e => { | |
| window.document.title = 'Fail: ' + e.name + " " + e.message; | |
| }); | |
| } | |
| </script> | |
| </head> | |
| <body> | |
| </body> | |
| </html> |