Any reason for this:

> /* Override the default new methods */
>   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, s, CBIGNUM)
>   } ASN1_SEQUENCE_END_cb(ECDSA_SIG, ECDSA_SIG)
>  

What this actually does is to override the default ASN1 "new" behaviour:
this should be avoided in new code where possible. If the original new
behaviour is retained it will be identical except it will populate
sig->r, sig->s using BN_new(). Shouldn't be a problem provided the
relevant assignment code takes note of this.

This actually looks identical to the DSA_SIG code. In that case
DSA_new() already existed and didn't allocate BIGNUMs for 'r' and 's' so
it has to override the default behaviour to avoid breaking existing
code.

Steve.
-- 
Dr Stephen N. Henson.   http://www.drh-consultancy.demon.co.uk/
Personal Email: [EMAIL PROTECTED] 
Senior crypto engineer, Gemplus: http://www.gemplus.com/
Core developer of the   OpenSSL project: http://www.openssl.org/
Business Email: [EMAIL PROTECTED] PGP key: via homepage.

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to