version 1.2, 2000/12/19 23:17:58 |
version 1.3, 2001/01/19 16:50:58 |
|
|
EVP_MD_CTX md; |
EVP_MD_CTX md; |
u_int rlen; |
u_int rlen; |
u_int slen; |
u_int slen; |
u_int len; |
u_int len, dlen; |
u_char sigblob[SIGBLOB_LEN]; |
u_char sigblob[SIGBLOB_LEN]; |
Buffer b; |
Buffer b; |
|
|
|
|
error("ssh_dss_sign: no DSA key"); |
error("ssh_dss_sign: no DSA key"); |
return -1; |
return -1; |
} |
} |
digest = xmalloc(evp_md->md_size); |
dlen = evp_md->md_size; |
|
digest = xmalloc(dlen); |
EVP_DigestInit(&md, evp_md); |
EVP_DigestInit(&md, evp_md); |
EVP_DigestUpdate(&md, data, datalen); |
EVP_DigestUpdate(&md, data, datalen); |
EVP_DigestFinal(&md, digest, NULL); |
EVP_DigestFinal(&md, digest, NULL); |
|
|
sig = DSA_do_sign(digest, evp_md->md_size, key->dsa); |
sig = DSA_do_sign(digest, dlen, key->dsa); |
if (sig == NULL) { |
if (sig == NULL) { |
fatal("ssh_dss_sign: cannot sign"); |
fatal("ssh_dss_sign: cannot sign"); |
} |
} |
|
memset(digest, 0, dlen); |
|
xfree(digest); |
|
|
rlen = BN_num_bytes(sig->r); |
rlen = BN_num_bytes(sig->r); |
slen = BN_num_bytes(sig->s); |
slen = BN_num_bytes(sig->s); |