summaryrefslogtreecommitdiff
path: root/pjlib
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2016-11-16 05:53:23 +0000
committerLiong Sauw Ming <ming@teluu.com>2016-11-16 05:53:23 +0000
commit21a681c52e3e8c1fe95125a87363ee1f846a1ab9 (patch)
treedfdb16ebeb7918d8c7a8680652f358e8807a5e12 /pjlib
parent273b7964359262ab42523ea657f3c5313c151988 (diff)
Re #1975: Add autoconf detection of OpenSSL elliptic curve and sigalg support
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5483 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib')
-rw-r--r--pjlib/build/os-auto.mak.in6
-rw-r--r--pjlib/src/pj/ssl_sock_ossl.c14
2 files changed, 13 insertions, 7 deletions
diff --git a/pjlib/build/os-auto.mak.in b/pjlib/build/os-auto.mak.in
index 478cc80f..e4a7970d 100644
--- a/pjlib/build/os-auto.mak.in
+++ b/pjlib/build/os-auto.mak.in
@@ -33,4 +33,10 @@ export TEST_OBJS += @ac_main_obj@
export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME)
export TARGETS_EXE = $(TEST_EXE)
+ifeq (@ac_ssl_has_ec@,1)
+export PJLIB_CFLAGS += -DPJ_SSL_SOCK_OSSL_HAS_EC=1
+endif
+ifeq (@ac_ssl_has_sigalg@,1)
+export PJLIB_CFLAGS += -DPJ_SSL_SOCK_OSSL_HAS_SIGALG=1
+endif
diff --git a/pjlib/src/pj/ssl_sock_ossl.c b/pjlib/src/pj/ssl_sock_ossl.c
index e4ed7842..5d0cf919 100644
--- a/pjlib/src/pj/ssl_sock_ossl.c
+++ b/pjlib/src/pj/ssl_sock_ossl.c
@@ -52,7 +52,7 @@
#include <openssl/rand.h>
#include <openssl/engine.h>
-#if !defined(OPENSSL_NO_EC)
+#if defined(PJ_SSL_SOCK_OSSL_HAS_EC) && PJ_SSL_SOCK_OSSL_HAS_EC==1
extern int tls1_ec_nid2curve_id(int nid);
extern int tls1_ec_curve_id2nid(int curve_id);
#endif
@@ -385,7 +385,7 @@ static pj_status_t init_openssl(void)
ssl->session = SSL_SESSION_new();
-#if !defined(OPENSSL_NO_EC)
+#if defined(PJ_SSL_SOCK_OSSL_HAS_EC) && PJ_SSL_SOCK_OSSL_HAS_EC==1
openssl_curves_num = SSL_get_shared_curve(ssl,-1);
if (openssl_curves_num > PJ_ARRAY_SIZE(openssl_curves))
openssl_curves_num = PJ_ARRAY_SIZE(openssl_curves);
@@ -999,7 +999,7 @@ static pj_status_t set_cipher_list(pj_ssl_sock_t *ssock)
static pj_status_t set_curves_list(pj_ssl_sock_t *ssock)
{
-#if !defined(OPENSSL_NO_EC)
+#if defined(PJ_SSL_SOCK_OSSL_HAS_EC) && PJ_SSL_SOCK_OSSL_HAS_EC==1
int ret;
int curves[PJ_SSL_SOCK_MAX_CURVES];
int cnt;
@@ -1022,15 +1022,14 @@ static pj_status_t set_curves_list(pj_ssl_sock_t *ssock)
if (ret < 1)
return GET_SSL_STATUS(ssock);
}
+#endif
return PJ_SUCCESS;
-#else
- return PJ_ENOTSUP;
-#endif
}
static pj_status_t set_sigalgs(pj_ssl_sock_t *ssock)
{
+#if defined(PJ_SSL_SOCK_OSSL_HAS_SIGALG) && PJ_SSL_SOCK_OSSL_HAS_SIGALG==1
int ret;
if (ssock->param.sigalgs.ptr && ssock->param.sigalgs.slen) {
@@ -1045,6 +1044,7 @@ static pj_status_t set_sigalgs(pj_ssl_sock_t *ssock)
if (ret < 1)
return GET_SSL_STATUS(ssock);
}
+#endif
return PJ_SUCCESS;
}
@@ -2393,7 +2393,7 @@ PJ_DEF(pj_status_t) pj_ssl_curve_get_availables(pj_ssl_curve curves[],
*curve_num = PJ_MIN(*curve_num, openssl_curves_num);
for (i = 0; i < *curve_num; ++i)
- curves[i] = openssl_curves[i].id;
+ curves[i] = openssl_curves[i].id;
return PJ_SUCCESS;
}