| |
| |
| |
| |
| @@ -191,14 +191,17 @@ ssh_ecdsa_sk_verify(const struct sshkey |
| ret = SSH_ERR_INVALID_FORMAT; |
| goto out; |
| } |
| - if (is_webauthn) { |
| - if (sshbuf_get_cstring(b, &webauthn_origin, NULL) != 0 || |
| - sshbuf_froms(b, &webauthn_wrapper) != 0 || |
| - sshbuf_froms(b, &webauthn_exts) != 0) { |
| - ret = SSH_ERR_INVALID_FORMAT; |
| - goto out; |
| - } |
| - } |
| + if (sshbuf_get_cstring(b, &webauthn_origin, NULL) != 0 || |
| + sshbuf_froms(b, &webauthn_wrapper) != 0 || |
| + sshbuf_froms(b, &webauthn_exts) != 0) { |
| + if (is_webauthn) { |
| + ret = SSH_ERR_INVALID_FORMAT; |
| + goto out; |
| + } |
| + } else { |
| + // webauthn signature detected based on structure |
| + is_webauthn = 1; |
| + } |
| if (sshbuf_len(b) != 0) { |
| ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; |
| goto out; |