version 1.60, 2006/03/20 11:38:46 |
version 1.61, 2006/03/20 17:10:19 |
|
|
return a->rsa != NULL && b->rsa != NULL && |
return a->rsa != NULL && b->rsa != NULL && |
BN_cmp(a->rsa->e, b->rsa->e) == 0 && |
BN_cmp(a->rsa->e, b->rsa->e) == 0 && |
BN_cmp(a->rsa->n, b->rsa->n) == 0; |
BN_cmp(a->rsa->n, b->rsa->n) == 0; |
break; |
|
case KEY_DSA: |
case KEY_DSA: |
return a->dsa != NULL && b->dsa != NULL && |
return a->dsa != NULL && b->dsa != NULL && |
BN_cmp(a->dsa->p, b->dsa->p) == 0 && |
BN_cmp(a->dsa->p, b->dsa->p) == 0 && |
BN_cmp(a->dsa->q, b->dsa->q) == 0 && |
BN_cmp(a->dsa->q, b->dsa->q) == 0 && |
BN_cmp(a->dsa->g, b->dsa->g) == 0 && |
BN_cmp(a->dsa->g, b->dsa->g) == 0 && |
BN_cmp(a->dsa->pub_key, b->dsa->pub_key) == 0; |
BN_cmp(a->dsa->pub_key, b->dsa->pub_key) == 0; |
break; |
|
default: |
default: |
fatal("key_equal: bad key type %d", a->type); |
fatal("key_equal: bad key type %d", a->type); |
break; |
break; |
|
|
break; |
break; |
case KEY_UNSPEC: |
case KEY_UNSPEC: |
return retval; |
return retval; |
break; |
|
default: |
default: |
fatal("key_fingerprint_raw: bad key type %d", k->type); |
fatal("key_fingerprint_raw: bad key type %d", k->type); |
break; |
break; |
|
|
switch (k->type) { |
switch (k->type) { |
case KEY_RSA1: |
case KEY_RSA1: |
return "RSA1"; |
return "RSA1"; |
break; |
|
case KEY_RSA: |
case KEY_RSA: |
return "RSA"; |
return "RSA"; |
break; |
|
case KEY_DSA: |
case KEY_DSA: |
return "DSA"; |
return "DSA"; |
break; |
|
} |
} |
return "unknown"; |
return "unknown"; |
} |
} |
|
|
switch (k->type) { |
switch (k->type) { |
case KEY_RSA: |
case KEY_RSA: |
return "ssh-rsa"; |
return "ssh-rsa"; |
break; |
|
case KEY_DSA: |
case KEY_DSA: |
return "ssh-dss"; |
return "ssh-dss"; |
break; |
|
} |
} |
return "ssh-unknown"; |
return "ssh-unknown"; |
} |
} |
|
|
case KEY_RSA1: |
case KEY_RSA1: |
case KEY_RSA: |
case KEY_RSA: |
return BN_num_bits(k->rsa->n); |
return BN_num_bits(k->rsa->n); |
break; |
|
case KEY_DSA: |
case KEY_DSA: |
return BN_num_bits(k->dsa->p); |
return BN_num_bits(k->dsa->p); |
break; |
|
} |
} |
return 0; |
return 0; |
} |
} |
|
|
rsa_generate_private_key(u_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); |
if (private == NULL) |
if (private == NULL) |
fatal("rsa_generate_private_key: key generation failed."); |
fatal("rsa_generate_private_key: key generation failed."); |
|
|
dsa_generate_private_key(u_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) |
fatal("dsa_generate_private_key: DSA_generate_parameters failed"); |
fatal("dsa_generate_private_key: DSA_generate_parameters failed"); |
if (!DSA_generate_key(private)) |
if (!DSA_generate_key(private)) |
|
|
switch (key->type) { |
switch (key->type) { |
case KEY_DSA: |
case KEY_DSA: |
return ssh_dss_sign(key, sigp, lenp, data, datalen); |
return ssh_dss_sign(key, sigp, lenp, data, datalen); |
break; |
|
case KEY_RSA: |
case KEY_RSA: |
return ssh_rsa_sign(key, sigp, lenp, data, datalen); |
return ssh_rsa_sign(key, sigp, lenp, data, datalen); |
break; |
|
default: |
default: |
error("key_sign: invalid key type %d", key->type); |
error("key_sign: invalid key type %d", key->type); |
return -1; |
return -1; |
break; |
|
} |
} |
} |
} |
|
|
|
|
switch (key->type) { |
switch (key->type) { |
case KEY_DSA: |
case KEY_DSA: |
return ssh_dss_verify(key, signature, signaturelen, data, datalen); |
return ssh_dss_verify(key, signature, signaturelen, data, datalen); |
break; |
|
case KEY_RSA: |
case KEY_RSA: |
return ssh_rsa_verify(key, signature, signaturelen, data, datalen); |
return ssh_rsa_verify(key, signature, signaturelen, data, datalen); |
break; |
|
default: |
default: |
error("key_verify: invalid key type %d", key->type); |
error("key_verify: invalid key type %d", key->type); |
return -1; |
return -1; |
break; |
|
} |
} |
} |
} |
|
|