version 1.7.2.2, 2003/09/16 21:20:28 |
version 1.8, 2002/11/07 22:08:07 |
|
|
#include "pathnames.h" |
#include "pathnames.h" |
#include "readconf.h" |
#include "readconf.h" |
|
|
/* XXX readconf.c needs these */ |
uid_t original_real_uid; /* XXX readconf.c needs this */ |
uid_t original_real_uid; |
|
|
|
static int |
static int |
valid_request(struct passwd *pw, char *host, Key **ret, u_char *data, |
valid_request(struct passwd *pw, char *host, Key **ret, u_char *data, |
u_int datalen) |
u_int datalen) |
{ |
{ |
Buffer b; |
Buffer b; |
Key *key = NULL; |
Key *key; |
u_char *pkblob; |
u_char *pkblob; |
u_int blen, len; |
u_int blen, len; |
char *pkalg, *p; |
char *pkalg, *p; |
|
|
keys[i] = key_load_private_pem(key_fd[i], KEY_UNSPEC, |
keys[i] = key_load_private_pem(key_fd[i], KEY_UNSPEC, |
NULL, NULL); |
NULL, NULL); |
close(key_fd[i]); |
close(key_fd[i]); |
|
if (keys[i] != NULL && keys[i]->type == KEY_RSA) { |
|
if (RSA_blinding_on(keys[i]->rsa, NULL) != 1) { |
|
error("RSA_blinding_on failed"); |
|
key_free(keys[i]); |
|
keys[i] = NULL; |
|
} |
|
} |
if (keys[i] != NULL) |
if (keys[i] != NULL) |
found = 1; |
found = 1; |
} |
} |
|
|
fatal("no hostkey found"); |
fatal("no hostkey found"); |
|
|
buffer_init(&b); |
buffer_init(&b); |
if (ssh_msg_recv(STDIN_FILENO, &b) < 0) |
if (msg_recv(STDIN_FILENO, &b) < 0) |
fatal("ssh_msg_recv failed"); |
fatal("msg_recv failed"); |
if (buffer_get_char(&b) != version) |
if (buffer_get_char(&b) != version) |
fatal("bad version"); |
fatal("bad version"); |
fd = buffer_get_int(&b); |
fd = buffer_get_int(&b); |
|
|
/* send reply */ |
/* send reply */ |
buffer_clear(&b); |
buffer_clear(&b); |
buffer_put_string(&b, signature, slen); |
buffer_put_string(&b, signature, slen); |
ssh_msg_send(STDOUT_FILENO, version, &b); |
msg_send(STDOUT_FILENO, version, &b); |
|
|
return (0); |
return (0); |
} |
} |