Merge remote-tracking branch 'phr0z3nt04st/master'
authorMartin Johansson <martin@fatbob.nu>
Thu, 6 Oct 2011 10:55:31 +0000 (06:55 -0400)
committerMartin Johansson <martin@fatbob.nu>
Thu, 6 Oct 2011 10:55:31 +0000 (06:55 -0400)
Some stuff added to accomodate both v1.x.x and v0.x.x of PolarSSL.

1  2 
src/ssl.c
src/ssl.h

diff --cc src/ssl.c
index 92aaf02e3d3b02fd8208d361e0d8421a2ccd4628,354af85098f95c0ea60fedd1907c48090b6dbf18..ab953f36b6b876e2d91edae223adf9fc1de0d778
+++ b/src/ssl.c
@@@ -45,8 -45,9 +45,7 @@@
  #include <polarssl/x509.h>
  #include <polarssl/ssl.h>
  #include <polarssl/net.h>
- #include <polarssl/version.h>
  
 -#define CA_CRT_FILENAME "ca.crt"
 -
  int ciphers[] =
  {
      SSL_EDH_RSA_AES_256_SHA,
@@@ -142,6 -172,6 +141,8 @@@ static void pssl_debug(void *ctx, int l
  
  void SSLi_init(void)
  {
++      char verstring[12];
++      
        initCert();
        if (builtInTestCertificate) {
                Log_warn("*** Using built-in test certificate and RSA key ***");
        else
                initKey();
      havege_init(&hs);
++    
++#ifdef POLARSSL_VERSION_MAJOR
++    version_get_string(verstring);
++    Log_info("PolarSSL library version %s initialized", verstring);
++#else
        Log_info("PolarSSL library initialized");
++#endif
  }
  
  void SSLi_deinit(void)
@@@ -178,17 -208,18 +185,21 @@@ SSL_handle_t *SSLi_newconnection(int *f
                Log_fatal("Failed to initalize: %d", rc);
        
        ssl_set_endpoint(ssl, SSL_IS_SERVER);   
 -    ssl_set_authmode(ssl, SSL_VERIFY_OPTIONAL);
 +      ssl_set_authmode(ssl, SSL_VERIFY_NONE);
  
 -    ssl_set_rng(ssl, havege_rand, &hs);
 -    ssl_set_dbg(ssl, pssl_debug, NULL);
 -    ssl_set_bio(ssl, net_recv, fd, net_send, fd);
 +      ssl_set_rng(ssl, havege_rand, &hs);
 +      ssl_set_dbg(ssl, pssl_debug, NULL);
 +      ssl_set_bio(ssl, net_recv, fd, net_send, fd);
  
 -    ssl_set_ciphersuites(ssl, ciphers);
++#ifdef POLARSSL_API_V1
++      ssl_set_ciphersuites(ssl, ciphers);
++#else
 +      ssl_set_ciphers(ssl, ciphers);
-       ssl_set_session(ssl, 0, 0, ssn);
++#endif
+     ssl_set_session(ssl, 0, 0, ssn);
  
 -    ssl_set_ca_chain(ssl, certificate.next, NULL, NULL);
 -    ssl_set_own_cert(ssl, &certificate, &key);
 -    ssl_set_dh_param(ssl, my_dhm_P, my_dhm_G);
 +      ssl_set_own_cert(ssl, &certificate, &key);
 +      ssl_set_dh_param(ssl, my_dhm_P, my_dhm_G);
  
        return ssl;
  }
@@@ -199,7 -230,7 +210,11 @@@ int SSLi_nonblockaccept(SSL_handle_t *s
        
        rc = ssl_handshake(ssl);
        if (rc != 0) {
++#ifdef POLARSSL_API_V1                
+               if (rc == POLARSSL_ERR_NET_WANT_READ || rc == POLARSSL_ERR_NET_WANT_WRITE) {
++#else
 +              if (rc == POLARSSL_ERR_NET_TRY_AGAIN) {
++#endif
                        return 0;
                } else {
                        Log_warn("SSL handshake failed: %d", rc);
  int SSLi_read(SSL_handle_t *ssl, uint8_t *buf, int len)
  {
        int rc;
++
        rc = ssl_read(ssl, buf, len);
++#ifdef POLARSSL_API_V1                
+       if (rc == POLARSSL_ERR_NET_WANT_READ)
++#else
 +      if (rc == POLARSSL_ERR_NET_TRY_AGAIN)
++#endif
                return SSLI_ERROR_WANT_READ;
        return rc;
  }
  int SSLi_write(SSL_handle_t *ssl, uint8_t *buf, int len)
  {
        int rc;
++      
        rc = ssl_write(ssl, buf, len);
++#ifdef POLARSSL_API_V1                
+       if (rc == POLARSSL_ERR_NET_WANT_WRITE)
++#else
 +      if (rc == POLARSSL_ERR_NET_TRY_AGAIN)
++#endif
                return SSLI_ERROR_WANT_WRITE;
        return rc;
  }
diff --cc src/ssl.h
index 27920e49b414a0dab06a803b9841675d3f92a8f8,27920e49b414a0dab06a803b9841675d3f92a8f8..5629c4c6507e468c3738c0abaeb5cbde49408ff6
+++ b/src/ssl.h
  
  #ifdef USE_POLARSSL
  #include <polarssl/ssl.h>
++#include <polarssl/version.h>
++
++#ifndef POLARSSL_VERSION_MAJOR
++      #define POLARSSL_API_V0
++#else
++#if (POLARSSL_VERSION_MAJOR == 0)
++      #define POLARSSL_API_V0
  #else
++      #define POLARSSL_API_V1
++#endif
++#endif
++
++#else /* OpenSSL */
  #include <openssl/x509v3.h>
  #include <openssl/ssl.h>
  #endif
  #include <inttypes.h>
  
  #ifdef USE_POLARSSL
--#define SSLI_ERROR_WANT_READ -0x0F300 /* PolarSSL uses -0x0f00 -> --0x0f90 */
++#define SSLI_ERROR_WANT_READ -0x0F300 /* PolarSSL v0.x.x uses -0x0f00 -> --0x0f90, v1.x.x uses -0x7080 -> -0x7e80 */
  #define SSLI_ERROR_WANT_WRITE -0x0F310
++
++#ifdef POLARSSL_API_V1
++#define SSLI_ERROR_ZERO_RETURN 0
++#else
  #define SSLI_ERROR_ZERO_RETURN POLARSSL_ERR_NET_CONN_RESET
++#endif
  #define SSLI_ERROR_CONNRESET POLARSSL_ERR_NET_CONN_RESET
  #define SSLI_ERROR_SYSCALL POLARSSL_ERR_NET_RECV_FAILED