+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
/* 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
# include "config.h"
#endif
+#include <assert.h>
+
#include "dsa.h"
#include "bignum.h"
}
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)
{
*/
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)
{
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));
}
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;
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);
/* 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
# 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);
}
/* 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
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 (¶ms);
+ dsa_value_init (&pub, ¶ms);
+ dsa_value_init (&priv, ¶ms);
+
+ if (dsa_openssl_private_key_from_der(¶ms, &pub, &priv, 0,
length, data))
{
/* Reuses the buffer */
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 (¶ms);
return res;
}