version 1.154, 2015/10/20 23:24:25 |
version 1.155, 2015/12/04 16:41:28 |
|
|
struct sshbuf *sigbuf; |
struct sshbuf *sigbuf; |
u_char *p; |
u_char *p; |
u_char *signature; |
u_char *signature; |
size_t datlen, siglen; |
char *alg; |
|
size_t datlen, siglen, alglen; |
int r, keyid, is_proof = 0; |
int r, keyid, is_proof = 0; |
const char proof_req[] = "hostkeys-prove-00@openssh.com"; |
const char proof_req[] = "hostkeys-prove-00@openssh.com"; |
|
|
debug3("%s", __func__); |
debug3("%s", __func__); |
|
|
if ((r = sshbuf_get_u32(m, &keyid)) != 0 || |
if ((r = sshbuf_get_u32(m, &keyid)) != 0 || |
(r = sshbuf_get_string(m, &p, &datlen)) != 0) |
(r = sshbuf_get_string(m, &p, &datlen)) != 0 || |
|
(r = sshbuf_get_cstring(m, &alg, &alglen)) != 0) |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
|
|
/* |
/* |
|
|
} |
} |
|
|
if ((key = get_hostkey_by_index(keyid)) != NULL) { |
if ((key = get_hostkey_by_index(keyid)) != NULL) { |
if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, |
if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg, |
datafellows)) != 0) |
datafellows)) != 0) |
fatal("%s: sshkey_sign failed: %s", |
fatal("%s: sshkey_sign failed: %s", |
__func__, ssh_err(r)); |
__func__, ssh_err(r)); |
} else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL && |
} else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL && |
auth_sock > 0) { |
auth_sock > 0) { |
if ((r = ssh_agent_sign(auth_sock, key, &signature, &siglen, |
if ((r = ssh_agent_sign(auth_sock, key, &signature, &siglen, |
p, datlen, datafellows)) != 0) { |
p, datlen, alg, datafellows)) != 0) { |
fatal("%s: ssh_agent_sign failed: %s", |
fatal("%s: ssh_agent_sign failed: %s", |
__func__, ssh_err(r)); |
__func__, ssh_err(r)); |
} |
} |