On Thu, Feb 10, 2005, Oily Pakora wrote:

> Friends,
> 
> When compiling a program on Win32, the following line of code generates an 
> error message:
> 
> *plLen = i2d_ASN1_SET_OF_X509_EXTENSION(exts, NULL, i2d_X509_EXTENSION,
>                       V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, IS_SEQUENCE);
> 
> The error I get is:
> 
> error C2664: 'i2d_ASN1_SET' : cannot convert parameter 3 from 
> 'int (X509_EXTENSION *,unsigned char ** )' to 'int (__cdecl *)(void)'
> 
> On UNIX systems, the code seems to compile fine.  This is the first time I am 
> trying it
> on Win32.  Any quick tip on how I might be calling this wrong?
> 

Are you using C++ by any chance? Coudl be a conflict between int func() which
can be interpreted as unspecified arguments in C and no arguments in C++.
You could use a function pointer cast.

i2d_ASN1_SET_OF_<foo>() isn't the best way of doing that any more. The new
template code is preferred. Something like:

typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;


ASN1_ITEM_TEMPLATE(X509_EXTENSIONS) =
        ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, Extensions,
                X509_EXTENSION)
                ASN1_ITEM_TEMPLATE_END(X509_EXTENSIONS)

                IMPLEMENT_ASN1_FUNCTIONS(X509_EXTENSIONS)

then use i2d_X509_EXTENSIONS().

Which reminds me.. we should really have a definition of X509_EXTENSIONS
in the core code.
                
Steve.
--
Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage
OpenSSL project core developer and freelance consultant.
Funding needed! Details on homepage.
Homepage: http://www.drh-consultancy.demon.co.uk
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to