/* v3_asid.c */ /* $Id$ */ /* * Initial attempt to implement RFC 3779 section 3. * I'd be very surprised if this even compiled yet, * as I'm still figuring out OpenSSL's ASN.1 template goop. */ #include #include "cryptlib.h" #include #include #include #include /* RFC 3779 AS ID */ X509V3_EXT_METHOD v3_asid = { NID_rfc3779_asidentifiers, 0, ASN1_ITEM_ref(ASIDENTIFIERS), 0, 0, 0, 0, 0, 0, 0, 0, 0, (X509V3_EXT_I2R) i2r_asid, (X509V3_EXT_R2I) r2i_asid, NULL }; ASN1_ITEM_TEMPLATE(ASIDENTIFIERS) = ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE, 0, ASIDENTIFIERS, ASIDENTIFERS_SEQUENCE) ASN1_ITEM_TEMPLATE_END(ASIDENTIFIERS) IMPLEMENT_ASN1_FUNCTIONS(ASIDENTIFIERS) ASN1_SEQUENCE(ASIDENTIFERS_SEQUENCE) = { ASN1_EXP_OPT(ASIDENTIFERS_SEQUENCE, asnum, ASIDENTIFERCHOICE, 0), ASN1_EXP_OPT(ASIDENTIFERS_SEQUENCE, rdi, ASIDENTIFERCHOICE, 1) } ASN1_SEQUENCE_END(ASIDENTIFERS_SEQUENCE) IMPLEMENT_ASN1_FUNCTIONS(ASIDENTIFERS_SEQUENCE) ASN1_CHOICE(ASIDENTIFERCHOICE) = { ASN1_IMP(ASIDENTIFERCHOICE, inherit, ASN1_NULL, 0), ASN1_IMP_SEQUENCE_OF(ASIDENTIFERCHOICE, asIdsOrRanges, ASIDORRANGE, 1) } ASN1_CHOICE_END(ASIDENTIFERCHOICE) IMPLEMENT_ASN1_FUNCTIONS(ASIDENTIFERCHOICE) ASN1_CHOICE(ASIDORRANGE) = { ASN1_IMP(ASIDORRANGE, id, ASN1_INTEGER, 0), ASN1_IMP(ASIDORRANGE, range, ASRANGE, 1) } ASN1_CHOICE_END(ASIDORRANGE) IMPLEMENT_ASN1_FUNCTIONS(ASIDORRANGE) ASN1_SEQUENCE(ASRANGE) = { ASN1_SIMPLE(ASRANGE, min, ASN1_INTEGER), ASN1_SIMPLE(ASRANGE, max, ASN1_INTEGER) } ASN1_SEQUENCE_END(ASRANGE) IMPLEMENT_ASN1_FUNCTIONS(ASRANGE)