1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/* 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 <stdio.h>
#include "cryptlib.h"
#include <openssl/conf.h>
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/x509v3.h>
/* 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)
|