version 1.8, 2001/03/27 10:57:00 |
version 1.8.2.2, 2001/11/15 22:51:15 |
|
|
error("ssh_rsa_sign: no RSA key"); |
error("ssh_rsa_sign: no RSA key"); |
return -1; |
return -1; |
} |
} |
|
if (datafellows & SSH_BUG_SIGBLOB) { |
|
error("ssh_rsa_sign: SSH_BUG_SIGBLOB not supported"); |
|
return -1; |
|
} |
nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1; |
nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1; |
if ((evp_md = EVP_get_digestbynid(nid)) == NULL) { |
if ((evp_md = EVP_get_digestbynid(nid)) == NULL) { |
error("ssh_rsa_sign: EVP_get_digestbynid %d failed", nid); |
error("ssh_rsa_sign: EVP_get_digestbynid %d failed", nid); |
|
|
*lenp = len; |
*lenp = len; |
if (sigp != NULL) |
if (sigp != NULL) |
*sigp = ret; |
*sigp = ret; |
debug2("ssh_rsa_sign: done"); |
|
return 0; |
return 0; |
} |
} |
|
|
|
|
error("ssh_rsa_verify: no RSA key"); |
error("ssh_rsa_verify: no RSA key"); |
return -1; |
return -1; |
} |
} |
|
if (datafellows & SSH_BUG_SIGBLOB) { |
|
error("ssh_rsa_verify: SSH_BUG_SIGBLOB not supported"); |
|
return -1; |
|
} |
if (BN_num_bits(key->rsa->n) < 768) { |
if (BN_num_bits(key->rsa->n) < 768) { |
error("ssh_rsa_verify: n too small: %d bits", |
error("ssh_rsa_verify: n too small: %d bits", |
BN_num_bits(key->rsa->n)); |
BN_num_bits(key->rsa->n)); |
return -1; |
return -1; |
} |
} |
buffer_init(&b); |
buffer_init(&b); |
buffer_append(&b, (char *) signature, signaturelen); |
buffer_append(&b, signature, signaturelen); |
ktype = buffer_get_string(&b, NULL); |
ktype = buffer_get_string(&b, NULL); |
if (strcmp("ssh-rsa", ktype) != 0) { |
if (strcmp("ssh-rsa", ktype) != 0) { |
error("ssh_rsa_verify: cannot handle type %s", ktype); |
error("ssh_rsa_verify: cannot handle type %s", ktype); |
|
|
return -1; |
return -1; |
} |
} |
xfree(ktype); |
xfree(ktype); |
sigblob = (u_char *)buffer_get_string(&b, &len); |
sigblob = buffer_get_string(&b, &len); |
rlen = buffer_len(&b); |
rlen = buffer_len(&b); |
buffer_free(&b); |
buffer_free(&b); |
if(rlen != 0) { |
if(rlen != 0) { |
xfree(sigblob); |
|
error("ssh_rsa_verify: remaining bytes in signature %d", rlen); |
error("ssh_rsa_verify: remaining bytes in signature %d", rlen); |
|
xfree(sigblob); |
return -1; |
return -1; |
} |
} |
nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1; |
nid = (datafellows & SSH_BUG_RSASIGMD5) ? NID_md5 : NID_sha1; |
if ((evp_md = EVP_get_digestbynid(nid)) == NULL) { |
if ((evp_md = EVP_get_digestbynid(nid)) == NULL) { |
xfree(sigblob); |
|
error("ssh_rsa_verify: EVP_get_digestbynid %d failed", nid); |
error("ssh_rsa_verify: EVP_get_digestbynid %d failed", nid); |
|
xfree(sigblob); |
return -1; |
return -1; |
} |
} |
dlen = evp_md->md_size; |
dlen = evp_md->md_size; |