Bug 240134
| Summary: | Error occurs on second call of button onClick callback when crypto.subtle.digest() is called before navigator.credentials.get() using security key | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | tommy <tommy> |
| Component: | WebKit Misc. | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED CONFIGURATION CHANGED | ||
| Severity: | Major | CC: | ap, bfulgham, cdumez, pascoe, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 15 | ||
| Hardware: | iPhone / iPad | ||
| OS: | iOS 15 | ||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=241126 | ||
tommy
When window.crypto.subtle.digest() is called before window.navigator.credentials.get(), the first time will not error but calling it a second time will.
The code below shows how to reproduce.
const getBtn = document.getElementById("get");
getBtn.addEventListener("click", async () => {
try {
/*
remove the call to crypto.suble.digest and it will work without error
*/
const digest = await window.crypto.subtle.digest(
"SHA-512",
CHALLENGE_BUFFER,
)
let credential = (await window.navigator.credentials.get({
publicKey: {
challenge: CHALLENGE_BUFFER,
timeout: 30000,
userVerification: "discouraged",
allowCredentials: [
{
transports: ["nfc", "usb"],
id: credentialId,
type: "public-key",
},
],
},
}))
console.log({credential})
} catch (e) {
alert(`error ${e.message}`)
}
})
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/92822521>
Brent Fulgham
Does not reproduce on Trunk.