| 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
|
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}`) } })