version 1.82.2.4, 2002/06/22 07:23:18 |
version 1.95, 2002/03/21 16:54:53 |
|
|
} |
} |
|
|
#define SSH_COM_PUBLIC_BEGIN "---- BEGIN SSH2 PUBLIC KEY ----" |
#define SSH_COM_PUBLIC_BEGIN "---- BEGIN SSH2 PUBLIC KEY ----" |
#define SSH_COM_PUBLIC_END "---- END SSH2 PUBLIC KEY ----" |
#define SSH_COM_PUBLIC_END "---- END SSH2 PUBLIC KEY ----" |
#define SSH_COM_PRIVATE_BEGIN "---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----" |
#define SSH_COM_PRIVATE_BEGIN "---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----" |
#define SSH_COM_PRIVATE_KEY_MAGIC 0x3f6ff9eb |
#define SSH_COM_PRIVATE_KEY_MAGIC 0x3f6ff9eb |
|
|
|
|
{ |
{ |
Key *k; |
Key *k; |
int blen; |
int blen; |
u_int len; |
|
char line[1024], *p; |
char line[1024], *p; |
u_char blob[8096]; |
u_char blob[8096]; |
char encoded[8096]; |
char encoded[8096]; |
|
|
*p = '\0'; |
*p = '\0'; |
strlcat(encoded, line, sizeof(encoded)); |
strlcat(encoded, line, sizeof(encoded)); |
} |
} |
len = strlen(encoded); |
|
if (((len % 4) == 3) && |
|
(encoded[len-1] == '=') && |
|
(encoded[len-2] == '=') && |
|
(encoded[len-3] == '=')) |
|
encoded[len-3] = '\0'; |
|
blen = uudecode(encoded, blob, sizeof(blob)); |
blen = uudecode(encoded, blob, sizeof(blob)); |
if (blen < 0) { |
if (blen < 0) { |
fprintf(stderr, "uudecode failed.\n"); |
fprintf(stderr, "uudecode failed.\n"); |
|
|
key_free(prv); |
key_free(prv); |
if (ret < 0) |
if (ret < 0) |
exit(1); |
exit(1); |
log("loading key done"); |
log("loading key done"); |
exit(0); |
exit(0); |
} |
} |
|
|
static void |
static void |
do_download(struct passwd *pw, const char *sc_reader_id) |
do_download(struct passwd *pw, const char *sc_reader_id) |
{ |
{ |
Key **keys = NULL; |
Key *pub = NULL; |
int i; |
|
|
|
keys = sc_get_keys(sc_reader_id, NULL); |
pub = sc_get_key(sc_reader_id); |
if (keys == NULL) |
if (pub == NULL) |
fatal("cannot read public key from smartcard"); |
fatal("cannot read public key from smartcard"); |
for (i = 0; keys[i]; i++) { |
key_write(pub, stdout); |
key_write(keys[i], stdout); |
key_free(pub); |
key_free(keys[i]); |
fprintf(stdout, "\n"); |
fprintf(stdout, "\n"); |
|
} |
|
xfree(keys); |
|
exit(0); |
exit(0); |
} |
} |
#endif /* SMARTCARD */ |
#endif /* SMARTCARD */ |