diff --git a/ChangeLog b/ChangeLog index 86886a8e8c5c07f5b9347fa8497c7c7d517997e9..7996f69241707cb925606ab8efdbb8b3971e4712 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2014-03-26 Niels Möller <nisse@lysator.liu.se> + * dsa.c (dsa_params_init, dsa_params_clear): New functions. + (dsa_public_key_init): Use dsa_params_init. + (dsa_public_key_clear): Use dsa_params_clear. + * sexp2dsa.c (dsa_keypair_from_sexp_alist): Converted to new DSA interface. Allow q_size == 0, meaning any q < p is allowed. Additional validity checks. diff --git a/dsa.c b/dsa.c index 0d241b79d16d3129eb053e188f24c3b329a954e2..cf036365bca15d0597d58afd23343b151b63a7b3 100644 --- a/dsa.c +++ b/dsa.c @@ -31,21 +31,33 @@ #include "bignum.h" +void +dsa_params_init (struct dsa_params *params) +{ + mpz_init(params->p); + mpz_init(params->q); + mpz_init(params->g); +} + +void +dsa_params_clear (struct dsa_params *params) +{ + mpz_clear(params->p); + mpz_clear(params->q); + mpz_clear(params->g); +} + void dsa_public_key_init(struct dsa_public_key *key) { - mpz_init(key->p); - mpz_init(key->q); - mpz_init(key->g); + dsa_params_init ((struct dsa_params *) key); mpz_init(key->y); } void dsa_public_key_clear(struct dsa_public_key *key) { - mpz_clear(key->p); - mpz_clear(key->q); - mpz_clear(key->g); + dsa_params_clear ((struct dsa_params *) key); mpz_clear(key->y); } diff --git a/dsa.h b/dsa.h index fa5e918bf495161fe6d7df094d443b3b21b6576b..e66918ed95aecb5bc980648310eacfebaa06e6e3 100644 --- a/dsa.h +++ b/dsa.h @@ -38,6 +38,8 @@ extern "C" { #endif /* Name mangling */ +#define dsa_params_init nettle_dsa_params_init +#define dsa_params_clear nettle_dsa_params_clear #define dsa_public_key_init nettle_dsa_public_key_init #define dsa_public_key_clear nettle_dsa_public_key_clear #define dsa_private_key_init nettle_dsa_private_key_init @@ -87,6 +89,12 @@ struct dsa_params mpz_t g; }; +void +dsa_params_init (struct dsa_params *params); + +void +dsa_params_clear (struct dsa_params *params); + struct dsa_public_key { /* Modulo */