version 1.30, 2014/01/09 23:20:00 |
version 1.31, 2014/02/02 03:44:31 |
|
|
} |
} |
|
|
sig = DSA_do_sign(digest, dlen, key->dsa); |
sig = DSA_do_sign(digest, dlen, key->dsa); |
memset(digest, 'd', sizeof(digest)); |
explicit_bzero(digest, sizeof(digest)); |
|
|
if (sig == NULL) { |
if (sig == NULL) { |
error("ssh_dss_sign: sign failed"); |
error("ssh_dss_sign: sign failed"); |
|
|
DSA_SIG_free(sig); |
DSA_SIG_free(sig); |
return -1; |
return -1; |
} |
} |
memset(sigblob, 0, SIGBLOB_LEN); |
explicit_bzero(sigblob, SIGBLOB_LEN); |
BN_bn2bin(sig->r, sigblob+ SIGBLOB_LEN - INTBLOB_LEN - rlen); |
BN_bn2bin(sig->r, sigblob+ SIGBLOB_LEN - INTBLOB_LEN - rlen); |
BN_bn2bin(sig->s, sigblob+ SIGBLOB_LEN - slen); |
BN_bn2bin(sig->s, sigblob+ SIGBLOB_LEN - slen); |
DSA_SIG_free(sig); |
DSA_SIG_free(sig); |
|
|
fatal("%s: BN_bin2bn failed", __func__); |
fatal("%s: BN_bin2bn failed", __func__); |
|
|
/* clean up */ |
/* clean up */ |
memset(sigblob, 0, len); |
explicit_bzero(sigblob, len); |
free(sigblob); |
free(sigblob); |
|
|
/* sha1 the data */ |
/* sha1 the data */ |
|
|
} |
} |
|
|
ret = DSA_do_verify(digest, dlen, sig, key->dsa); |
ret = DSA_do_verify(digest, dlen, sig, key->dsa); |
memset(digest, 'd', sizeof(digest)); |
explicit_bzero(digest, sizeof(digest)); |
|
|
DSA_SIG_free(sig); |
DSA_SIG_free(sig); |
|
|