version 1.12, 2000/11/12 19:50:37 |
version 1.13, 2000/12/19 23:17:56 |
|
|
key_fingerprint(Key *k) |
key_fingerprint(Key *k) |
{ |
{ |
static char retval[(EVP_MAX_MD_SIZE+1)*3]; |
static char retval[(EVP_MAX_MD_SIZE+1)*3]; |
unsigned char *blob = NULL; |
u_char *blob = NULL; |
int len = 0; |
int len = 0; |
int nlen, elen; |
int nlen, elen; |
|
|
|
|
} |
} |
if (blob != NULL) { |
if (blob != NULL) { |
int i; |
int i; |
unsigned char digest[EVP_MAX_MD_SIZE]; |
u_char digest[EVP_MAX_MD_SIZE]; |
EVP_MD *md = EVP_md5(); |
EVP_MD *md = EVP_md5(); |
EVP_MD_CTX ctx; |
EVP_MD_CTX ctx; |
EVP_DigestInit(&ctx, md); |
EVP_DigestInit(&ctx, md); |
|
|
char *cp, *space; |
char *cp, *space; |
int len, n, type; |
int len, n, type; |
u_int bits; |
u_int bits; |
unsigned char *blob; |
u_char *blob; |
|
|
cp = *cpp; |
cp = *cpp; |
|
|
|
|
key_write(Key *key, FILE *f) |
key_write(Key *key, FILE *f) |
{ |
{ |
int success = 0; |
int success = 0; |
unsigned int bits = 0; |
u_int bits = 0; |
|
|
if (key->type == KEY_RSA1 && key->rsa != NULL) { |
if (key->type == KEY_RSA1 && key->rsa != NULL) { |
/* size of modulus 'n' */ |
/* size of modulus 'n' */ |
|
|
} else if ((key->type == KEY_DSA && key->dsa != NULL) || |
} else if ((key->type == KEY_DSA && key->dsa != NULL) || |
(key->type == KEY_RSA && key->rsa != NULL)) { |
(key->type == KEY_RSA && key->rsa != NULL)) { |
int len, n; |
int len, n; |
unsigned char *blob, *uu; |
u_char *blob, *uu; |
key_to_blob(key, &blob, &len); |
key_to_blob(key, &blob, &len); |
uu = xmalloc(2*len); |
uu = xmalloc(2*len); |
n = uuencode(blob, len, uu, 2*len); |
n = uuencode(blob, len, uu, 2*len); |
|
|
} |
} |
|
|
RSA * |
RSA * |
rsa_generate_private_key(unsigned int bits) |
rsa_generate_private_key(u_int bits) |
{ |
{ |
RSA *private; |
RSA *private; |
private = RSA_generate_key(bits, 35, NULL, NULL); |
private = RSA_generate_key(bits, 35, NULL, NULL); |
|
|
} |
} |
|
|
DSA* |
DSA* |
dsa_generate_private_key(unsigned int bits) |
dsa_generate_private_key(u_int bits) |
{ |
{ |
DSA *private = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, NULL, NULL); |
DSA *private = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, NULL, NULL); |
if (private == NULL) |
if (private == NULL) |
|
|
} |
} |
|
|
Key * |
Key * |
key_generate(int type, unsigned int bits) |
key_generate(int type, u_int bits) |
{ |
{ |
Key *k = key_new(KEY_UNSPEC); |
Key *k = key_new(KEY_UNSPEC); |
switch (type) { |
switch (type) { |
|
|
} |
} |
|
|
int |
int |
key_to_blob(Key *key, unsigned char **blobp, unsigned int *lenp) |
key_to_blob(Key *key, u_char **blobp, u_int *lenp) |
{ |
{ |
Buffer b; |
Buffer b; |
int len; |
int len; |
unsigned char *buf; |
u_char *buf; |
|
|
if (key == NULL) { |
if (key == NULL) { |
error("key_to_blob: key == NULL"); |
error("key_to_blob: key == NULL"); |
|
|
int |
int |
key_sign( |
key_sign( |
Key *key, |
Key *key, |
unsigned char **sigp, int *lenp, |
u_char **sigp, int *lenp, |
unsigned char *data, int datalen) |
u_char *data, int datalen) |
{ |
{ |
switch(key->type){ |
switch(key->type){ |
case KEY_DSA: |
case KEY_DSA: |
|
|
int |
int |
key_verify( |
key_verify( |
Key *key, |
Key *key, |
unsigned char *signature, int signaturelen, |
u_char *signature, int signaturelen, |
unsigned char *data, int datalen) |
u_char *data, int datalen) |
{ |
{ |
switch(key->type){ |
switch(key->type){ |
case KEY_DSA: |
case KEY_DSA: |