Ignore:
Timestamp:
Jan 23, 2017 3:34:17 AM (7 years ago)
Author:
nanang
Message:

Close #1932: Support OpenSSL 1.1.0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/src/pj/ssl_sock_ossl.c

    r5517 r5537  
    4646 * Include OpenSSL headers  
    4747 */ 
     48#include <openssl/asn1.h> 
    4849#include <openssl/bio.h> 
    4950#include <openssl/ssl.h> 
     
    111112#endif 
    112113 
     114 
     115#if OPENSSL_VERSION_NUMBER >= 0x10100000L 
     116#  define OPENSSL_NO_SSL2           /* seems to be removed in 1.1.0 */ 
     117#  define M_ASN1_STRING_data(x)     ASN1_STRING_get0_data(x) 
     118#  define M_ASN1_STRING_length(x)   ASN1_STRING_length(x) 
     119#else 
     120#  define SSL_CIPHER_get_id(c)      (c)->id 
     121#  define SSL_set_session(ssl, s)   (ssl)->session = (s) 
     122#endif 
     123 
     124 
    113125#ifdef _MSC_VER 
    114126#  pragma comment( lib, "libeay32") 
    115127#  pragma comment( lib, "ssleay32") 
     128#  pragma comment( lib, "crypt32") 
    116129#endif 
    117130 
     
    432445            c = sk_SSL_CIPHER_value(sk_cipher,i); 
    433446            openssl_ciphers[i].id = (pj_ssl_cipher) 
    434                                     (pj_uint32_t)c->id & 0x00FFFFFF; 
     447                                    (pj_uint32_t)SSL_CIPHER_get_id(c) & 
     448                                    0x00FFFFFF; 
    435449            openssl_ciphers[i].name = SSL_CIPHER_get_name(c); 
    436450        } 
    437451        openssl_cipher_num = n; 
    438452 
    439         ssl->session = SSL_SESSION_new(); 
     453        SSL_set_session(ssl, SSL_SESSION_new()); 
    440454 
    441455#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x1000200fL 
     
    10141028            c = sk_SSL_CIPHER_value(sk_cipher, j); 
    10151029            if (ssock->param.ciphers[i] == (pj_ssl_cipher) 
    1016                                            ((pj_uint32_t)c->id & 0x00FFFFFF)) 
     1030                                           ((pj_uint32_t)SSL_CIPHER_get_id(c) & 
     1031                                           0x00FFFFFF)) 
    10171032            { 
    10181033                const char *c_name; 
     
    10671082    } 
    10681083 
    1069     if( ssock->ossl_ssl->server ) { 
     1084    if( SSL_is_server(ssock->ossl_ssl) ) { 
    10701085        ret = SSL_set1_curves(ssock->ossl_ssl, curves, 
    10711086                              ssock->param.curves_num); 
     
    12261241    char buf[512]; 
    12271242    pj_uint8_t serial_no[64] = {0}; /* should be >= sizeof(ci->serial_no) */ 
    1228     pj_uint8_t *q; 
     1243    const pj_uint8_t *q; 
    12291244    unsigned len; 
    12301245    GENERAL_NAMES *names = NULL; 
     
    12361251 
    12371252    /* Get serial no */ 
    1238     q = (pj_uint8_t*) M_ASN1_STRING_data(X509_get_serialNumber(x)); 
     1253    q = (const pj_uint8_t*) M_ASN1_STRING_data(X509_get_serialNumber(x)); 
    12391254    len = M_ASN1_STRING_length(X509_get_serialNumber(x)); 
    12401255    if (len > sizeof(ci->serial_no))  
     
    26432658        /* Current cipher */ 
    26442659        cipher = SSL_get_current_cipher(ssock->ossl_ssl); 
    2645         info->cipher = (cipher->id & 0x00FFFFFF); 
     2660        info->cipher = (SSL_CIPHER_get_id(cipher) & 0x00FFFFFF); 
    26462661 
    26472662        /* Remote address */ 
Note: See TracChangeset for help on using the changeset viewer.