Dear devs,

   I am writing a SCVP implementation using OpenSSL. 

I can encode a request using i2d_SCVP_REQ, but when i try to decode it using 
d2i_SCVP_REQ i get the following error :
    
3620:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong 
tag:.\crypto\asn1\tasn_dec.c:1294:
3620:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 
error:.\crypto\asn1\tasn_dec.c:830:
3620:error:0D08303A:asn1 encoding
routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1
error:.\crypto\asn1\tasn_dec.c:710:Field=wantBack, Type=SCVP_QUERY
3620:error:0D08303A:asn1 encoding
routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1
error:.\crypto\asn1\tasn_dec.c:749:Field=query, Type=SCVP_REQ

   The 2 structures are defined as follows :

        typedef struct scvp_request_st
    {
        ASN1_INTEGER *cvRequestVersion;
        SCVP_QUERY *query;
        GENERAL_NAME *requestorRef;
        ASN1_OCTET_STRING *requestNonce;
        GENERAL_NAME *requestorName;
        GENERAL_NAME *responderName;
        X509_EXTENSION *requestExtensions;
        X509_ALGOR *signatureAlg;
        ASN1_OBJECT *hashAlg;
        ASN1_UTF8STRING *requestorText;
    } SCVP_REQ;

    And SCVP_QUERY is :

        typedef struct scvp_query_st
    {
        SCVP_CERTREFS* queriedCerts;
        STACK_OF(ASN1_OBJECT) *checks;
        STACK_OF(ASN1_OBJECT) *wantBack;
        SCVP_VALPOL *validationPolicy;
        SCVP_RESPFLAGS *responseFlags;
        ASN1_OCTET_STRING *serverContextInfo;
        ASN1_GENERALIZEDTIME *validationTime;
        STACK_OF(X509) *intermediateCerts;
        STACK_OF(SCVP_REVINFO) *revInfos;
        ASN1_GENERALIZEDTIME *producedAt;
        X509_EXTENSION *queryExtensions;
    } SCVP_QUERY;

    DECLARE_ASN1_FUNCTIONS(SCVP_QUERY)

    In the scvp_asn.c file i have :

    ASN1_SEQUENCE(SCVP_REQ) = {
    ASN1_SIMPLE(SCVP_REQ, cvRequestVersion, ASN1_INTEGER),
    ASN1_SIMPLE(SCVP_REQ, query, SCVP_QUERY),
    ASN1_OPT(SCVP_REQ, requestorRef, GENERAL_NAMES),
    ASN1_OPT(SCVP_REQ, requestNonce, ASN1_OCTET_STRING),
    ASN1_OPT(SCVP_REQ, requestorName, GENERAL_NAME),
    ASN1_OPT(SCVP_REQ, responderName, GENERAL_NAME),
    ASN1_OPT(SCVP_REQ, requestExtensions, X509_EXTENSION),
    ASN1_OPT(SCVP_REQ, signatureAlg, X509_ALGOR),
    ASN1_OPT(SCVP_REQ, hashAlg, ASN1_OBJECT),
    ASN1_OPT(SCVP_REQ, requestorText, ASN1_UTF8STRING)
    }ASN1_SEQUENCE_END(SCVP_REQ)
    IMPLEMENT_ASN1_FUNCTIONS(SCVP_REQ)

    And for SCVP_QUERY :

        ASN1_SEQUENCE(SCVP_QUERY) = {
    ASN1_SIMPLE(SCVP_QUERY, queriedCerts, SCVP_CERTREFS),
    ASN1_SEQUENCE_OF(SCVP_QUERY, checks, ASN1_OBJECT),
    ASN1_SEQUENCE_OF_OPT(SCVP_QUERY, wantBack, ASN1_OBJECT),
    ASN1_SIMPLE(SCVP_QUERY, validationPolicy, SCVP_VALPOL),
    ASN1_OPT(SCVP_QUERY, responseFlags, SCVP_RESPFLAGS),
    ASN1_OPT(SCVP_QUERY, serverContextInfo, ASN1_OCTET_STRING),
    ASN1_OPT(SCVP_QUERY, validationTime, ASN1_GENERALIZEDTIME),
    ASN1_SEQUENCE_OF_OPT(SCVP_QUERY, intermediateCerts, X509),
    ASN1_OPT(SCVP_QUERY, revInfos, SCVP_REVINFO),
    ASN1_OPT(SCVP_QUERY, producedAt, ASN1_GENERALIZEDTIME),
    ASN1_OPT(SCVP_QUERY, queryExtensions, X509_EXTENSION)
    }ASN1_SEQUENCE_END(SCVP_QUERY)
    IMPLEMENT_ASN1_FUNCTIONS(SCVP_QUERY)


    However if i change the following line :
    
    ASN1_SEQUENCE_OF_OPT(SCVP_QUERY, wantBack, ASN1_OBJECT) 
    to
    ASN1_SEQUENCE_OF(SCVP_QUERY, wantBack, ASN1_OBJECT)

    everything works fine.

    Can anyone help me?


Kind Regards,
==================================


Eugen Sendroiu
Address: str. Horia nr 3,
bl a8, sc 2, ap 7, Craiova
Dolj - 200490, Romania
Home : +40(0)351 401134
Mobile : +40(0)743 055244
+40(0)730 006760
E-mail : [EMAIL PROTECTED]
[EMAIL PROTECTED]


===================================



      
____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

Reply via email to