Add an extra 'raw' function r2i to the extension code. Nothing uses this yet and
it is just a place holder for functionality to be added later. Its been added
now so the X509V3_EXT_METHOD structure shouldn't (hopefully) have to change
after the release.
diff --git a/crypto/x509v3/v3_akey.c b/crypto/x509v3/v3_akey.c
index ab488f9..8bee98c 100644
--- a/crypto/x509v3/v3_akey.c
+++ b/crypto/x509v3/v3_akey.c
@@ -83,7 +83,7 @@
 NULL, NULL,
 (X509V3_EXT_I2V)i2v_AUTHORITY_KEYID,
 (X509V3_EXT_V2I)v2i_AUTHORITY_KEYID,
-NULL,
+NULL,NULL,
 NULL
 };
 
diff --git a/crypto/x509v3/v3_alt.c b/crypto/x509v3/v3_alt.c
index 7f02dfc..3adf509 100644
--- a/crypto/x509v3/v3_alt.c
+++ b/crypto/x509v3/v3_alt.c
@@ -82,7 +82,7 @@
 NULL, NULL,
 (X509V3_EXT_I2V)i2v_GENERAL_NAMES,
 (X509V3_EXT_V2I)v2i_subject_alt,
-NULL, NULL},
+NULL, NULL, NULL},
 { NID_issuer_alt_name, 0,
 (X509V3_EXT_NEW)GENERAL_NAMES_new,
 GENERAL_NAMES_free,
@@ -91,7 +91,7 @@
 NULL, NULL,
 (X509V3_EXT_I2V)i2v_GENERAL_NAMES,
 (X509V3_EXT_V2I)v2i_issuer_alt,
-NULL, NULL},
+NULL, NULL, NULL},
 EXT_END
 };
 
diff --git a/crypto/x509v3/v3_bcons.c b/crypto/x509v3/v3_bcons.c
index 1a33778..ddd5a66 100644
--- a/crypto/x509v3/v3_bcons.c
+++ b/crypto/x509v3/v3_bcons.c
@@ -84,7 +84,7 @@
 NULL, NULL,
 (X509V3_EXT_I2V)i2v_BASIC_CONSTRAINTS,
 (X509V3_EXT_V2I)v2i_BASIC_CONSTRAINTS,
-NULL,
+NULL,NULL,
 NULL
 };
 
diff --git a/crypto/x509v3/v3_enum.c b/crypto/x509v3/v3_enum.c
index 835bde9..8c0b37c 100644
--- a/crypto/x509v3/v3_enum.c
+++ b/crypto/x509v3/v3_enum.c
@@ -81,7 +81,7 @@
 i2d_ASN1_ENUMERATED,
 (X509V3_EXT_I2S)i2s_ASN1_ENUMERATED_TABLE,
 (X509V3_EXT_S2I)NULL,
-NULL, NULL, NULL, (char *)crl_reasons};
+NULL, NULL, NULL, NULL, (char *)crl_reasons};
 
 
 static ASN1_ENUMERATED *asn1_enumerated_new()
diff --git a/crypto/x509v3/v3_extku.c b/crypto/x509v3/v3_extku.c
index 7a6bbf6..aa8fe1e 100644
--- a/crypto/x509v3/v3_extku.c
+++ b/crypto/x509v3/v3_extku.c
@@ -80,7 +80,7 @@
 NULL, NULL,
 (X509V3_EXT_I2V)i2v_ext_ku,
 (X509V3_EXT_V2I)v2i_ext_ku,
-NULL,
+NULL,NULL,
 NULL
 };
 
diff --git a/crypto/x509v3/v3_int.c b/crypto/x509v3/v3_int.c
index 199ba10..03b1c25 100644
--- a/crypto/x509v3/v3_int.c
+++ b/crypto/x509v3/v3_int.c
@@ -69,7 +69,7 @@
 i2d_ASN1_INTEGER,
 (X509V3_EXT_I2S)i2s_ASN1_INTEGER,
 (X509V3_EXT_S2I)NULL,
-NULL, NULL, NULL, NULL};
+NULL, NULL, NULL, NULL, NULL};
 
 
 static ASN1_INTEGER *asn1_integer_new()
diff --git a/crypto/x509v3/v3_pku.c b/crypto/x509v3/v3_pku.c
index c3808cc..a602191 100644
--- a/crypto/x509v3/v3_pku.c
+++ b/crypto/x509v3/v3_pku.c
@@ -81,7 +81,7 @@
 (X509V3_EXT_D2I)d2i_PKEY_USAGE_PERIOD,
 i2d_PKEY_USAGE_PERIOD,
 NULL, NULL, NULL, NULL,
-(X509V3_EXT_I2R)i2r_PKEY_USAGE_PERIOD,
+(X509V3_EXT_I2R)i2r_PKEY_USAGE_PERIOD, NULL,
 NULL
 };
 
diff --git a/crypto/x509v3/v3_skey.c b/crypto/x509v3/v3_skey.c
index c9402e6..20c9c2c 100644
--- a/crypto/x509v3/v3_skey.c
+++ b/crypto/x509v3/v3_skey.c
@@ -76,7 +76,7 @@
 i2d_ASN1_OCTET_STRING,
 (X509V3_EXT_I2S)i2s_ASN1_OCTET_STRING,
 (X509V3_EXT_S2I)s2i_skey_id,
-NULL, NULL, NULL, NULL};
+NULL, NULL, NULL, NULL, NULL};
 
 
 static ASN1_OCTET_STRING *octet_string_new(void)
diff --git a/crypto/x509v3/x509v3.h b/crypto/x509v3/x509v3.h
index 1f25fc8..282732e 100644
--- a/crypto/x509v3/x509v3.h
+++ b/crypto/x509v3/x509v3.h
@@ -80,6 +80,7 @@
 typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, char *ext);
 typedef char * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str);
 typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, char *ext, BIO *out);
+typedef char *(*X509V3_EXT_R2I)(struct v3_ext_method *method, char *db, char *value);
 
 /* V3 extension structure */
 
@@ -99,8 +100,9 @@
 X509V3_EXT_I2V i2v;
 X509V3_EXT_V2I v2i;
 
-/* The following is used for raw extensions */
+/* The following are used for raw extensions */
 X509V3_EXT_I2R i2r;
+X509V3_EXT_R2I r2i;	/* Doesn't do anything *YET* */
 
 char *usr_data;	/* Any extension specific data */
 };
@@ -184,7 +186,7 @@
 			NULL, NULL, \
 			(X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
 			(X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
-			NULL, \
+			NULL, NULL, \
 			(char *)table}
 
 #define EXT_IA5STRING(nid) { nid, 0, \
@@ -193,11 +195,11 @@
 			i2d_ASN1_IA5STRING, \
 			(X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
 			(X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
-			NULL, NULL, NULL, \
+			NULL, NULL, NULL, NULL, \
 			NULL}
 
 #define EXT_END { -1, 0, NULL, NULL, NULL, NULL, NULL, NULL, \
-			 NULL, NULL, NULL, \
+			 NULL, NULL, NULL, NULL, \
 			 NULL}
 
 #ifndef NOPROTO