#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,
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)
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;
}
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;
}
#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