version 1.245, 2019/11/15 04:12:32 |
version 1.246, 2019/11/15 05:37:27 |
|
|
u_char *signature = NULL; |
u_char *signature = NULL; |
size_t dlen, slen = 0; |
size_t dlen, slen = 0; |
u_int compat = 0, flags; |
u_int compat = 0, flags; |
int r, ok = -1; |
int was_shielded, r, r2, ok = -1; |
struct sshbuf *msg; |
struct sshbuf *msg; |
struct sshkey *key = NULL; |
struct sshkey *key = NULL; |
struct identity *id; |
struct identity *id; |
|
|
goto send; |
goto send; |
} |
} |
if (id->sk_provider != NULL) { |
if (id->sk_provider != NULL) { |
if ((r = provider_sign(id->sk_provider, id->key, &signature, |
was_shielded = sshkey_is_shielded(id->key); |
|
if ((r = sshkey_unshield_private(id->key)) != 0) { |
|
error("%s: unshield: %s", __func__, ssh_err(r)); |
|
goto send; |
|
} |
|
r = provider_sign(id->sk_provider, id->key, &signature, |
&slen, data, dlen, agent_decode_alg(key, flags), |
&slen, data, dlen, agent_decode_alg(key, flags), |
compat)) != 0) { |
compat); |
|
if (was_shielded && |
|
(r2 = sshkey_shield_private(id->key)) != 0) { |
|
error("%s: shield: %s", __func__, ssh_err(r)); |
|
r = r2; |
|
goto send; |
|
} |
|
if (r != 0) { |
error("%s: sign: %s", __func__, ssh_err(r)); |
error("%s: sign: %s", __func__, ssh_err(r)); |
goto send; |
goto send; |
} |
} |