@@ -18,22 +18,7 @@
void dh_free(dh_key *key)
{
LTC_ARGCHKVD(key != NULL);
- if ( key->base ) {
- mp_clear( key->base );
- key->base = NULL;
- }
- if ( key->prime ) {
- mp_clear( key->prime );
- key->prime = NULL;
- if ( key->x ) {
- mp_clear( key->x );
- key->x = NULL;
- if ( key->y ) {
- mp_clear( key->y );
- key->y = NULL;
+ mp_cleanup_multi(&key->base, &key->prime, &key->x, &key->y, NULL);
}
#endif /* LTC_MDH */
@@ -22,7 +22,8 @@
void dsa_free(dsa_key *key)
- mp_clear_multi(key->g, key->q, key->p, key->x, key->y, NULL);
+ mp_cleanup_multi(&key->g, &key->q, &key->p, &key->x, &key->y, NULL);
+ key->type = key->qord = 0;
#endif
@@ -22,7 +22,7 @@
void rsa_free(rsa_key *key)
- mp_clear_multi(key->q, key->p, key->qP, key->dP, key->dQ, key->N, key->d, key->e, NULL);
+ mp_cleanup_multi(&key->q, &key->p, &key->qP, &key->dP, &key->dQ, &key->N, &key->d, &key->e, NULL);