60 lines
1.5 KiB
HTML
60 lines
1.5 KiB
HTML
<script src="/resources/testdriver.js"></script>
|
|
<script src="/resources/testdriver-vendor.js"></script>
|
|
<script src="/webauthn/helpers.js"></script>
|
|
<script>
|
|
'use strict';
|
|
|
|
const textEncoder = new TextEncoder();
|
|
let authenticatorArgs = {
|
|
protocol: 'ctap2_1',
|
|
transport: 'internal',
|
|
hasResidentKey: true,
|
|
hasUserVerification: true,
|
|
isUserVerified: true,
|
|
};
|
|
|
|
window.onload = async function() {
|
|
await window.test_driver.add_virtual_authenticator(authenticatorArgs);
|
|
let enabled = true;
|
|
let name = `OK`;
|
|
try {
|
|
const publicKey = {
|
|
rp: {
|
|
id: window.location.hostname,
|
|
name: 'Joe',
|
|
},
|
|
user: {
|
|
name: 'user@domain',
|
|
id: Uint8Array.from('id', c => c.charCodeAt(0)),
|
|
displayName: 'User',
|
|
},
|
|
challenge: textEncoder.encode('Enrollment challenge'),
|
|
pubKeyCredParams: [{
|
|
type: 'public-key',
|
|
alg: -7, // ECDSA, not supported on Windows.
|
|
}, {
|
|
type: 'public-key',
|
|
alg: -257, // RSA, supported on Windows.
|
|
}],
|
|
authenticatorSelection: {
|
|
userVerification: 'required',
|
|
residentKey: 'required',
|
|
authenticatorAttachment: 'platform',
|
|
},
|
|
extensions: {
|
|
payment: {
|
|
isPayment: true,
|
|
},
|
|
}
|
|
};
|
|
await window.test_driver.bless('user activation');
|
|
await navigator.credentials.create({
|
|
publicKey
|
|
});
|
|
} catch (e) {
|
|
enabled = false;
|
|
name = e.name;
|
|
}
|
|
parent.postMessage({ type: 'availability-result', enabled, name }, '*');
|
|
}
|
|
</script>
|