From 38edca975bfda4fd3f57651ae14f567bafb5f9ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Wed, 26 Mar 2014 22:02:19 +0100
Subject: [PATCH] New functions dsa_params_init and dsa_params_clear.

---
 ChangeLog |  4 ++++
 dsa.c     | 24 ++++++++++++++++++------
 dsa.h     |  8 ++++++++
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 86886a8e..7996f692 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 0d241b79..cf036365 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 fa5e918b..e66918ed 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 */
-- 
GitLab