[tor-bugs] #13815 [Tor]: Attempt to port tor to Google's BoringSSL

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Nov 22 14:16:12 UTC 2014


#13815: Attempt to port tor to Google's BoringSSL
-----------------------------+------------------------------------
 Reporter:  teor             |          Owner:
     Type:  enhancement      |         Status:  new
 Priority:  normal           |      Milestone:  Tor: unspecified
Component:  Tor              |        Version:  Tor: 0.2.6.1-alpha
 Keywords:  lorax tor-relay  |  Actual Points:
Parent ID:  #13415           |         Points:
-----------------------------+------------------------------------
 Split from #13415:

 '''nickm:'''

 Interesting. It looks like building with BoringSSL will require some
 actual porting to detect all the APIs they've removed, and to figure out
 whether we can replace them.

 '''teor:'''

 BoringSSL is even worse - it doesn't even have an openssl executable, only
 builds static libraries, and is a pain to configure correctly under our
 current config scripts.

 I can't seem to stop it finding the system-supplied SSL, even when I
 provide it the BoringSSL directories.

  I get the following warnings when I manually install BoringSSL into
 include/lib/bin dirs, and fake the openssl executable using the bssl
 executable:
 (I've cleaned up some warnings that were irrelevant or trivial.)

     CC src/common/crypto.o

 src/common/crypto.c:170:12: warning: implicit declaration of function

     'ENGINE_get_name' is invalid in C99 [-Wimplicit-function-declaration]

     name = ENGINE_get_name(e);


 src/common/crypto.c:171:10: warning: implicit declaration of function

     'ENGINE_get_id' is invalid in C99 [-Wimplicit-function-declaration]

     id = ENGINE_get_id(e);


 src/common/crypto.c:186:15: warning: implicit declaration of function

     'ENGINE_by_id' is invalid in C99 [-Wimplicit-function-declaration]

     ENGINE *e = ENGINE_by_id("dynamic");


 src/common/crypto.c:188:10: warning: implicit declaration of function

     'ENGINE_ctrl_cmd_string' is invalid in C99
     [-Wimplicit-function-declaration]

     if (!ENGINE_ctrl_cmd_string(e, "ID", engine, 0)


 src/common/crypto.c:227:31: warning: implicit declaration of function

     'SSLeay_version' is invalid in C99 [-Wimplicit-function-declaration]

     const char *raw_version = SSLeay_version(SSLEAY_VERSION);


 src/common/crypto.c:227:46: error: use of undeclared identifier
 'SSLEAY_VERSION'

     const char *raw_version = SSLeay_version(SSLEAY_VERSION);


 src/common/crypto.c:241:51: error: use of undeclared identifier

     'OPENSSL_VERSION_TEXT'

         parse_openssl_version_str(OPENSSL_VERSION_TEXT);


 src/common/crypto.c:251:7: warning: implicit declaration of function

     'RAND_get_rand_method' is invalid in C99 [-Wimplicit-function-
 declaration]

     if (RAND_get_rand_method() != RAND_SSLeay()) {


 src/common/crypto.c:251:33: warning: implicit declaration of function

     'RAND_SSLeay' is invalid in C99 [-Wimplicit-function-declaration]

     if (RAND_get_rand_method() != RAND_SSLeay()) {


 src/common/crypto.c:255:5: warning: implicit declaration of function

     'RAND_set_rand_method' is invalid in C99 [-Wimplicit-function-
 declaration]

     RAND_set_rand_method(RAND_SSLeay());

 src/common/crypto.c:291:9: warning: implicit declaration of function
 'SSLeay' is

     invalid in C99 [-Wimplicit-function-declaration]

     if (SSLeay() == OPENSSL_VERSION_NUMBER &&


 src/common/crypto.c:292:32: error: use of undeclared identifier
 'SSLEAY_VERSION'

     !strcmp(SSLeay_version(SSLEAY_VERSION), OPENSSL_VERSION_TEXT)) {


 src/common/crypto.c:292:49: error: use of undeclared identifier

     'OPENSSL_VERSION_TEXT'

         !strcmp(SSLeay_version(SSLEAY_VERSION), OPENSSL_VERSION_TEXT)) {


     CC src/common/crypto_s2k.o

 src/common/crypto.c:294:57: error: use of undeclared identifier
 'SSLEAY_VERSION'

     "(%lx: %s).", SSLeay(), SSLeay_version(SSLEAY_VERSION));


 ./src/common/../common/torlog.h:190:50: note: expanded from macro
 'log_info'

     log_fn_(LOG_INFO, domain, PRETTY_FUNCTION, args)


 src/common/crypto.c:299:55: error: use of undeclared identifier

     'OPENSSL_VERSION_TEXT'

         (unsigned long)OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT,


 ./src/common/../common/torlog.h:194:50: note: expanded from macro
 'log_warn'

     log_fn_(LOG_WARN, domain, PRETTY_FUNCTION, args)


 src/common/crypto.c:300:41: error: use of undeclared identifier
 'SSLEAY_VERSION'

     SSLeay(), SSLeay_version(SSLEAY_VERSION));


 ./src/common/../common/torlog.h:194:50: note: expanded from macro
 'log_warn'

     log_fn_(LOG_WARN, domain, PRETTY_FUNCTION, args)


 src/common/crypto.c:339:7: warning: implicit declaration of function

     'ENGINE_load_builtin_engines' is invalid in C99
     [-Wimplicit-function-declaration]
     ENGINE_load_builtin_engines();

 src/common/crypto.c:340:7: warning: implicit declaration of function

     'ENGINE_register_all_complete' is invalid in C99
     [-Wimplicit-function-declaration]
     ENGINE_register_all_complete();

 src/common/crypto.c:350:13: warning: incompatible integer to pointer
 conversion

     assigning to 'ENGINE *' (aka 'struct engine_st *') from 'int'
     [-Wint-conversion]

         e = ENGINE_by_id(accelName);

             ~

 src/common/crypto.c:363:9: warning: implicit declaration of function

     'ENGINE_set_default' is invalid in C99 [-Wimplicit-function-
 declaration]

         ENGINE_set_default(e, ENGINE_METHOD_ALL);

 src/common/crypto.c:363:31: error: use of undeclared identifier

     'ENGINE_METHOD_ALL'

         ENGINE_set_default(e, ENGINE_METHOD_ALL);


 src/common/crypto.c:367:25: warning: implicit declaration of function

     'ENGINE_get_default_RSA' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("RSA", ENGINE_get_default_RSA());


 src/common/crypto.c:368:24: warning: implicit declaration of function

     'ENGINE_get_default_DH' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("DH", ENGINE_get_default_DH());


 src/common/crypto.c:369:26: warning: implicit declaration of function

     'ENGINE_get_default_ECDH' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("ECDH", ENGINE_get_default_ECDH());


 src/common/crypto.c:370:27: warning: implicit declaration of function

     'ENGINE_get_default_ECDSA' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("ECDSA", ENGINE_get_default_ECDSA());


 src/common/crypto.c:371:26: warning: implicit declaration of function

     'ENGINE_get_default_RAND' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("RAND", ENGINE_get_default_RAND());


 src/common/crypto.c:373:26: warning: implicit declaration of function

     'ENGINE_get_digest_engine' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("SHA1", ENGINE_get_digest_engine(NID_sha1));


 src/common/crypto.c:374:30: warning: implicit declaration of function

     'ENGINE_get_cipher_engine' is invalid in C99
     [-Wimplicit-function-declaration]
     log_engine("3DES-CBC", ENGINE_get_cipher_engine(NID_des_ede3_cbc));


 src/common/crypto.c:408:3: warning: implicit declaration of function

     'ERR_remove_state' is invalid in C99 [-Wimplicit-function-declaration]

     ERR_remove_state(0);

 src/common/crypto.c:691:25: error: incomplete definition of type

     'struct buf_mem_st'

     *dest = tor_malloc(buf->length+1);

         ~

 ./src/common/util.h:116:44: note: expanded from macro 'tor_malloc'
 #define tor_malloc(size) tor_malloc_(size DMALLOC_ARGS)


 /test/tor/boringssl-install/include/openssl/base.h:170:16: note: forward

     declaration of 'struct buf_mem_st'

 typedef struct buf_mem_st BUF_MEM;


 src/common/crypto.c:692:20: error: incomplete definition of type

     'struct buf_mem_st'

     memcpy(*dest, buf->data, buf->length);

         ~

 /usr/include/secure/_string.h:65:33: note: expanded from macro 'memcpy'

     builtin_memcpy_chk (dest, src, len, darwin_obsz0 (dest))


 /test/tor/boringssl-install/include/openssl/base.h:170:16: note: forward

     declaration of 'struct buf_mem_st'

 typedef struct buf_mem_st BUF_MEM;


 src/common/crypto.c:692:31: error: incomplete definition of type

     'struct buf_mem_st'

     memcpy(*dest, buf->data, buf->length);

         ~

 /usr/include/secure/_string.h:65:38: note: expanded from macro 'memcpy'

     builtin_memcpy_chk (dest, src, len, darwin_obsz0 (dest))


 /test/tor/boringssl-install/include/openssl/base.h:170:16: note: forward

     declaration of 'struct buf_mem_st'

 typedef struct buf_mem_st BUF_MEM;


 src/common/crypto.c:693:14: error: incomplete definition of type

     'struct buf_mem_st'

     (*dest)[buf->length] = 0; /* nul terminate it */

         ~

 /test/tor/boringssl-install/include/openssl/base.h:170:16: note: forward

     declaration of 'struct buf_mem_st'

 typedef struct buf_mem_st BUF_MEM;


 src/common/crypto.c:694:13: error: incomplete definition of type

     'struct buf_mem_st'

     *len = buf->length;

         ~

 /test/tor/boringssl-install/include/openssl/base.h:170:16: note: forward

     declaration of 'struct buf_mem_st'

 typedef struct buf_mem_st BUF_MEM;


 src/common/crypto.c:695:3: warning: implicit declaration of function

     'BUF_MEM_free' is invalid in C99 [-Wimplicit-function-declaration]

     BUF_MEM_free(buf);

 src/common/crypto.c:1783:19: warning: implicit declaration of function

     'DH_generate_parameters' is invalid in C99
     [-Wimplicit-function-declaration]

     dh_parameters = DH_generate_parameters(DH_BYTES*8, DH_GENERATOR, NULL,
 NULL);


 src/common/crypto.c:2118:12: error: no member named 'length' in 'struct
 dh_st'

     res->dh->length = DH_PRIVATE_KEY_BITS;
     ~

 src/common/crypto.c:3046:2: error: OpenSSL has been built without thread

     support. Tor requires an OpenSSL library with thread support enabled.

 #error OpenSSL has been built without thread support. Tor requires an \


 src/common/crypto.c:3149:3: warning: implicit declaration of function

     'ENGINE_cleanup' is invalid in C99 [-Wimplicit-function-declaration]

     ENGINE_cleanup();

 src/common/crypto.c:3152:3: warning: implicit declaration of function

     'CONF_modules_unload' is invalid in C99 [-Wimplicit-function-
 declaration]

     CONF_modules_unload(1);

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/13815>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list