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 */