e12b7ca
diff -up kdelibs-3.5.10/kio/kssl/kopenssl.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/kopenssl.cc
32fcc2a
--- kdelibs-3.5.10/kio/kssl/kopenssl.cc.ossl-1.x	2009-09-04 23:10:53.000000000 +0200
32fcc2a
+++ kdelibs-3.5.10/kio/kssl/kopenssl.cc	2009-09-04 23:10:53.000000000 +0200
e12b7ca
@@ -96,9 +96,14 @@ static int  (*K_BIO_write) (BIO *b, cons
e12b7ca
 static int (*K_PEM_ASN1_write_bio) (int (*)(),const char *,BIO *,char *,
e12b7ca
                                    const EVP_CIPHER *,unsigned char *,int ,
e12b7ca
                                             pem_password_cb *, void *) = 0L;
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+static int (*K_ASN1_item_i2d_fp)(ASN1_ITEM *,FILE *,unsigned char *) = 0L;
e12b7ca
+static ASN1_ITEM *K_NETSCAPE_X509_it = 0L;
e12b7ca
+#else
e12b7ca
 static ASN1_METHOD* (*K_X509_asn1_meth) (void) = 0L;
e12b7ca
 static int (*K_ASN1_i2d_fp)(int (*)(),FILE *,unsigned char *) = 0L;
e12b7ca
 static int (*K_i2d_ASN1_HEADER)(ASN1_HEADER *, unsigned char **) = 0L;
e12b7ca
+#endif
e12b7ca
 static int (*K_X509_print_fp)  (FILE *, X509*) = 0L;
e12b7ca
 static int (*K_i2d_PKCS12)  (PKCS12*, unsigned char**) = 0L;
e12b7ca
 static int (*K_i2d_PKCS12_fp)  (FILE *, PKCS12*) = 0L;
e12b7ca
@@ -430,9 +435,14 @@ KConfig *cfg;
e12b7ca
       K_BIO_ctrl = (long (*) (BIO *,int,long,void *)) _cryptoLib->symbol("BIO_ctrl");
e12b7ca
       K_BIO_write = (int (*) (BIO *b, const void *data, int len)) _cryptoLib->symbol("BIO_write");
e12b7ca
       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");
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+      K_ASN1_item_i2d_fp = (int (*)(ASN1_ITEM *, FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_item_i2d_fp");
e12b7ca
+      K_NETSCAPE_X509_it = (ASN1_ITEM *) _cryptoLib->symbol("NETSCAPE_X509_it");
e12b7ca
+#else
e12b7ca
       K_X509_asn1_meth = (ASN1_METHOD* (*)(void)) _cryptoLib->symbol("X509_asn1_meth");
e12b7ca
       K_ASN1_i2d_fp = (int (*)(int (*)(), FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_i2d_fp");
e12b7ca
       K_i2d_ASN1_HEADER = (int (*)(ASN1_HEADER *, unsigned char **)) _cryptoLib->symbol("i2d_ASN1_HEADER");
e12b7ca
+#endif
e12b7ca
       K_X509_print_fp = (int (*)(FILE*, X509*)) _cryptoLib->symbol("X509_print_fp");
e12b7ca
       K_i2d_PKCS12 = (int (*)(PKCS12*, unsigned char**)) _cryptoLib->symbol("i2d_PKCS12");
e12b7ca
       K_i2d_PKCS12_fp = (int (*)(FILE *, PKCS12*)) _cryptoLib->symbol("i2d_PKCS12_fp");
e12b7ca
@@ -594,7 +604,7 @@ KConfig *cfg;
e12b7ca
       K_SSL_set_session = (int (*)(SSL*,SSL_SESSION*)) _sslLib->symbol("SSL_set_session");
e12b7ca
       K_d2i_SSL_SESSION = (SSL_SESSION* (*)(SSL_SESSION**,unsigned char**, long)) _sslLib->symbol("d2i_SSL_SESSION");
e12b7ca
       K_i2d_SSL_SESSION = (int (*)(SSL_SESSION*,unsigned char**)) _sslLib->symbol("i2d_SSL_SESSION");
e12b7ca
-      K_SSL_get_ciphers = (STACK *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
e12b7ca
+      K_SSL_get_ciphers = (STACK_OF(SSL_CIPHER) *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
e12b7ca
 #endif
e12b7ca
 
e12b7ca
 
32fcc2a
@@ -982,7 +992,13 @@ int KOpenSSLProxy::PEM_write_bio_X509(BI
e12b7ca
    else return -1;
e12b7ca
 }
e12b7ca
 
e12b7ca
-
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+int KOpenSSLProxy::ASN1_i2d_fp(FILE *out,unsigned char *x) {
e12b7ca
+   if (K_ASN1_item_i2d_fp && K_NETSCAPE_X509_it)
e12b7ca
+        return (K_ASN1_item_i2d_fp)(K_NETSCAPE_X509_it, out, x);
e12b7ca
+   else return -1;
e12b7ca
+}
e12b7ca
+#else
e12b7ca
 ASN1_METHOD *KOpenSSLProxy::X509_asn1_meth(void) {
e12b7ca
    if (K_X509_asn1_meth) return (K_X509_asn1_meth)();
e12b7ca
    else return 0L;
32fcc2a
@@ -994,7 +1010,7 @@ int KOpenSSLProxy::ASN1_i2d_fp(FILE *out
32fcc2a
         return (K_ASN1_i2d_fp)((int (*)())K_i2d_ASN1_HEADER, out, x);
32fcc2a
    else return -1;
e12b7ca
 }
e12b7ca
-
e12b7ca
+#endif
e12b7ca
 
e12b7ca
 int KOpenSSLProxy::X509_print(FILE *fp, X509 *x) {
e12b7ca
    if (K_X509_print_fp) return (K_X509_print_fp)(fp, x);
e12b7ca
diff -up kdelibs-3.5.10/kio/kssl/kopenssl.h.ossl-1.x kdelibs-3.5.10/kio/kssl/kopenssl.h
e12b7ca
--- kdelibs-3.5.10/kio/kssl/kopenssl.h.ossl-1.x	2006-07-22 10:16:39.000000000 +0200
32fcc2a
+++ kdelibs-3.5.10/kio/kssl/kopenssl.h	2009-09-04 23:10:53.000000000 +0200
e12b7ca
@@ -48,6 +48,9 @@ class KOpenSSLProxyPrivate;
e12b7ca
 #include <openssl/stack.h>
e12b7ca
 #include <openssl/bn.h>
e12b7ca
 #undef crypt
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+#define STACK _STACK
e12b7ca
+#endif
e12b7ca
 #endif
e12b7ca
 
e12b7ca
 #include <kstaticdeleter.h>
e12b7ca
@@ -446,12 +449,12 @@ public:
e12b7ca
     */
e12b7ca
    int PEM_write_bio_X509(BIO *bp, X509 *x);
e12b7ca
 
e12b7ca
-
e12b7ca
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
e12b7ca
    /*
e12b7ca
     *   X509_asn1_meth - used for netscape output
e12b7ca
     */
e12b7ca
    ASN1_METHOD *X509_asn1_meth();
e12b7ca
-
e12b7ca
+#endif
e12b7ca
 
e12b7ca
    /*
e12b7ca
     *   ASN1_i2d_fp - used for netscape output
e12b7ca
@@ -531,6 +534,9 @@ public:
e12b7ca
     */
e12b7ca
    void sk_free(STACK *s);
e12b7ca
 
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+   void sk_free(void *s) { return sk_free(reinterpret_cast<STACK*>(s)); }
e12b7ca
+#endif
e12b7ca
 
e12b7ca
    /* 
e12b7ca
     *  Number of elements in the stack
e12b7ca
@@ -543,6 +549,9 @@ public:
e12b7ca
     */
e12b7ca
    char *sk_value(STACK *s, int n);
e12b7ca
 
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+   char *sk_value(void *s, int n) { return sk_value(reinterpret_cast<STACK*>(s), n); }
e12b7ca
+#endif
e12b7ca
 
e12b7ca
    /* 
e12b7ca
     *  Create a new stack
e12b7ca
@@ -555,6 +564,9 @@ public:
e12b7ca
     */
e12b7ca
    int sk_push(STACK *s, char *d);
e12b7ca
 
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+   int sk_push(void *s, void *d) { return sk_push(reinterpret_cast<STACK*>(s), reinterpret_cast<char*>(d)); }
e12b7ca
+#endif
e12b7ca
 
e12b7ca
    /* 
e12b7ca
     *  Duplicate the stack
e12b7ca
diff -up kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc
e12b7ca
--- kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc.ossl-1.x	2005-10-10 17:05:44.000000000 +0200
32fcc2a
+++ kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc	2009-09-04 23:10:53.000000000 +0200
e12b7ca
@@ -87,7 +87,7 @@ KSMIMECryptoPrivate::KSMIMECryptoPrivate
e12b7ca
 
e12b7ca
 
e12b7ca
 STACK_OF(X509) *KSMIMECryptoPrivate::certsToX509(QPtrList<KSSLCertificate> &certs) {
e12b7ca
-    STACK_OF(X509) *x509 = sk_new(NULL);
e12b7ca
+    STACK_OF(X509) *x509 = reinterpret_cast<STACK_OF(X509)*>(sk_new(NULL));
e12b7ca
     KSSLCertificate *cert = certs.first();
e12b7ca
     while(cert) {
e12b7ca
 	sk_X509_push(x509, cert->getCert());
e12b7ca
diff -up kdelibs-3.5.10/kio/kssl/ksslcertificate.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/ksslcertificate.cc
e12b7ca
--- kdelibs-3.5.10/kio/kssl/ksslcertificate.cc.ossl-1.x	2006-01-19 18:06:12.000000000 +0100
32fcc2a
+++ kdelibs-3.5.10/kio/kssl/ksslcertificate.cc	2009-09-04 23:10:53.000000000 +0200
e12b7ca
@@ -1003,17 +1003,31 @@ return qba;
e12b7ca
 QByteArray KSSLCertificate::toNetscape() {
e12b7ca
 QByteArray qba;
e12b7ca
 #ifdef KSSL_HAVE_SSL
e12b7ca
-ASN1_HEADER ah;
e12b7ca
-ASN1_OCTET_STRING os;
e12b7ca
-KTempFile ktf;
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+	NETSCAPE_X509 nx;
e12b7ca
+	ASN1_OCTET_STRING hdr;
e12b7ca
+#else
e12b7ca
+   ASN1_HEADER ah;
e12b7ca
+   ASN1_OCTET_STRING os;
e12b7ca
+#endif
e12b7ca
+	KTempFile ktf;
e12b7ca
 
e12b7ca
-	os.data = (unsigned char *)NETSCAPE_CERT_HDR;
e12b7ca
-	os.length = strlen(NETSCAPE_CERT_HDR);
e12b7ca
-	ah.header = &os;
e12b7ca
-	ah.data = (char *)getCert();
e12b7ca
-	ah.meth = d->kossl->X509_asn1_meth();
e12b7ca
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
e12b7ca
+	hdr.data = (unsigned char *)NETSCAPE_CERT_HDR;
e12b7ca
+	hdr.length = strlen(NETSCAPE_CERT_HDR);
e12b7ca
+	nx.header = &hd;;
e12b7ca
+	nx.cert = getCert();
e12b7ca
+
e12b7ca
+	d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&nx;;
e12b7ca
+#else
e12b7ca
+   os.data = (unsigned char *)NETSCAPE_CERT_HDR;
e12b7ca
+   os.length = strlen(NETSCAPE_CERT_HDR);
e12b7ca
+   ah.header = &os;
e12b7ca
+   ah.data = (char *)getCert();
e12b7ca
+   ah.meth = d->kossl->X509_asn1_meth();
e12b7ca
 
e12b7ca
-	d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&ah;;
e12b7ca
+   d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&ah;;
e12b7ca
+#endif
e12b7ca
 
e12b7ca
 	ktf.close();
e12b7ca