From d78254aa2816f6c80220ada64f2231879003278b Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 15 Nov 2002 00:26:07 +0000 Subject: [PATCH] Add SETWRAP modifier to ASN1 generate. --- crypto/asn1/asn1_gen.c | 10 +++++++++- doc/crypto/ASN1_generate_nconf.pod | 15 ++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/crypto/asn1/asn1_gen.c b/crypto/asn1/asn1_gen.c index 0c5dd9b52b..097b4b8ecf 100644 --- a/crypto/asn1/asn1_gen.c +++ b/crypto/asn1/asn1_gen.c @@ -67,7 +67,8 @@ #define ASN1_GEN_FLAG_BITWRAP (ASN1_GEN_FLAG|4) #define ASN1_GEN_FLAG_OCTWRAP (ASN1_GEN_FLAG|5) #define ASN1_GEN_FLAG_SEQWRAP (ASN1_GEN_FLAG|6) -#define ASN1_GEN_FLAG_FORMAT (ASN1_GEN_FLAG|7) +#define ASN1_GEN_FLAG_SETWRAP (ASN1_GEN_FLAG|7) +#define ASN1_GEN_FLAG_FORMAT (ASN1_GEN_FLAG|8) #define ASN1_GEN_STR(str,val) {str, sizeof(str) - 1, val} @@ -335,6 +336,11 @@ static int asn1_cb(const char *elem, int len, void *bitstr) return -1; break; + case ASN1_GEN_FLAG_SETWRAP: + if (!append_exp(arg, V_ASN1_SET, V_ASN1_UNIVERSAL, 1, 0, 1)) + return -1; + break; + case ASN1_GEN_FLAG_BITWRAP: if (!append_exp(arg, V_ASN1_BIT_STRING, V_ASN1_UNIVERSAL, 0, 1, 1)) return -1; @@ -588,6 +594,8 @@ static int asn1_str2tag(const char *tagstr, int len) ASN1_GEN_STR("OCTWRAP", ASN1_GEN_FLAG_OCTWRAP), /* SEQUENCE wrapper */ ASN1_GEN_STR("SEQWRAP", ASN1_GEN_FLAG_SEQWRAP), + /* SET wrapper */ + ASN1_GEN_STR("SETWRAP", ASN1_GEN_FLAG_SEQWRAP), /* BIT STRING wrapper */ ASN1_GEN_STR("BITWRAP", ASN1_GEN_FLAG_BITWRAP), ASN1_GEN_STR("FORM", ASN1_GEN_FLAG_FORMAT), diff --git a/doc/crypto/ASN1_generate_nconf.pod b/doc/crypto/ASN1_generate_nconf.pod index c4c683b2a6..b4c89377f6 100644 --- a/doc/crypto/ASN1_generate_nconf.pod +++ b/doc/crypto/ASN1_generate_nconf.pod @@ -32,7 +32,7 @@ is: That is zero or more comma separated modifiers followed by a type followed by an optional colon and a value. The formats of B, -B and B is explained below. +B and B are explained below. =head2 SUPPORTED TYPES @@ -45,7 +45,7 @@ only the B format is permissible. This encodes a boolean type. The B string is mandatory and should be B or B. Additionally B, B, B, -B, B, B, B B, B, B, B and B +B, B, B, B, B, B, B, B and B are acceptable. =item B @@ -106,8 +106,9 @@ contents of this structure. The format can be B or B. Formats the result as an ASN1 B or B type. B should be a section name which will contain the contents. The -field names are ignored and the values are in the generated -string format. If B is absent the the content will be empty. +field names in the section are ignored and the values are in the +generated string format. If B is absent then an empty SEQUENCE +will be encoded. =back @@ -135,10 +136,10 @@ the default is CONTEXT SPECIFIC. This is the same as B except IMPLICIT tagging is used instead. -=item B, B, B +=item B, B, B, B -The following structure is surrounded by an OCTET STRING, a SEQUENCE -or a BIT STRING respectively. For a BIT STRING the number of unused +The following structure is surrounded by an OCTET STRING, a SEQUENCE, +a SET or a BIT STRING respectively. For a BIT STRING the number of unused bits is set to zero. =item B -- 2.25.1