]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Convert dsa_keypair_to_sexp and dsa_openssl_private_key_from_der to new DSA interface.
authorNiels Möller <nisse@lysator.liu.se>
Tue, 11 Mar 2014 16:08:18 +0000 (17:08 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Tue, 11 Mar 2014 16:08:18 +0000 (17:08 +0100)
ChangeLog
der2dsa.c
dsa.h
dsa2sexp.c
tools/pkcs1-conv.c

index ad5817aa5d7aef72b05657ab8ee683abc7a4de38..6287a7c11fe088017fea2174cb3d470049994b7d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2014-03-11  Niels Möller  <nisse@lysator.liu.se>
+
+       * tools/pkcs1-conv.c (convert_dsa_private_key): Use new DSA
+       interface.
+
+       * dsa.h (dsa_openssl_private_key_from_der_iterator)
+       (dsa_openssl_private_key_from_der, dsa_keypair_to_sexp): Updated
+       prototypes.
+
+       * der2dsa.c (dsa_openssl_private_key_from_der_iterator): Converted
+       to new DSA interface. This is an API change.
+       (dsa_openssl_private_key_from_der): Likewise.
+       * dsa2sexp.c (dsa_keypair_to_sexp): Likewise.
+
 2014-03-09  Niels Möller  <nisse@lysator.liu.se>
 
        * Makefile.in (hogweed_SOURCES): Added dsa-gen-params.c and
index 9d439c3e8cff8966b4dca89138db7657374beb9e..da63a75663113ad1e1e2a3c7d81736be8897edc9 100644 (file)
--- a/der2dsa.c
+++ b/der2dsa.c
@@ -5,7 +5,7 @@
 
 /* nettle, low-level cryptographics library
  *
- * Copyright (C) 2005, 2009 Niels Möller, Magnus Holmgren
+ * Copyright (C) 2005, 2009, 2014 Niels Möller, Magnus Holmgren
  *  
  * The nettle library is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -27,6 +27,8 @@
 # include "config.h"
 #endif
 
+#include <assert.h>
+
 #include "dsa.h"
 
 #include "bignum.h"
@@ -71,8 +73,9 @@ dsa_public_key_from_der_iterator(struct dsa_public_key *pub,
 }
 
 int
-dsa_openssl_private_key_from_der_iterator(struct dsa_public_key *pub,
-                                         struct dsa_private_key *priv,
+dsa_openssl_private_key_from_der_iterator(struct dsa_params *params,
+                                         struct dsa_value *pub,
+                                         struct dsa_value *priv,
                                          unsigned p_max_bits,
                                          struct asn1_der_iterator *i)
 {
@@ -87,23 +90,26 @@ dsa_openssl_private_key_from_der_iterator(struct dsa_public_key *pub,
   */
 
   uint32_t version;
-  
+
+  assert (pub->params == params);
+  assert (priv->params == params);
   return (i->type == ASN1_SEQUENCE
          && asn1_der_decode_constructed_last(i) == ASN1_ITERATOR_PRIMITIVE
          && i->type == ASN1_INTEGER
          && asn1_der_get_uint32(i, &version)
          && version == 0
-         && GET(i, pub->p, p_max_bits)
-         && GET(i, pub->q, DSA_SHA1_Q_BITS)
-         && GET(i, pub->g, p_max_bits)
-         && GET(i, pub->y, p_max_bits)
+         && GET(i, params->p, p_max_bits)
+         && GET(i, params->q, DSA_SHA1_Q_BITS)
+         && GET(i, params->g, p_max_bits)
+         && GET(i, pub->x, p_max_bits)
          && GET(i, priv->x, DSA_SHA1_Q_BITS)
          && asn1_der_iterator_next(i) == ASN1_ITERATOR_END);
 }
 
 int
-dsa_openssl_private_key_from_der(struct dsa_public_key *pub,
-                                struct dsa_private_key *priv,
+dsa_openssl_private_key_from_der(struct dsa_params *params,
+                                struct dsa_value *pub,
+                                struct dsa_value *priv,
                                 unsigned p_max_bits,
                                 size_t length, const uint8_t *data)
 {
@@ -113,5 +119,6 @@ dsa_openssl_private_key_from_der(struct dsa_public_key *pub,
   res = asn1_der_iterator_first(&i, length, data);
 
   return (res == ASN1_ITERATOR_CONSTRUCTED
-         && dsa_openssl_private_key_from_der_iterator(pub, priv, p_max_bits, &i));
+         && dsa_openssl_private_key_from_der_iterator(params, pub, priv,
+                                                      p_max_bits, &i));
 }
diff --git a/dsa.h b/dsa.h
index e2e6a04f1c424d672a9cde9ca91fdff85182c303..72a9277ba33cee7a1334f1185702b6b5388e0c2d 100644 (file)
--- a/dsa.h
+++ b/dsa.h
@@ -280,8 +280,8 @@ struct nettle_buffer;
 int
 dsa_keypair_to_sexp(struct nettle_buffer *buffer,
                    const char *algorithm_name, /* NULL means "dsa" */
-                   const struct dsa_public_key *pub,
-                   const struct dsa_private_key *priv);
+                   const struct dsa_value *pub,
+                   const struct dsa_value *priv);
 
 struct sexp_iterator;
 
