/* 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 */ static int i2r_asid(X509V3_EXT_METHOD *method, ASIDENTIFERS *asid, BIO *out, int indent); static ASIDENTIFERS *r2i_asid(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *value); X509V3_EXT_METHOD v3_asid = { NID_rfc3779_asidentifer_extension, 0, ASN1_ITEM_ref(ASIDENTIFER_EXTENSION), 0, 0, 0, 0, 0, 0, 0, 0, 0, (X509V3_EXT_I2R) i2r_asid, (X509V3_EXT_R2I) r2i_asid, NULL }; ASN1_ITEM_TEMPLATE(ASIDENTIFER_EXTENSION) = ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE, 0, ASIDENTIFER_EXTENSION, ASIDENTIFERS) ASN1_ITEM_TEMPLATE_END(ASIDENTIFER_EXTENSION) IMPLEMENT_ASN1_FUNCTIONS(ASIDENTIFER_EXTENSION) ASN1_SEQUENCE(ASIDENTIFERS) = { ASN1_EXP_OPT(ASIDENTIFERS, asnum, ASIDENTIFERCHOICE, 0), ASN1_EXP_OPT(ASIDENTIFERS, rdi, ASIDENTIFERCHOICE, 1) } ASN1_SEQUENCE_END(ASIDENTIFERS) IMPLEMENT_ASN1_FUNCTIONS(ASIDENTIFERS) 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)