5cecce41d7
Enable openssl again on NetBSD-current. Bump PKGREVISION.
228 lines
8.5 KiB
Text
228 lines
8.5 KiB
Text
$NetBSD: patch-bd,v 1.14 2009/08/31 20:54:27 wiz Exp $
|
|
|
|
--- kio/kssl/kopenssl.cc.orig 2006-07-22 20:16:39.000000000 +1200
|
|
+++ kio/kssl/kopenssl.cc
|
|
@@ -96,9 +96,14 @@ static int (*K_BIO_write) (BIO *b, cons
|
|
static int (*K_PEM_ASN1_write_bio) (int (*)(),const char *,BIO *,char *,
|
|
const EVP_CIPHER *,unsigned char *,int ,
|
|
pem_password_cb *, void *) = 0L;
|
|
+#if OPENSSL_VERSION_NUMBER < 0x00909000L
|
|
static ASN1_METHOD* (*K_X509_asn1_meth) (void) = 0L;
|
|
static int (*K_ASN1_i2d_fp)(int (*)(),FILE *,unsigned char *) = 0L;
|
|
static int (*K_i2d_ASN1_HEADER)(ASN1_HEADER *, unsigned char **) = 0L;
|
|
+#else
|
|
+static int (*K_ASN1_item_i2d_fp)(ASN1_ITEM *,FILE *,unsigned char *) = 0L;
|
|
+static ASN1_ITEM *K_NETSCAPE_X509_it = 0L;
|
|
+#endif
|
|
static int (*K_X509_print_fp) (FILE *, X509*) = 0L;
|
|
static int (*K_i2d_PKCS12) (PKCS12*, unsigned char**) = 0L;
|
|
static int (*K_i2d_PKCS12_fp) (FILE *, PKCS12*) = 0L;
|
|
@@ -217,7 +222,7 @@ void KOpenSSLProxy::destroy() {
|
|
_me = 0L;
|
|
}
|
|
|
|
-#ifdef __OpenBSD__
|
|
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
|
|
#include <qdir.h>
|
|
#include <qstring.h>
|
|
#include <qstringlist.h>
|
|
@@ -240,10 +245,20 @@ static QString findMostRecentLib(QString
|
|
for (QStringList::Iterator it = l.begin(); it != l.end(); ++it) {
|
|
QString numberpart = (*it).mid(s);
|
|
uint endmaj = numberpart.find('.');
|
|
- if (endmaj == -1)
|
|
- continue;
|
|
bool ok;
|
|
- int maj = numberpart.left(endmaj).toInt(&ok);
|
|
+ int maj;
|
|
+ if (endmaj == -1) {
|
|
+ int maj = numberpart.toInt(&ok);
|
|
+ if (!ok)
|
|
+ continue;
|
|
+ if (maj <= bestmaj)
|
|
+ continue;
|
|
+ bestmaj = maj;
|
|
+ bestmin = -1;
|
|
+ best = (*it);
|
|
+ continue;
|
|
+ }
|
|
+ maj = numberpart.left(endmaj).toInt(&ok);
|
|
if (!ok)
|
|
continue;
|
|
int min = numberpart.mid(endmaj+1).toInt(&ok);
|
|
@@ -280,42 +295,23 @@ KConfig *cfg;
|
|
|
|
delete cfg;
|
|
|
|
-#ifdef __OpenBSD__
|
|
- {
|
|
- QString libname = findMostRecentLib("/usr/lib" KDELIBSUFF, "crypto");
|
|
- if (!libname.isNull())
|
|
- _cryptoLib = ll->globalLibrary(libname.latin1());
|
|
- }
|
|
-#elif defined(__CYGWIN__)
|
|
- libpaths << "/usr/bin/"
|
|
- << "/usr/local/bin"
|
|
- << "/usr/local/openssl/bin"
|
|
- << "/opt/openssl/bin"
|
|
- << "/opt/kde3/bin"
|
|
- << "";
|
|
-
|
|
- libnamess << "cygssl-0.9.7.dll"
|
|
- << "cygssl.dll"
|
|
- << "libssl.dll"
|
|
- << "";
|
|
-
|
|
- libnamesc << "cygcrypto.dll"
|
|
- << "libcrypto.dll"
|
|
- << "";
|
|
-#else
|
|
libpaths
|
|
- #ifdef _AIX
|
|
+#ifdef _AIX
|
|
<< "/opt/freeware/lib/"
|
|
- #endif
|
|
+#endif
|
|
<< "/usr/lib" KDELIBSUFF "/"
|
|
+ << "/usr/pkg/lib/"
|
|
+#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
|
|
<< "/usr/ssl/lib" KDELIBSUFF "/"
|
|
<< "/usr/local/lib" KDELIBSUFF "/"
|
|
<< "/usr/local/openssl/lib" KDELIBSUFF "/"
|
|
<< "/usr/local/ssl/lib" KDELIBSUFF "/"
|
|
<< "/opt/openssl/lib" KDELIBSUFF "/"
|
|
<< "/lib" KDELIBSUFF "/"
|
|
+#endif
|
|
<< "";
|
|
|
|
+#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
|
|
// FIXME: #define here for the various OS types to optimize
|
|
libnamess
|
|
#ifdef hpux
|
|
@@ -330,8 +326,12 @@ KConfig *cfg;
|
|
<< "libssl.so." SHLIB_VERSION_NUMBER
|
|
#endif
|
|
<< "libssl.so"
|
|
+ #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10000000L
|
|
+ << "libssl.so.1"
|
|
+ #else
|
|
<< "libssl.so.0"
|
|
#endif
|
|
+ #endif
|
|
;
|
|
|
|
libnamesc
|
|
@@ -347,14 +347,23 @@ KConfig *cfg;
|
|
<< "libcrypto.so." SHLIB_VERSION_NUMBER
|
|
#endif
|
|
<< "libcrypto.so"
|
|
+ #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10000000L
|
|
+ << "libcrypto.so.1"
|
|
+ #else
|
|
<< "libcrypto.so.0"
|
|
#endif
|
|
+ #endif
|
|
;
|
|
#endif
|
|
|
|
for (QStringList::Iterator it = libpaths.begin();
|
|
it != libpaths.end();
|
|
++it) {
|
|
+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
|
|
+ QString libname = findMostRecentLib(*it, "crypto");
|
|
+ if (!libname.isNull())
|
|
+ _cryptoLib = ll->globalLibrary(libname.latin1());
|
|
+#else
|
|
for (QStringList::Iterator shit = libnamesc.begin();
|
|
shit != libnamesc.end();
|
|
++shit) {
|
|
@@ -368,6 +377,7 @@ KConfig *cfg;
|
|
_cryptoLib = ll->globalLibrary(alib.latin1());
|
|
if (_cryptoLib) break;
|
|
}
|
|
+#endif
|
|
if (_cryptoLib) break;
|
|
}
|
|
|
|
@@ -404,9 +414,14 @@ KConfig *cfg;
|
|
K_BIO_ctrl = (long (*) (BIO *,int,long,void *)) _cryptoLib->symbol("BIO_ctrl");
|
|
K_BIO_write = (int (*) (BIO *b, const void *data, int len)) _cryptoLib->symbol("BIO_write");
|
|
K_PEM_ASN1_write_bio = (int (*)(int (*)(), const char *,BIO*, char*, const EVP_CIPHER *, unsigned char *, int, pem_password_cb *, void *)) _cryptoLib->symbol("PEM_ASN1_write_bio");
|
|
+#if OPENSSL_VERSION_NUMBER < 0x00909000L
|
|
K_X509_asn1_meth = (ASN1_METHOD* (*)(void)) _cryptoLib->symbol("X509_asn1_meth");
|
|
K_ASN1_i2d_fp = (int (*)(int (*)(), FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_i2d_fp");
|
|
K_i2d_ASN1_HEADER = (int (*)(ASN1_HEADER *, unsigned char **)) _cryptoLib->symbol("i2d_ASN1_HEADER");
|
|
+#else
|
|
+ K_ASN1_item_i2d_fp = (int (*)(ASN1_ITEM *, FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_item_i2d_fp");
|
|
+ K_NETSCAPE_X509_it = (ASN1_ITEM *) _cryptoLib->symbol("NETSCAPE_X509_it");
|
|
+#endif
|
|
K_X509_print_fp = (int (*)(FILE*, X509*)) _cryptoLib->symbol("X509_print_fp");
|
|
K_i2d_PKCS12 = (int (*)(PKCS12*, unsigned char**)) _cryptoLib->symbol("i2d_PKCS12");
|
|
K_i2d_PKCS12_fp = (int (*)(FILE *, PKCS12*)) _cryptoLib->symbol("i2d_PKCS12_fp");
|
|
@@ -497,16 +512,14 @@ KConfig *cfg;
|
|
#endif
|
|
}
|
|
|
|
-#ifdef __OpenBSD__
|
|
- {
|
|
- QString libname = findMostRecentLib("/usr/lib", "ssl");
|
|
- if (!libname.isNull())
|
|
- _sslLib = ll->globalLibrary(libname.latin1());
|
|
- }
|
|
-#else
|
|
for (QStringList::Iterator it = libpaths.begin();
|
|
it != libpaths.end();
|
|
++it) {
|
|
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
|
|
+ QString libname = findMostRecentLib(*it, "ssl");
|
|
+ if (!libname.isNull())
|
|
+ _sslLib = ll->globalLibrary(libname.latin1());
|
|
+#else
|
|
for (QStringList::Iterator shit = libnamess.begin();
|
|
shit != libnamess.end();
|
|
++shit) {
|
|
@@ -520,10 +533,10 @@ KConfig *cfg;
|
|
_sslLib = ll->globalLibrary(alib.latin1());
|
|
if (_sslLib) break;
|
|
}
|
|
+#endif
|
|
if (_sslLib) break;
|
|
}
|
|
-#endif
|
|
-
|
|
+
|
|
if (_sslLib) {
|
|
#ifdef KSSL_HAVE_SSL
|
|
// stand back from your monitor and look at this. it's fun! :)
|
|
@@ -568,7 +581,7 @@ KConfig *cfg;
|
|
K_SSL_set_session = (int (*)(SSL*,SSL_SESSION*)) _sslLib->symbol("SSL_set_session");
|
|
K_d2i_SSL_SESSION = (SSL_SESSION* (*)(SSL_SESSION**,unsigned char**, long)) _sslLib->symbol("d2i_SSL_SESSION");
|
|
K_i2d_SSL_SESSION = (int (*)(SSL_SESSION*,unsigned char**)) _sslLib->symbol("i2d_SSL_SESSION");
|
|
- K_SSL_get_ciphers = (STACK *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
|
|
+ K_SSL_get_ciphers = (STACK_OF(SSL_CIPHER) *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
|
|
#endif
|
|
|
|
|
|
@@ -957,6 +970,8 @@ int KOpenSSLProxy::PEM_write_bio_X509(BI
|
|
}
|
|
|
|
|
|
+#if OPENSSL_VERSION_NUMBER < 0x00909000L
|
|
+
|
|
ASN1_METHOD *KOpenSSLProxy::X509_asn1_meth(void) {
|
|
if (K_X509_asn1_meth) return (K_X509_asn1_meth)();
|
|
else return 0L;
|
|
@@ -968,6 +983,13 @@ int KOpenSSLProxy::ASN1_i2d_fp(FILE *out
|
|
return (K_ASN1_i2d_fp)((int (*)())K_i2d_ASN1_HEADER, out, x);
|
|
else return -1;
|
|
}
|
|
+#else
|
|
+int KOpenSSLProxy::ASN1_i2d_fp(FILE *out,unsigned char *x) {
|
|
+ if (K_ASN1_item_i2d_fp && K_NETSCAPE_X509_it)
|
|
+ return (K_ASN1_item_i2d_fp)(K_NETSCAPE_X509_it, out, x);
|
|
+ else return -1;
|
|
+}
|
|
+#endif
|
|
|
|
|
|
int KOpenSSLProxy::X509_print(FILE *fp, X509 *x) {
|