Add functions to set ECDSA_METHOD structure.
Add various functions to allocate and set the fields of an ECDSA_METHOD
structure.
(cherry picked from commit 94c2f77a62)
This commit is contained in:
@@ -283,3 +283,68 @@ void *ECDSA_get_ex_data(EC_KEY *d, int idx)
|
||||
return NULL;
|
||||
return(CRYPTO_get_ex_data(&ecdsa->ex_data,idx));
|
||||
}
|
||||
|
||||
ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_meth)
|
||||
{
|
||||
ECDSA_METHOD *ret;
|
||||
|
||||
ret = OPENSSL_malloc(sizeof(ECDSA_METHOD));
|
||||
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_set_sign(ECDSA_METHOD *ecdsa_method,
|
||||
ECDSA_SIG *(*ecdsa_do_sign)(const unsigned char *dgst, int dgst_len,
|
||||
const BIGNUM *inv, const BIGNUM *rp, EC_KEY *eckey))
|
||||
{
|
||||
ecdsa_method->ecdsa_do_sign = ecdsa_do_sign;
|
||||
}
|
||||
|
||||
void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method,
|
||||
int (*ecdsa_sign_setup)(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv,
|
||||
BIGNUM **r))
|
||||
{
|
||||
ecdsa_method->ecdsa_sign_setup = ecdsa_sign_setup;
|
||||
}
|
||||
|
||||
void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method,
|
||||
int (*ecdsa_do_verify)(const unsigned char *dgst, int dgst_len,
|
||||
const ECDSA_SIG *sig, EC_KEY *eckey))
|
||||
{
|
||||
ecdsa_method->ecdsa_do_verify = ecdsa_do_verify;
|
||||
}
|
||||
|
||||
void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags)
|
||||
{
|
||||
ecdsa_method->flags = flags | ECDSA_METHOD_FLAG_ALLOCATED;
|
||||
}
|
||||
|
||||
void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name)
|
||||
{
|
||||
ecdsa_method->name = name;
|
||||
}
|
||||
|
||||
void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method)
|
||||
{
|
||||
if (ecdsa_method->flags & ECDSA_METHOD_FLAG_ALLOCATED)
|
||||
OPENSSL_free(ecdsa_method);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user