2017-04-24 73 views
2

當我嘗試在Lubuntu 16.04 x86_64上構建PJSIP 2.6時,即使安裝了OpenSSL,也找不到AES GCM支持。PJSIP build沒有找到OpenSSL AES GCM支持

./configure | grep -e ssl -e SSL -e crypto 
checking for OpenSSL installations.. 
checking openssl/ssl.h usability... yes 
checking openssl/ssl.h presence... yes 
checking for openssl/ssl.h... yes 
checking for ERR_load_BIO_strings in -lcrypto... yes 
checking for SSL_CTX_new in -lssl... yes 
OpenSSL library found, SSL support enabled 
OpenSSL AES GCM support not found, SRTP will only support AES CM cryptos 

我也嘗試建立一個單獨版本的OpenSSL(1.1.0e),行爲是simillar。我如何啓用AES GCM支持?

+1

OpenSSL 1.1.0當然有AES和GCM設備。也許PJSIP需要使用OpenSSL 1.0.0行;而不是OpenSSL 1.1.0系列。許多庫仍未針對OpenSSL 1.1.0進行更新。您應該用PJSIP提交錯誤報告。您也可以從OpenSSL中引用此頁面來幫助移植到Wiki上的1.1.0:[OpenSSL 1.1.0更改](https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes)。 – jww

+0

@jww我也這麼認爲。將提交報告,謝謝! –

回答

1

我解決了這個問題是手動編譯openssl-1.0.2k。我不知道爲什麼Ubuntu默認(1.0.2g)不起作用,但「k」設法工作。 1.1.0版本沒有工作,因爲AES GCM會用下面的代碼進行測試:

#include <openssl/evp.h> 
int main() { 
    EVP_CIPHER_CTX ctx; 
    EVP_aes_128_gcm(); 
    return 0; 
} 

而這兩個Ubuntu的實施和OpenSSL 1.1.0>預計EVP_CIPHER_CTX變量聲明爲指針(或者初始化?)。這兩個版本都會中斷,配置會將其理解爲不支持密碼。更改測試將無法正常工作,因爲這是如何在內部實施的。