Fernando, I think all user-defined tags in a CHOICE (e.g., [0]) are EXPLICIT -- I could be wrong and don't have time to check right now (it's been a while ...).
So I think you want: ASN1_EXP(Seq1, value.field2,Sub_seq200, 0) Frank "Fernando Moya" <[EMAIL PROTECTED] To: <[EMAIL PROTECTED]> > cc: Sent by: Subject: d2i and ASN1_CHOICE owner-openssl-dev@ openssl.org 06/26/2003 04:55 AM Please respond to openssl-dev Hi, I am having problems with CHOICE in the following ASN.1 sequence: --------------------------------------------------------------------- DEFINITIONS IMPLICIT TAGS Sub_seq200 ::= SEQUENCE { sub_field1 Sub_seq100 OPTIONAL, sub_field2 [0] Sub_seq400 OPTIONAL } Seq1 ::= CHOICE { field1 Sub_seq100, field2 [0] Sub_seq200 } --------------------------------------------------------------------- Implemented by: typedef struct Sub_seq200_st { Sub_seq100 *sub_field1; Sub_seq200 *sub_field2; }Sub_seq200; typedef struct Seq1_st { int type; union { char *ptr; Sub_seq100 *field1; Sub_seq200 *field2; }value; }Seq1; ASN1_SEQUENCE(Sub_seq200) = { ASN1_OPT(Sub_seq200,sub_field1, Sub_seq100), ASN1_IMP_OPT(Sub_seq200,sub_field2, Sub_seq400,0), } ASN1_SEQUENCE_END(Sub_seq200) IMPLEMENT_ASN1_FUNCTIONS(Sub_seq200) ASN1_CHOICE(Seq1) = { ASN1_SIMPLE(Seq1, value.field1,Sub_seq100), ASN1_IMP(Seq1, value.field2,Sub_seq200, 0) } ASN1_CHOICE_END(Seq1) IMPLEMENT_ASN1_FUNCTIONS(Seq1) Well, Seq1_new, Seq1_free and i2d_Seq1 functions work correctly and DER output is right, but when I call d2i_Seq1 with DER output from i2d_Seq1, it returns NULL. I think it could be an incorrect definition of ASN1_CHOICE(Seq1). Does Anybody know what is wrong? Thanks in advance. Fernando Moya Bernal. University of Malaga. Spain. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED] -- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]