@@ -326,15 +326,17 @@ dsa_public_key_from_der_iterator(struct dsa_public_key *pub,
                                 struct asn1_der_iterator *i);
 
 int
-dsa_openssl_private_key_from_der_iterator(struct dsa_public_key *pub,
-                                         struct dsa_private_key *priv,
+dsa_openssl_private_key_from_der_iterator(struct dsa_params *params,
+                                         struct dsa_value *pub,
+                                         struct dsa_value *priv,
                                          unsigned p_max_bits,
                                          struct asn1_der_iterator *i);
 
 int
-dsa_openssl_private_key_from_der(struct dsa_public_key *pub,
-                                struct dsa_private_key *priv,
-                                unsigned p_max_bits, 
+dsa_openssl_private_key_from_der(struct dsa_params *params,
+                                struct dsa_value *pub,
+                                struct dsa_value *priv,
+                                unsigned p_max_bits,
                                 size_t length, const uint8_t *data);
 
 
index 2fc6d29f45b9206a4ca9c3a845768d0a1488af10..45cbb2e2af55f36befea281d12170357ec02c725 100644 (file)
@@ -4,7 +4,7 @@
 
 /* nettle, low-level cryptographics library
  *
- * Copyright (C) 2002, 2009 Niels Möller, Magnus Holmgren
+ * Copyright (C) 2002, 2009, 2014 Niels Möller, Magnus Holmgren
  *  
  * The nettle library is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -26,6 +26,8 @@
 # include "config.h"
 #endif
 
+#include <assert.h>
+
 #include "dsa.h"
 
 #include "sexp.h"
 int
 dsa_keypair_to_sexp(struct nettle_buffer *buffer,
                    const char *algorithm_name,
-                   const struct dsa_public_key *pub,
-                   const struct dsa_private_key *priv)
+                   const struct dsa_value *pub,
+                   const struct dsa_value *priv)
 {
+  const struct dsa_params *params = pub->params;
   if (!algorithm_name)
     algorithm_name = "dsa";
-  
+
   if (priv)
-    return sexp_format(buffer,
-                      "(private-key(%0s(p%b)(q%b)"
+    {
+      assert (priv->params == params);
+      return sexp_format(buffer,
+                        "(private-key(%0s(p%b)(q%b)"
                       "(g%b)(y%b)(x%b)))",
-                      algorithm_name, pub->p, pub->q,
-                      pub->g, pub->y, priv->x);
+                        algorithm_name, params->p, params->q,
+                        params->g, pub->x, priv->x);
+    }
   else
     return sexp_format(buffer,
                       "(public-key(%0s(p%b)(q%b)"
                       "(g%b)(y%b)))",
-                      algorithm_name, pub->p, pub->q,
-                      pub->g, pub->y);
+                      algorithm_name, params->p, params->q,
+                      params->g, pub->x);
 }
index 13b9ba05c156b5df8489ab3ddef470db8b2a81ff..e55f773851da707be8b456b3478456bac15e232d 100644 (file)
@@ -4,7 +4,7 @@
 
 /* nettle, low-level cryptographics library
  *
- * Copyright (C) 2005, 2009 Niels Möller, Magnus Holmgren
+ * Copyright (C) 2005, 2009, 2014 Niels Möller, Magnus Holmgren
  *  
  * The nettle library is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -311,14 +311,16 @@ convert_rsa_private_key(struct nettle_buffer *buffer, size_t length, const uint8
 static int
 convert_dsa_private_key(struct nettle_buffer *buffer, size_t length, const uint8_t *data)
 {
-  struct dsa_public_key pub;
-  struct dsa_private_key priv;
+  struct dsa_params params;
+  struct dsa_value pub;
+  struct dsa_value priv;
   int res;
-  
-  dsa_public_key_init(&pub);
-  dsa_private_key_init(&priv);
 
-  if (dsa_openssl_private_key_from_der(&pub, &priv, 0,
+  dsa_params_init (&params);
+  dsa_value_init (&pub, &params);
+  dsa_value_init (&priv, &params);
+
+  if (dsa_openssl_private_key_from_der(&params, &pub, &priv, 0,
                                       length, data))
     {
       /* Reuses the buffer */
@@ -330,9 +332,9 @@ convert_dsa_private_key(struct nettle_buffer *buffer, size_t length, const uint8
       werror("Invalid OpenSSL private key.\n");
       res = 0;
     }
-  dsa_public_key_clear(&pub);
-  dsa_private_key_clear(&priv);
-
+  dsa_value_clear (&pub);
+  dsa_value_clear (&priv);
+  dsa_params_clear (&params);
   return res;
 }