提交 3613e6fc 编写于 作者: B Bodo Möller

simplifications

Submitted by: Nils Larsch
上级 f8e21776
...@@ -61,29 +61,10 @@ ...@@ -61,29 +61,10 @@
static point_conversion_form_t POINT_CONVERSION_FORM = POINT_CONVERSION_COMPRESSED; static point_conversion_form_t POINT_CONVERSION_FORM = POINT_CONVERSION_COMPRESSED;
/* Override the default new methods */ ASN1_SEQUENCE(ECDSA_SIG) = {
static int sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
{
if(operation == ASN1_OP_NEW_PRE) {
ECDSA_SIG *sig;
sig = OPENSSL_malloc(sizeof(ECDSA_SIG));
if (sig == NULL)
{
ECDSAerr(ECDSA_F_SIG_CB, ERR_R_MALLOC_FAILURE);
return 0;
}
sig->r = NULL;
sig->s = NULL;
*pval = (ASN1_VALUE *)sig;
return 2;
}
return 1;
}
ASN1_SEQUENCE_cb(ECDSA_SIG, sig_cb) = {
ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM), ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM),
ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM) ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM)
} ASN1_SEQUENCE_END_cb(ECDSA_SIG, ECDSA_SIG) } ASN1_SEQUENCE_END(ECDSA_SIG)
IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG) IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG)
...@@ -439,9 +420,7 @@ ECDSA *ECDSA_x9_62parameters2ecdsa(const X9_62_EC_PARAMETERS *params, EC ...@@ -439,9 +420,7 @@ ECDSA *ECDSA_x9_62parameters2ecdsa(const X9_62_EC_PARAMETERS *params, EC
if ((point = EC_POINT_new(ret->group)) == NULL) goto err; if ((point = EC_POINT_new(ret->group)) == NULL) goto err;
} }
else OPENSSL_ECDSA_ABORT(ECDSA_R_WRONG_FIELD_IDENTIFIER) else OPENSSL_ECDSA_ABORT(ECDSA_R_WRONG_FIELD_IDENTIFIER)
/* FIXME!!! It seems like the comparison of data with 0 isn't the if (params->curve->seed != NULL)
intended thing. */
if (params->curve->seed != NULL && params->curve->seed->data != 0)
{ {
if (ret->seed != NULL) if (ret->seed != NULL)
OPENSSL_free(ret->seed); OPENSSL_free(ret->seed);
......
...@@ -285,16 +285,20 @@ static ECDSA_SIG *ecdsa_do_sign(const unsigned char *dgst, int dgst_len, ECDSA * ...@@ -285,16 +285,20 @@ static ECDSA_SIG *ecdsa_do_sign(const unsigned char *dgst, int dgst_len, ECDSA *
reason = ECDSA_R_SIGNATURE_MALLOC_FAILED; reason = ECDSA_R_SIGNATURE_MALLOC_FAILED;
goto err; goto err;
} }
ret->r = r; if (BN_copy(ret->r, r) == NULL || BN_copy(ret->s, s) == NULL)
ret->s = s; {
ECDSA_SIG_free(ret);
ret = NULL;
reason = ERR_R_BN_LIB;
}
err: err:
if (!ret) if (!ret)
{ {
ECDSAerr(ECDSA_F_ECDSA_DO_SIGN,reason); ECDSAerr(ECDSA_F_ECDSA_DO_SIGN,reason);
BN_free(r);
BN_free(s);
} }
if (r != NULL) BN_clear_free(r);
if (s != NULL) BN_clear_free(s);
if (ctx != NULL) BN_CTX_free(ctx); if (ctx != NULL) BN_CTX_free(ctx);
if (m != NULL) BN_clear_free(m); if (m != NULL) BN_clear_free(m);
if (tmp != NULL) BN_clear_free(tmp); if (tmp != NULL) BN_clear_free(tmp);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册