#include <openssl/err.h>
#include <openssl/bn.h>
-const char ECDSA_version[] = "ECDSA" OPENSSL_VERSION_PTEXT;
-
static const ECDSA_METHOD *default_ECDSA_method = NULL;
static void *ecdsa_data_new(void);
const ECDSA_METHOD *ECDSA_get_default_method(void)
{
- if (!default_ECDSA_method)
- default_ECDSA_method = ECDSA_OpenSSL();
return default_ECDSA_method;
}
{
ECDSA_DATA *ret;
- ret = (ECDSA_DATA *)OPENSSL_malloc(sizeof(ECDSA_DATA));
+ ret = OPENSSL_malloc(sizeof(*ret));
if (ret == NULL) {
ECDSAerr(ECDSA_F_ECDSA_DATA_NEW_METHOD, ERR_R_MALLOC_FAILURE);
return (NULL);
ret->flags = ret->meth->flags;
CRYPTO_new_ex_data(CRYPTO_EX_INDEX_ECDSA, ret, &ret->ex_data);
-#if 0
- if ((ret->meth->init != NULL) && !ret->meth->init(ret)) {
- CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDSA, ret, &ret->ex_data);
- OPENSSL_free(ret);
- ret = NULL;
- }
-#endif
return (ret);
}
#endif
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDSA, r, &r->ex_data);
- OPENSSL_cleanse((void *)r, sizeof(ECDSA_DATA));
-
- OPENSSL_free(r);
+ OPENSSL_clear_free((void *)r, sizeof(ECDSA_DATA));
}
ECDSA_DATA *ecdsa_check(EC_KEY *key)
return (ret);
}
-int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
- CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
-{
- return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ECDSA, argl, argp,
- new_func, dup_func, free_func);
-}
-
int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg)
{
ECDSA_DATA *ecdsa;
return (CRYPTO_get_ex_data(&ecdsa->ex_data, idx));
}
-ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_meth)
+ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_meth)
{
ECDSA_METHOD *ret;
- ret = OPENSSL_malloc(sizeof(ECDSA_METHOD));
+ ret = OPENSSL_zalloc(sizeof(*ret));
if (ret == NULL) {
ECDSAerr(ECDSA_F_ECDSA_METHOD_NEW, ERR_R_MALLOC_FAILURE);
return NULL;
if (ecdsa_meth)
*ret = *ecdsa_meth;
- else {
- ret->ecdsa_sign_setup = 0;
- ret->ecdsa_do_sign = 0;
- ret->ecdsa_do_verify = 0;
- ret->name = NULL;
- ret->flags = 0;
- }
ret->flags |= ECDSA_METHOD_FLAG_ALLOCATED;
return ret;
}
void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method)
{
+ if (!ecdsa_method)
+ return;
if (ecdsa_method->flags & ECDSA_METHOD_FLAG_ALLOCATED)
OPENSSL_free(ecdsa_method);
}