Hello, I have looked into the problem, it seems to be caused by the return type of cipher_kt_mode() in crypto_backend.h being declared as a bool. This function is called from init_key_type() of crypto.c during the tests. The actual mode value in cipher_kt_mode() of openssl_backend.c during the failed test is 2, but is converted to 1 due to this boolean return type. My guess is that this is only happening on OS X because of a specific GCC compiler version or custom Apple patches.
Below I have included a patch that changes the bool return type to an int. This will result in 'make check' to pass. diff --git a/crypto_backend.h b/crypto_backend.h index 8622962..a0966dd 100644 --- a/crypto_backend.h +++ b/crypto_backend.h @@ -218,7 +218,7 @@ int cipher_kt_block_size (const cipher_kt_t *cipher_kt); * @return Cipher mode, either \c OPENVPN_MODE_CBC, \c * OPENVPN_MODE_OFB or \c OPENVPN_MODE_CFB */ -bool cipher_kt_mode (const cipher_kt_t *cipher_kt); +int cipher_kt_mode (const cipher_kt_t *cipher_kt); /** diff --git a/crypto_openssl.c b/crypto_openssl.c index db6b78e..0a41b39 100644 --- a/crypto_openssl.c +++ b/crypto_openssl.c @@ -555,7 +555,7 @@ cipher_kt_block_size (const EVP_CIPHER *cipher_kt) return EVP_CIPHER_block_size (cipher_kt); } -bool +int cipher_kt_mode (const EVP_CIPHER *cipher_kt) { ASSERT(NULL != cipher_kt); diff --git a/crypto_polarssl.c b/crypto_polarssl.c index e7470d5..ac4cadd 100644 --- a/crypto_polarssl.c +++ b/crypto_polarssl.c @@ -313,7 +313,7 @@ cipher_kt_block_size (const cipher_info_t *cipher_kt) return cipher_kt->block_size; } -bool +int cipher_kt_mode (const cipher_info_t *cipher_kt) { ASSERT(NULL != cipher_kt);