Hi,
in x509v3.h the public macros EXT_BITSTRING and EXT_IA5STRING
are defined though the used functions are not exported but the
implementation is declared static.
Following patch against openssl 0.9.7b should export them for
public use.
This is specially interesting to people programmatically adding
their private extensions.
I didn't test the patch but it is believed to be correct and OS
independent.
--- 8< 8< 8< ---
diff -urN openssl-0.9.7b.orig/crypto/x509v3/v3_bitst.c
openssl-0.9.7b/crypto/x509v3/v3_bitst.c
--- openssl-0.9.7b.orig/crypto/x509v3/v3_bitst.c Wed Dec 13 13:47:30 2000
+++ openssl-0.9.7b/crypto/x509v3/v3_bitst.c Wed Jul 30 07:20:30 2003
@@ -61,12 +61,6 @@
#include <openssl/conf.h>
#include <openssl/x509v3.h>
-static ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
- X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
-static STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
- ASN1_BIT_STRING *bits,
- STACK_OF(CONF_VALUE) *extlist);
-
static BIT_STRING_BITNAME ns_cert_type_table[] = {
{0, "SSL Client", "client"},
{1, "SSL Server", "server"},
@@ -97,7 +91,7 @@
X509V3_EXT_METHOD v3_nscert = EXT_BITSTRING(NID_netscape_cert_type,
ns_cert_type_table);
X509V3_EXT_METHOD v3_key_usage = EXT_BITSTRING(NID_key_usage, key_usage_type_table);
-static STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
+STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
ASN1_BIT_STRING *bits, STACK_OF(CONF_VALUE) *ret)
{
BIT_STRING_BITNAME *bnam;
@@ -108,7 +102,7 @@
return ret;
}
-static ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
+ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
{
CONF_VALUE *val;
diff -urN openssl-0.9.7b.orig/crypto/x509v3/v3_ia5.c
openssl-0.9.7b/crypto/x509v3/v3_ia5.c
--- openssl-0.9.7b.orig/crypto/x509v3/v3_ia5.c Thu May 30 16:49:23 2002
+++ openssl-0.9.7b/crypto/x509v3/v3_ia5.c Wed Jul 30 07:19:45 2003
@@ -63,8 +63,6 @@
#include <openssl/conf.h>
#include <openssl/x509v3.h>
-static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
-static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
char *str);
X509V3_EXT_METHOD v3_ns_ia5_list[] = {
EXT_IA5STRING(NID_netscape_base_url),
EXT_IA5STRING(NID_netscape_revocation_url),
@@ -77,7 +75,7 @@
};
-static char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
+char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
ASN1_IA5STRING *ia5)
{
char *tmp;
@@ -88,7 +86,7 @@
return tmp;
}
-static ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
+ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
X509V3_CTX *ctx, char *str)
{
ASN1_IA5STRING *ia5;
diff -urN openssl-0.9.7b.orig/crypto/x509v3/x509v3.h
openssl-0.9.7b/crypto/x509v3/x509v3.h
--- openssl-0.9.7b.orig/crypto/x509v3/x509v3.h Wed Jan 29 15:06:38 2003
+++ openssl-0.9.7b/crypto/x509v3/x509v3.h Wed Jul 30 07:21:06 2003
@@ -294,6 +294,11 @@
X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
+ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
+ X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
+STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
+ ASN1_BIT_STRING *bits,
+ STACK_OF(CONF_VALUE) *extlist);
#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
0,0,0,0, \
0,0, \
@@ -302,6 +307,8 @@
NULL, NULL, \
table}
+char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
+ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char
*str);
#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
0,0,0,0, \
(X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
--- 8< 8< 8< ---
--
Greetings
Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT
56 69 73 69 74 http://www.zabbadoz.net/
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]