aboutsummaryrefslogtreecommitdiff
path: root/openssl/trunk/crypto/x509v3
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/trunk/crypto/x509v3')
-rw-r--r--openssl/trunk/crypto/x509v3/v3_asid.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/openssl/trunk/crypto/x509v3/v3_asid.c b/openssl/trunk/crypto/x509v3/v3_asid.c
new file mode 100644
index 00000000..a6a6619c
--- /dev/null
+++ b/openssl/trunk/crypto/x509v3/v3_asid.c
@@ -0,0 +1,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)