Hi ports@,

The attached patch gets net/tor 0.2.9.9 building and passing tests
again on -current.  I believe it would also be acceptable to upstream.
It is also required to test the Tor Browser 6.5 update, which I will
post next.

Feedback most welcome.

Pax, -A
--
https://haqistan.net/~attila | attila@{stalphonsos.com,haqistan.net}
pgp: 0x62A729CF | C2CE 2487 03AC 4C2F 101D  09C1 4068 D5D5 62A7 29CF
Index: tor/patches/patch-src_test_test_tortls_c
===================================================================
RCS file: tor/patches/patch-src_test_test_tortls_c
diff -N tor/patches/patch-src_test_test_tortls_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tor/patches/patch-src_test_test_tortls_c	26 Jan 2017 17:54:19 -0000
@@ -0,0 +1,65 @@
+$OpenBSD$
+
+OPENSSL_OPAQUE should be turned on for LibreSSL as of r1.114 of ssl.h
+Also hoist a function used by OPAQUE tests out of an #ifndef OPAQUE
+--- src/test/test_tortls.c.orig	Thu Jan 26 11:51:15 2017
++++ src/test/test_tortls.c	Thu Jan 26 12:50:07 2017
+@@ -46,6 +46,10 @@ ENABLE_GCC_WARNING(redundant-decls)
+ #define SSL_STATE_STR "before/accept initialization"
+ #endif
+ 
++#if defined(LIBRESSL_VERSION_NUMBER)
++#define OPENSSL_OPAQUE
++#endif
++
+ #ifndef OPENSSL_OPAQUE
+ static SSL_METHOD *
+ give_me_a_test_method(void)
+@@ -723,6 +727,23 @@ test_tortls_get_my_certs(void *ignored)
+   (void)1;
+ }
+ 
++static SSL_CIPHER *
++get_cipher_by_name(const char *name)
++{
++  int i;
++  const SSL_METHOD *method = SSLv23_method();
++  int num = method->num_ciphers();
++  for (i = 0; i < num; ++i) {
++    const SSL_CIPHER *cipher = method->get_cipher(i);
++    const char *ciphername = SSL_CIPHER_get_name(cipher);
++    if (!strcmp(ciphername, name)) {
++      return (SSL_CIPHER *)cipher;
++    }
++  }
++
++  return NULL;
++}
++
+ #ifndef OPENSSL_OPAQUE
+ static void
+ test_tortls_get_ciphersuite_name(void *ignored)
+@@ -739,23 +760,6 @@ test_tortls_get_ciphersuite_name(void *ignored)
+  done:
+   tor_free(ctx->ssl);
+   tor_free(ctx);
+-}
+-
+-static SSL_CIPHER *
+-get_cipher_by_name(const char *name)
+-{
+-  int i;
+-  const SSL_METHOD *method = SSLv23_method();
+-  int num = method->num_ciphers();
+-  for (i = 0; i < num; ++i) {
+-    const SSL_CIPHER *cipher = method->get_cipher(i);
+-    const char *ciphername = SSL_CIPHER_get_name(cipher);
+-    if (!strcmp(ciphername, name)) {
+-      return (SSL_CIPHER *)cipher;
+-    }
+-  }
+-
+-  return NULL;
+ }
+ 
+ static SSL_CIPHER *

Reply via email to