On Thu, Jun 26, 2003, Fernando Moya wrote:
> 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?
>
See what error message you get with ERR_print_errors_fp(srderr);
Steve.
--
Dr Stephen N. Henson.
Core developer of the OpenSSL project: http://www.openssl.org/
Freelance consultant see: http://www.drh-consultancy.demon.co.uk/
Email: [EMAIL PROTECTED], PGP key: via homepage.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]