blob: 5752cf5b89505bfcf3dd2f1b93bc392bf8f5657d [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} =
await testRunner.startURL(
"https://devtools.test:8443/inspector-protocol/webauthn/resources/webauthn-test.https.html",
"Check that the WebAuthn command getCredential works");
await dp.WebAuthn.enable();
const authenticatorId = (await dp.WebAuthn.addVirtualAuthenticator({
options: {
protocol: "ctap2",
transport: "usb",
hasResidentKey: true,
hasUserVerification: true,
isUserVerified: true,
},
})).result.authenticatorId;
// Register a resident credential.
let result = (await session.evaluateAsync(`registerCredential({
authenticatorSelection: {
requireResidentKey: true,
},
})`));
testRunner.log(result.status);
let credentialId =
await session.evaluate(`base64urlToBase64("${result.credential.id}")`);
// Get the registered credential.
let credential =
(await dp.WebAuthn.getCredential({authenticatorId, credentialId})).result.credential;
testRunner.log("credentialId: " +
(credential.credentialId == credentialId ? "matches" : "does not match"));
testRunner.log("isResidentCredential: " + credential.isResidentCredential);
testRunner.log("rpId: " + credential.rpId);
testRunner.log("signCount: " + credential.signCount);
testRunner.log("userHandle: " + credential.userHandle);
// We should be able to parse the private key.
let keyData =
Uint8Array.from(atob(credential.privateKey), c => c.charCodeAt(0)).buffer;
let key = await window.crypto.subtle.importKey(
"pkcs8", keyData, { name: "ECDSA", namedCurve: "P-256" },
true /* extractable */, ["sign"]);
testRunner.log(key);
testRunner.completeTest();
})