From 70434af413c6ba0a618977f62735a85d1c36a0ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sat, 6 Feb 2016 09:14:30 +0100
Subject: [PATCH] Update libspki for nettle-3.

---
 spki/ChangeLog |  5 +++++
 spki/verify.c  | 28 ++++++++++++++++++----------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/spki/ChangeLog b/spki/ChangeLog
index 4aa0ce1f7..2363cc672 100644
--- a/spki/ChangeLog
+++ b/spki/ChangeLog
@@ -1,3 +1,8 @@
+2016-02-06  Niels Möller  <nisse@lysator.liu.se>
+
+	* verify.c (spki_verify_dsa_sha1, spki_verify_dsa_sha256): Update
+	for nettle-3.
+
 2012-07-13  Niels Möller  <nisse@lysator.liu.se>
 
 	Always use the installed nettle library, don't look for it in the
diff --git a/spki/verify.c b/spki/verify.c
index 6f16a9d71..13f1abd72 100644
--- a/spki/verify.c
+++ b/spki/verify.c
@@ -70,22 +70,26 @@ spki_verify_dsa_sha1(const uint8_t *digest,
 		     struct spki_iterator *key,
 		     struct spki_iterator *signature)
 {
-  struct dsa_public_key dsa;
+  struct dsa_params dsa_params;
+  mpz_t dsa_pub;
   struct dsa_signature rs;
   int res;
 
-  dsa_public_key_init(&dsa);
+  dsa_params_init(&dsa_params);
+  mpz_init(dsa_pub);
   dsa_signature_init(&rs);
 
-  res = (dsa_keypair_from_sexp_alist(&dsa, NULL,
+  res = (dsa_keypair_from_sexp_alist(&dsa_params, dsa_pub, NULL,
 				     DSA_SHA1_KEYSIZE_LIMIT,
 				     DSA_SHA1_Q_BITS, &key->sexp)
 	 && spki_parse_end(key)
 	 && dsa_signature_from_sexp(&rs, &signature->sexp, DSA_SHA1_Q_BITS)
-	 && dsa_sha1_verify_digest(&dsa, digest, &rs));
+	 && dsa_verify(&dsa_params, dsa_pub,
+		       SHA1_DIGEST_SIZE, digest, &rs));
 
   dsa_signature_clear(&rs);
-  dsa_public_key_clear(&dsa);
+  mpz_clear(dsa_pub);
+  dsa_params_clear(&dsa_params);
 
   return res;    
 }
@@ -95,23 +99,27 @@ spki_verify_dsa_sha256(const uint8_t *digest,
 		       struct spki_iterator *key,
 		       struct spki_iterator *signature)
 {
-  struct dsa_public_key dsa;
+  struct dsa_params dsa_params;
+  mpz_t dsa_pub;
   struct dsa_signature rs;
   int res;
 
-  dsa_public_key_init(&dsa);
+  dsa_params_init(&dsa_params);
+  mpz_init(dsa_pub);
   dsa_signature_init(&rs);
 
-  res = (dsa_keypair_from_sexp_alist(&dsa, NULL,
+  res = (dsa_keypair_from_sexp_alist(&dsa_params, dsa_pub, NULL,
 				     DSA_SHA256_KEYSIZE_LIMIT,
 				     DSA_SHA256_Q_BITS, &key->sexp)
 	 && spki_parse_end(key)
 	 && dsa_signature_from_sexp(&rs, &signature->sexp,
 				    DSA_SHA256_Q_BITS)
-	 && dsa_sha256_verify_digest(&dsa, digest, &rs));
+	 && dsa_verify(&dsa_params, dsa_pub,
+		       SHA256_DIGEST_SIZE, digest, &rs));
 
   dsa_signature_clear(&rs);
-  dsa_public_key_clear(&dsa);
+  mpz_clear(dsa_pub);
+  dsa_params_clear(&dsa_params);
 
   return res;    
 }
-- 
GitLab