version 1.29, 2000/11/23 21:03:47 |
version 1.30, 2000/12/03 11:15:04 |
|
|
int ret = -1; |
int ret = -1; |
int have_sig = 1; |
int have_sig = 1; |
|
|
|
debug3("sign_and_send_pubkey"); |
if (key_to_blob(k, &blob, &bloblen) == 0) { |
if (key_to_blob(k, &blob, &bloblen) == 0) { |
/* we cannot handle this key */ |
/* we cannot handle this key */ |
|
debug3("sign_and_send_pubkey: cannot handle key"); |
return 0; |
return 0; |
} |
} |
/* data to be signed */ |
/* data to be signed */ |
|
|
buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); |
buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); |
buffer_put_cstring(&b, authctxt->server_user); |
buffer_put_cstring(&b, authctxt->server_user); |
buffer_put_cstring(&b, |
buffer_put_cstring(&b, |
datafellows & SSH_BUG_PUBKEYAUTH ? |
datafellows & SSH_BUG_PKSERVICE ? |
"ssh-userauth" : |
"ssh-userauth" : |
authctxt->service); |
authctxt->service); |
buffer_put_cstring(&b, authctxt->method->name); |
if (datafellows & SSH_BUG_PKAUTH) { |
buffer_put_char(&b, have_sig); |
buffer_put_char(&b, have_sig); |
buffer_put_cstring(&b, key_ssh_name(k)); |
} else { |
|
buffer_put_cstring(&b, authctxt->method->name); |
|
buffer_put_char(&b, have_sig); |
|
buffer_put_cstring(&b, key_ssh_name(k)); |
|
} |
buffer_put_string(&b, blob, bloblen); |
buffer_put_string(&b, blob, bloblen); |
|
|
/* generate signature */ |
/* generate signature */ |
|
|
#ifdef DEBUG_PK |
#ifdef DEBUG_PK |
buffer_dump(&b); |
buffer_dump(&b); |
#endif |
#endif |
if (datafellows & SSH_BUG_PUBKEYAUTH) { |
if (datafellows & SSH_BUG_PKSERVICE) { |
buffer_clear(&b); |
buffer_clear(&b); |
buffer_append(&b, session_id2, session_id2_len); |
buffer_append(&b, session_id2, session_id2_len); |
buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); |
buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); |
|
|
buffer_put_cstring(&b, authctxt->service); |
buffer_put_cstring(&b, authctxt->service); |
buffer_put_cstring(&b, authctxt->method->name); |
buffer_put_cstring(&b, authctxt->method->name); |
buffer_put_char(&b, have_sig); |
buffer_put_char(&b, have_sig); |
buffer_put_cstring(&b, key_ssh_name(k)); |
if (!(datafellows & SSH_BUG_PKAUTH)) |
|
buffer_put_cstring(&b, key_ssh_name(k)); |
buffer_put_string(&b, blob, bloblen); |
buffer_put_string(&b, blob, bloblen); |
} |
} |
xfree(blob); |
xfree(blob); |