diff options
author | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2004-08-20 13:37:45 +0000 |
---|---|---|
committer | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2004-08-20 13:37:45 +0000 |
commit | 7d576b304749679b9ac35ca0cc03ccc25dc27aff (patch) | |
tree | 30007668a24b023dab0cfb3817ef0fb71c22929a /tests/19-param-OK.asn1.-P | |
parent | b283901f981f24d0dd59af340a63a26b4385cf6d (diff) |
new test files
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@171 59561ff5-6e30-0410-9f3c-9617f08c8826
Diffstat (limited to 'tests/19-param-OK.asn1.-P')
-rw-r--r-- | tests/19-param-OK.asn1.-P | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/tests/19-param-OK.asn1.-P b/tests/19-param-OK.asn1.-P new file mode 100644 index 00000000..a9f48e73 --- /dev/null +++ b/tests/19-param-OK.asn1.-P @@ -0,0 +1,315 @@ + +/*** <<< INCLUDES [Certificate] >>> ***/ + +#include <OBJECT_IDENTIFIER.h> +#include <BIT_STRING.h> +#include <INTEGER.h> +#include <Name.h> +#include <constr_SEQUENCE.h> + +/*** <<< DEPS [Certificate] >>> ***/ + +extern asn1_TYPE_descriptor_t asn1_DEF_Certificate; + +/*** <<< TYPE-DECLS [Certificate] >>> ***/ + + +typedef struct Certificate { + struct toBeSigned { + INTEGER_t version; + OBJECT_IDENTIFIER_t signature; + Name_t issuer; + + /* Context for parsing across buffer boundaries */ + ber_dec_ctx_t _ber_dec_ctx; + } toBeSigned; + OBJECT_IDENTIFIER_t algorithm; + BIT_STRING_t signature; + + /* Context for parsing across buffer boundaries */ + ber_dec_ctx_t _ber_dec_ctx; +} Certificate_t; + +/*** <<< STAT-DEFS [Certificate] >>> ***/ + +static asn1_TYPE_member_t asn1_MBR_toBeSigned[] = { + { 0, offsetof(struct toBeSigned, version), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_INTEGER, + .memb_constraints = 0, /* Defer to actual type */ + .name = "version" + }, + { 0, offsetof(struct toBeSigned, signature), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_OBJECT_IDENTIFIER, + .memb_constraints = 0, /* Defer to actual type */ + .name = "signature" + }, + { 0, offsetof(struct toBeSigned, issuer), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_Name, + .memb_constraints = 0, /* Defer to actual type */ + .name = "issuer" + }, +}; +static ber_tlv_tag_t asn1_DEF_toBeSigned_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn1_TYPE_tag2member_t asn1_DEF_toBeSigned_tag2el[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* version at 21 */ + { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* signature at 22 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* issuer at 24 */ +}; +static asn1_SEQUENCE_specifics_t asn1_DEF_toBeSigned_specs = { + sizeof(struct toBeSigned), + offsetof(struct toBeSigned, _ber_dec_ctx), + asn1_DEF_toBeSigned_tag2el, + 3, /* Count of tags in the map */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn1_TYPE_descriptor_t asn1_DEF_toBeSigned = { + "toBeSigned", + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_print, + SEQUENCE_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_toBeSigned_tags, + sizeof(asn1_DEF_toBeSigned_tags) + /sizeof(asn1_DEF_toBeSigned_tags[0]), /* 1 */ + 1, /* Tags to skip */ + 1, /* Whether CONSTRUCTED */ + asn1_MBR_toBeSigned, + 3, /* Elements count */ + &asn1_DEF_toBeSigned_specs /* Additional specs */ +}; + +static asn1_TYPE_member_t asn1_MBR_Certificate[] = { + { 0, offsetof(struct Certificate, toBeSigned), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_toBeSigned, + .memb_constraints = 0, /* Defer to actual type */ + .name = "toBeSigned" + }, + { 0, offsetof(struct Certificate, algorithm), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_OBJECT_IDENTIFIER, + .memb_constraints = 0, /* Defer to actual type */ + .name = "algorithm" + }, + { 0, offsetof(struct Certificate, signature), + .tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_BIT_STRING, + .memb_constraints = 0, /* Defer to actual type */ + .name = "signature" + }, +}; +static ber_tlv_tag_t asn1_DEF_Certificate_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn1_TYPE_tag2member_t asn1_DEF_Certificate_tag2el[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* signature at 18 */ + { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* algorithm at 16 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* toBeSigned at 21 */ +}; +static asn1_SEQUENCE_specifics_t asn1_DEF_Certificate_specs = { + sizeof(struct Certificate), + offsetof(struct Certificate, _ber_dec_ctx), + asn1_DEF_Certificate_tag2el, + 3, /* Count of tags in the map */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn1_TYPE_descriptor_t asn1_DEF_Certificate = { + "Certificate", + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_print, + SEQUENCE_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_Certificate_tags, + sizeof(asn1_DEF_Certificate_tags) + /sizeof(asn1_DEF_Certificate_tags[0]), /* 1 */ + 1, /* Tags to skip */ + 1, /* Whether CONSTRUCTED */ + asn1_MBR_Certificate, + 3, /* Elements count */ + &asn1_DEF_Certificate_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [Name] >>> ***/ + +#include <RelativeDistinguishedName.h> +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +/*** <<< DEPS [Name] >>> ***/ + +extern asn1_TYPE_descriptor_t asn1_DEF_Name; + +/*** <<< TYPE-DECLS [Name] >>> ***/ + + +typedef struct Name { + A_SEQUENCE_OF(struct RelativeDistinguishedName) list; + + /* Context for parsing across buffer boundaries */ + ber_dec_ctx_t _ber_dec_ctx; +} Name_t; + +/*** <<< STAT-DEFS [Name] >>> ***/ + +static asn1_TYPE_member_t asn1_MBR_Name[] = { + { 0, 0, + .tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_RelativeDistinguishedName, + .memb_constraints = 0, /* Defer to actual type */ + .name = "" + }, +}; +static ber_tlv_tag_t asn1_DEF_Name_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn1_SET_OF_specifics_t asn1_DEF_Name_specs = { + sizeof(struct Name), + offsetof(struct Name, _ber_dec_ctx), +}; +asn1_TYPE_descriptor_t asn1_DEF_Name = { + "Name", + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_print, + SEQUENCE_OF_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_Name_tags, + sizeof(asn1_DEF_Name_tags) + /sizeof(asn1_DEF_Name_tags[0]), /* 1 */ + 1, /* Tags to skip */ + 1, /* Whether CONSTRUCTED */ + asn1_MBR_Name, + 1, /* Single element */ + &asn1_DEF_Name_specs /* Additional specs */ +}; + + +/*** <<< INCLUDES [RelativeDistinguishedName] >>> ***/ + +#include <IA5String.h> +#include <asn_SET_OF.h> +#include <constr_SET_OF.h> + +/*** <<< DEPS [RelativeDistinguishedName] >>> ***/ + +extern asn1_TYPE_descriptor_t asn1_DEF_RelativeDistinguishedName; + +/*** <<< TYPE-DECLS [RelativeDistinguishedName] >>> ***/ + + +typedef struct RelativeDistinguishedName { + A_SET_OF(IA5String_t) list; + + /* Context for parsing across buffer boundaries */ + ber_dec_ctx_t _ber_dec_ctx; +} RelativeDistinguishedName_t; + +/*** <<< CTABLES [RelativeDistinguishedName] >>> ***/ + +static int permitted_alphabet_table_1[256] = { +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, /* ,-. */ +1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, /* 0 9 */ +0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ABCDEFGHIJKLMNO */ +1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* PQRSTUVWXYZ */ +0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* abcdefghijklmno */ +1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */ +}; + +static int check_permitted_alphabet_1(const void *sptr) { + int *table = permitted_alphabet_table_1; + /* The underlying type is IA5String */ + const (null)_t *st = sptr; + uint8_t *ch = st->buf; + uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return 0; + } + return 1; +} + + +/*** <<< CODE [RelativeDistinguishedName] >>> ***/ + +static int +memb_IA5String_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *app_errlog, void *app_key) { + const (null)_t *st = sptr; + + if(!sptr) { + _ASN_ERRLOG(app_errlog, app_key, + "%s: value not given", td->name); + return -1; + } + + + if(check_permitted_alphabet_1(sptr)) { + /* Constraint check succeeded */ + return 1; + } else { + _ASN_ERRLOG(app_errlog, app_key, + "%s: constraint failed", td->name); + return -1; + } +} + + +/*** <<< STAT-DEFS [RelativeDistinguishedName] >>> ***/ + +static asn1_TYPE_member_t asn1_MBR_RelativeDistinguishedName[] = { + { 0, 0, + .tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), + .tag_mode = 0, + .type = (void *)&asn1_DEF_IA5String, + .memb_constraints = memb_IA5String_constraint, + .name = "" + }, +}; +static ber_tlv_tag_t asn1_DEF_RelativeDistinguishedName_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)) +}; +static asn1_SET_OF_specifics_t asn1_DEF_RelativeDistinguishedName_specs = { + sizeof(struct RelativeDistinguishedName), + offsetof(struct RelativeDistinguishedName, _ber_dec_ctx), +}; +asn1_TYPE_descriptor_t asn1_DEF_RelativeDistinguishedName = { + "RelativeDistinguishedName", + SET_OF_constraint, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_print, + SET_OF_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_RelativeDistinguishedName_tags, + sizeof(asn1_DEF_RelativeDistinguishedName_tags) + /sizeof(asn1_DEF_RelativeDistinguishedName_tags[0]), /* 1 */ + 1, /* Tags to skip */ + 1, /* Whether CONSTRUCTED */ + asn1_MBR_RelativeDistinguishedName, + 1, /* Single element */ + &asn1_DEF_RelativeDistinguishedName_specs /* Additional specs */ +}; + |