-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
/* ====================================================================
#include <openssl/x509.h>
#include <openssl/asn1.h>
#include <openssl/dh.h>
+#include <openssl/bn.h>
#include "asn1_locl.h"
static void int_dh_free(EVP_PKEY *pkey)
return 1;
err:
- if (pubkey)
+ if (public_key)
ASN1_INTEGER_free(public_key);
if (dh)
DH_free(dh);
static void update_buflen(const BIGNUM *b, size_t *pbuflen)
{
- int i;
+ size_t i;
if (!b)
return;
if (*pbuflen < (i = (size_t)BN_num_bytes(b)))
if (0)
{
err:
- DHerr(DH_F_DHPARAMS_PRINT,reason);
+ DHerr(DH_F_DO_DH_PRINT,reason);
}
if (m != NULL) OPENSSL_free(m);
return(ret);
return BN_num_bits(pkey->pkey.dh->p);
}
+static int dh_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
+ {
+ if ( BN_cmp(a->pkey.dh->p,b->pkey.dh->p) ||
+ BN_cmp(a->pkey.dh->g,b->pkey.dh->g))
+ return 0;
+ else
+ return 1;
+ }
+
static int dh_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
{
BIGNUM *a;
if ((a=BN_dup(from->pkey.dh->g)) == NULL)
return 0;
- if (to->pkey.dsa->g != NULL)
+ if (to->pkey.dh->g != NULL)
BN_free(to->pkey.dh->g);
to->pkey.dh->g=a;
return 1;
}
-static int dh_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
+static int dh_missing_parameters(const EVP_PKEY *a)
{
- if ( BN_cmp(a->pkey.dh->p,b->pkey.dsa->p) ||
- BN_cmp(a->pkey.dh->g,b->pkey.dsa->g))
- return 0;
- else
+ if (!a->pkey.dh->p || !a->pkey.dh->g)
return 1;
+ return 0;
}
static int dh_pub_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
dh_param_decode,
dh_param_encode,
- 0,
+ dh_missing_parameters,
dh_copy_parameters,
dh_cmp_parameters,
dh_param_print,
+ 0,
int_dh_free,
0