> Well a couple of files have an ASN1_METHOD in them but nothing actually > made use of those. > > You could just #if 0 out that structure then #if 0 the small number > of functions and references that use it. > > Steve.
I took your advice, and blindly #if 0'd out several offending sections in openssl includes. Not being familiar with the library, I've no way of knowing which bits are 'obsolete'. I began to get cold feet, though, when I saw that the definition of EVP_MD (i.e. struct env_md_st) also seems to have these incomplete prototypes. See evp.h: struct env_md_st { [......] /* FIXME: prototype these some day */ int (*sign)(); int (*verify)(); [.......] } There are also such prototypes in pem.h, rsa.h, x509.h and ui.h. Note that my usage so far only requires DSA signing and verifying so there could be further warnings My code now compiles without warnings, but I don't think it'd be easy to modify the openssl source to compile with these header files(!) This doesn't look like a stable way to integrate with an evolving library like OpenSSL.... I'm attaching a patch against 0.9.7c, if you're interested in seeing the places I hit warnings. I only touched the header files. Matt p.s. In case the attachment doesn't come through on the list, here's the list of types and functions that I #if 0'd out: asn1.h: typedef struct asn1_method_st i2d_ASN1_SET ASN1_dup ASN1_d2i_fp ASN1_i2d_fp ASN1_d2i_bio ASN1_i2d_bio i2d_ASN1_HEADER d2i_ASN1_HEADER ASN1_HEADER_new ASN1_HEADER_free X509_asn1_meth RSAPrivateKey_asn1_meth ASN1_IA5STRING_asn1_meth ASN1_BIT_STRING_asn1_meth ASN1_seq_unpack ASN1_seq_pack ASN1_unpack_string ASN1_pack_string evp.h: struct env_md_st pem.h: PEM_ASN1_read_bio PEM_ASN1_write_bio PEM_ASN1_read PEM_ASN1_write rsa.h: i2d_RSA_NET d2i_RSA_NET i2d_Netscape_RSA d2i_Netscape_RSA ui.h: UI_ctrl x509.h: struct X509_objects_st ASN1_verify ASN1_sign
diff -Naur openssl-0.9.7c.orig/crypto/asn1/asn1.h openssl-0.9.7c/crypto/asn1/asn1.h --- openssl-0.9.7c.orig/crypto/asn1/asn1.h 2003-04-10 01:03:22.000000000 +0100 +++ openssl-0.9.7c/crypto/asn1/asn1.h 2003-12-01 10:53:06.000000000 +0000 @@ -473,6 +473,7 @@ DECLARE_STACK_OF(ASN1_TYPE) DECLARE_ASN1_SET_OF(ASN1_TYPE) +#if 0 typedef struct asn1_method_st { int (*i2d)(); @@ -488,6 +489,7 @@ char *data; ASN1_METHOD *meth; } ASN1_HEADER; +#endif /* This is used to contain a list of bit names */ typedef struct BIT_STRING_BITNAME_st { @@ -796,11 +798,13 @@ int ASN1_TIME_check(ASN1_TIME *t); ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); +#if 0 int i2d_ASN1_SET(STACK *a, unsigned char **pp, int (*func)(), int ex_tag, int ex_class, int is_set); STACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, char *(*func)(), void (*free_func)(void *), int ex_tag, int ex_class); +#endif #ifndef OPENSSL_NO_BIO int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); @@ -851,14 +855,18 @@ int ASN1_object_size(int constructed, int length, int tag); /* Used to implement other functions */ +#if 0 char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x); +#endif void *ASN1_item_dup(const ASN1_ITEM *it, void *x); #ifndef OPENSSL_NO_FP_API +#if 0 char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); -void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); +#endif +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); #endif @@ -866,9 +874,11 @@ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); #ifndef OPENSSL_NO_BIO +#if 0 char *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); -void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); int ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); +#endif +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); @@ -880,19 +890,23 @@ #endif const char *ASN1_tag2str(int tag); +#if 0 /* Used to load and write netscape format cert/key */ int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp); ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a,unsigned char **pp, long length); ASN1_HEADER *ASN1_HEADER_new(void ); void ASN1_HEADER_free(ASN1_HEADER *a); +#endif int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); +#if 0 /* Not used that much at this point, except for the first two */ ASN1_METHOD *X509_asn1_meth(void); ASN1_METHOD *RSAPrivateKey_asn1_meth(void); ASN1_METHOD *ASN1_IA5STRING_asn1_meth(void); ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void); +#endif int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); @@ -903,13 +917,15 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, unsigned char *data, int max_len); +#if 0 STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(), void (*free_func)(void *) ); unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf, int *len ); void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)()); -void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct); +#endif +void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); void ASN1_STRING_set_default_mask(unsigned long mask); diff -Naur openssl-0.9.7c.orig/crypto/evp/evp.h openssl-0.9.7c/crypto/evp/evp.h --- openssl-0.9.7c.orig/crypto/evp/evp.h 2003-08-11 10:37:10.000000000 +0100 +++ openssl-0.9.7c/crypto/evp/evp.h 2003-12-01 10:57:53.000000000 +0000 @@ -267,6 +267,7 @@ } EVP_PKEY_METHOD; #endif +#if 0 #ifndef EVP_MD struct env_md_st { @@ -314,6 +315,7 @@ #endif #endif /* !EVP_MD */ +#endif struct env_md_ctx_st { diff -Naur openssl-0.9.7c.orig/crypto/opensslconf.h openssl-0.9.7c/crypto/opensslconf.h --- openssl-0.9.7c.orig/crypto/opensslconf.h 2003-09-30 13:38:13.000000000 +0100 +++ openssl-0.9.7c/crypto/opensslconf.h 2003-12-01 11:14:07.000000000 +0000 @@ -9,6 +9,9 @@ #endif #endif /* OPENSSL_DOING_MAKEDEPEND */ +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif /* The OPENSSL_NO_* macros are also defined as NO_* if the application asks for it. This is a transient feature that is provided for those @@ -79,7 +82,7 @@ #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) #define CONFIG_HEADER_BN_H -#undef BN_LLONG +#define BN_LLONG /* Should we define BN_DIV2W here? */ @@ -98,7 +101,7 @@ #define CONFIG_HEADER_RC4_LOCL_H /* if this is defined data[i] is used instead of *data, this is a %20 * speedup on x86 */ -#undef RC4_INDEX +#define RC4_INDEX #endif #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) @@ -112,14 +115,14 @@ /* the following is tweaked from a config script, that is why it is a * protected undef/define */ #ifndef DES_PTR -#undef DES_PTR +#define DES_PTR #endif /* This helps C compiler generate the correct code for multiple functional * units. It reduces register dependancies at the expense of 2 more * registers */ #ifndef DES_RISC1 -#undef DES_RISC1 +#define DES_RISC1 #endif #ifndef DES_RISC2 @@ -133,7 +136,7 @@ /* Unroll the inner loop, this sometimes helps, sometimes hinders. * Very mucy CPU dependant */ #ifndef DES_UNROLL -#undef DES_UNROLL +#define DES_UNROLL #endif /* These default values were supplied by diff -Naur openssl-0.9.7c.orig/crypto/pem/pem.h openssl-0.9.7c/crypto/pem/pem.h --- openssl-0.9.7c.orig/crypto/pem/pem.h 2002-11-12 13:22:41.000000000 +0000 +++ openssl-0.9.7c/crypto/pem/pem.h 2003-12-01 11:00:04.000000000 +0000 @@ -494,11 +494,13 @@ long len); int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char *name, BIO *bp, pem_password_cb *cb, void *u); +#if 0 char * PEM_ASN1_read_bio(char *(*d2i)(),const char *name,BIO *bp,char **x, pem_password_cb *cb, void *u); int PEM_ASN1_write_bio(int (*i2d)(),const char *name,BIO *bp,char *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, pem_password_cb *cb, void *u); +#endif STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cd, void *u); @@ -508,11 +510,13 @@ int PEM_read(FILE *fp, char **name, char **header, unsigned char **data,long *len); int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len); +#if 0 char * PEM_ASN1_read(char *(*d2i)(),const char *name,FILE *fp,char **x, pem_password_cb *cb, void *u); int PEM_ASN1_write(int (*i2d)(),const char *name,FILE *fp,char *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, pem_password_cb *callback, void *u); +#endif STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); #endif diff -Naur openssl-0.9.7c.orig/crypto/rsa/rsa.h openssl-0.9.7c/crypto/rsa/rsa.h --- openssl-0.9.7c.orig/crypto/rsa/rsa.h 2003-05-07 12:38:13.000000000 +0100 +++ openssl-0.9.7c/crypto/rsa/rsa.h 2003-12-01 10:54:15.000000000 +0000 @@ -231,11 +231,13 @@ int RSA_print(BIO *bp, const RSA *r,int offset); #endif +#if 0 int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey); RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length, int (*cb)(), int sgckey); int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, int (*cb)()); RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, int (*cb)()); +#endif /* The following 2 functions sign and verify a X509_SIG ASN1 object * inside PKCS#1 padded RSA encryption */ diff -Naur openssl-0.9.7c.orig/crypto/ui/ui.h openssl-0.9.7c/crypto/ui/ui.h --- openssl-0.9.7c.orig/crypto/ui/ui.h 2002-02-05 17:15:17.000000000 +0000 +++ openssl-0.9.7c/crypto/ui/ui.h 2003-12-01 10:53:36.000000000 +0000 @@ -217,7 +217,9 @@ /* Give a user interface parametrised control commands. This can be used to send down an integer, a data pointer or a function pointer, as well as be used to get information from a UI. */ +#if 0 int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)()); +#endif /* The commands */ /* Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the diff -Naur openssl-0.9.7c.orig/crypto/x509/x509.h openssl-0.9.7c/crypto/x509/x509.h --- openssl-0.9.7c.orig/crypto/x509/x509.h 2002-11-12 13:23:00.000000000 +0000 +++ openssl-0.9.7c/crypto/x509/x509.h 2003-12-01 10:59:16.000000000 +0000 @@ -114,12 +114,14 @@ #define X509v3_KU_DECIPHER_ONLY 0x8000 #define X509v3_KU_UNDEF 0xffff +#if 0 typedef struct X509_objects_st { int nid; int (*a2i)(); int (*i2a)(); } X509_OBJECTS; +#endif struct X509_algor_st { @@ -912,6 +914,7 @@ void X509_INFO_free(X509_INFO *a); char * X509_NAME_oneline(X509_NAME *a,char *buf,int size); +#if 0 int ASN1_verify(int (*i2d)(), X509_ALGOR *algor1, ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey); @@ -921,6 +924,7 @@ int ASN1_sign(int (*i2d)(), X509_ALGOR *algor1, X509_ALGOR *algor2, ASN1_BIT_STRING *signature, char *data,EVP_PKEY *pkey, const EVP_MD *type); +#endif int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data, unsigned char *md,unsigned int *len); diff -Naur openssl-0.9.7c.orig/include/openssl/asn1.h openssl-0.9.7c/include/openssl/asn1.h --- openssl-0.9.7c.orig/include/openssl/asn1.h 2003-04-10 01:03:22.000000000 +0100 +++ openssl-0.9.7c/include/openssl/asn1.h 2003-12-01 10:53:06.000000000 +0000 @@ -473,6 +473,7 @@ DECLARE_STACK_OF(ASN1_TYPE) DECLARE_ASN1_SET_OF(ASN1_TYPE) +#if 0 typedef struct asn1_method_st { int (*i2d)(); @@ -488,6 +489,7 @@ char *data; ASN1_METHOD *meth; } ASN1_HEADER; +#endif /* This is used to contain a list of bit names */ typedef struct BIT_STRING_BITNAME_st { @@ -796,11 +798,13 @@ int ASN1_TIME_check(ASN1_TIME *t); ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); +#if 0 int i2d_ASN1_SET(STACK *a, unsigned char **pp, int (*func)(), int ex_tag, int ex_class, int is_set); STACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, char *(*func)(), void (*free_func)(void *), int ex_tag, int ex_class); +#endif #ifndef OPENSSL_NO_BIO int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); @@ -851,14 +855,18 @@ int ASN1_object_size(int constructed, int length, int tag); /* Used to implement other functions */ +#if 0 char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x); +#endif void *ASN1_item_dup(const ASN1_ITEM *it, void *x); #ifndef OPENSSL_NO_FP_API +#if 0 char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); -void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); +#endif +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); #endif @@ -866,9 +874,11 @@ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); #ifndef OPENSSL_NO_BIO +#if 0 char *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); -void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); int ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); +#endif +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); @@ -880,19 +890,23 @@ #endif const char *ASN1_tag2str(int tag); +#if 0 /* Used to load and write netscape format cert/key */ int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp); ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a,unsigned char **pp, long length); ASN1_HEADER *ASN1_HEADER_new(void ); void ASN1_HEADER_free(ASN1_HEADER *a); +#endif int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); +#if 0 /* Not used that much at this point, except for the first two */ ASN1_METHOD *X509_asn1_meth(void); ASN1_METHOD *RSAPrivateKey_asn1_meth(void); ASN1_METHOD *ASN1_IA5STRING_asn1_meth(void); ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void); +#endif int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); @@ -903,13 +917,15 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, unsigned char *data, int max_len); +#if 0 STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(), void (*free_func)(void *) ); unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf, int *len ); void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)()); -void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct); +#endif +void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); void ASN1_STRING_set_default_mask(unsigned long mask); diff -Naur openssl-0.9.7c.orig/include/openssl/evp.h openssl-0.9.7c/include/openssl/evp.h --- openssl-0.9.7c.orig/include/openssl/evp.h 2003-08-11 10:37:10.000000000 +0100 +++ openssl-0.9.7c/include/openssl/evp.h 2003-12-01 10:57:53.000000000 +0000 @@ -267,6 +267,7 @@ } EVP_PKEY_METHOD; #endif +#if 0 #ifndef EVP_MD struct env_md_st { @@ -314,6 +315,7 @@ #endif #endif /* !EVP_MD */ +#endif struct env_md_ctx_st { diff -Naur openssl-0.9.7c.orig/include/openssl/opensslconf.h openssl-0.9.7c/include/openssl/opensslconf.h --- openssl-0.9.7c.orig/include/openssl/opensslconf.h 2003-09-30 13:38:13.000000000 +0100 +++ openssl-0.9.7c/include/openssl/opensslconf.h 2003-12-01 11:14:07.000000000 +0000 @@ -9,6 +9,9 @@ #endif #endif /* OPENSSL_DOING_MAKEDEPEND */ +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif /* The OPENSSL_NO_* macros are also defined as NO_* if the application asks for it. This is a transient feature that is provided for those @@ -79,7 +82,7 @@ #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) #define CONFIG_HEADER_BN_H -#undef BN_LLONG +#define BN_LLONG /* Should we define BN_DIV2W here? */ @@ -98,7 +101,7 @@ #define CONFIG_HEADER_RC4_LOCL_H /* if this is defined data[i] is used instead of *data, this is a %20 * speedup on x86 */ -#undef RC4_INDEX +#define RC4_INDEX #endif #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) @@ -112,14 +115,14 @@ /* the following is tweaked from a config script, that is why it is a * protected undef/define */ #ifndef DES_PTR -#undef DES_PTR +#define DES_PTR #endif /* This helps C compiler generate the correct code for multiple functional * units. It reduces register dependancies at the expense of 2 more * registers */ #ifndef DES_RISC1 -#undef DES_RISC1 +#define DES_RISC1 #endif #ifndef DES_RISC2 @@ -133,7 +136,7 @@ /* Unroll the inner loop, this sometimes helps, sometimes hinders. * Very mucy CPU dependant */ #ifndef DES_UNROLL -#undef DES_UNROLL +#define DES_UNROLL #endif /* These default values were supplied by diff -Naur openssl-0.9.7c.orig/include/openssl/pem.h openssl-0.9.7c/include/openssl/pem.h --- openssl-0.9.7c.orig/include/openssl/pem.h 2002-11-12 13:22:41.000000000 +0000 +++ openssl-0.9.7c/include/openssl/pem.h 2003-12-01 11:00:04.000000000 +0000 @@ -494,11 +494,13 @@ long len); int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char *name, BIO *bp, pem_password_cb *cb, void *u); +#if 0 char * PEM_ASN1_read_bio(char *(*d2i)(),const char *name,BIO *bp,char **x, pem_password_cb *cb, void *u); int PEM_ASN1_write_bio(int (*i2d)(),const char *name,BIO *bp,char *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, pem_password_cb *cb, void *u); +#endif STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cd, void *u); @@ -508,11 +510,13 @@ int PEM_read(FILE *fp, char **name, char **header, unsigned char **data,long *len); int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len); +#if 0 char * PEM_ASN1_read(char *(*d2i)(),const char *name,FILE *fp,char **x, pem_password_cb *cb, void *u); int PEM_ASN1_write(int (*i2d)(),const char *name,FILE *fp,char *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, pem_password_cb *callback, void *u); +#endif STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); #endif diff -Naur openssl-0.9.7c.orig/include/openssl/rsa.h openssl-0.9.7c/include/openssl/rsa.h --- openssl-0.9.7c.orig/include/openssl/rsa.h 2003-05-07 12:38:13.000000000 +0100 +++ openssl-0.9.7c/include/openssl/rsa.h 2003-12-01 10:54:15.000000000 +0000 @@ -231,11 +231,13 @@ int RSA_print(BIO *bp, const RSA *r,int offset); #endif +#if 0 int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey); RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length, int (*cb)(), int sgckey); int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, int (*cb)()); RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, int (*cb)()); +#endif /* The following 2 functions sign and verify a X509_SIG ASN1 object * inside PKCS#1 padded RSA encryption */ diff -Naur openssl-0.9.7c.orig/include/openssl/ui.h openssl-0.9.7c/include/openssl/ui.h --- openssl-0.9.7c.orig/include/openssl/ui.h 2002-02-05 17:15:17.000000000 +0000 +++ openssl-0.9.7c/include/openssl/ui.h 2003-12-01 10:53:36.000000000 +0000 @@ -217,7 +217,9 @@ /* Give a user interface parametrised control commands. This can be used to send down an integer, a data pointer or a function pointer, as well as be used to get information from a UI. */ +#if 0 int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)()); +#endif /* The commands */ /* Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the diff -Naur openssl-0.9.7c.orig/include/openssl/x509.h openssl-0.9.7c/include/openssl/x509.h --- openssl-0.9.7c.orig/include/openssl/x509.h 2002-11-12 13:23:00.000000000 +0000 +++ openssl-0.9.7c/include/openssl/x509.h 2003-12-01 10:59:16.000000000 +0000 @@ -114,12 +114,14 @@ #define X509v3_KU_DECIPHER_ONLY 0x8000 #define X509v3_KU_UNDEF 0xffff +#if 0 typedef struct X509_objects_st { int nid; int (*a2i)(); int (*i2a)(); } X509_OBJECTS; +#endif struct X509_algor_st { @@ -912,6 +914,7 @@ void X509_INFO_free(X509_INFO *a); char * X509_NAME_oneline(X509_NAME *a,char *buf,int size); +#if 0 int ASN1_verify(int (*i2d)(), X509_ALGOR *algor1, ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey); @@ -921,6 +924,7 @@ int ASN1_sign(int (*i2d)(), X509_ALGOR *algor1, X509_ALGOR *algor2, ASN1_BIT_STRING *signature, char *data,EVP_PKEY *pkey, const EVP_MD *type); +#endif int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data, unsigned char *md,unsigned int *len);