@@ -27,6 +27,10 @@ static u_char *ngx_http_lua_log_ssl_cert_error(ngx_log_t *log, u_char *buf,
2727 size_t len );
2828static ngx_int_t ngx_http_lua_ssl_cert_by_chunk (lua_State * L ,
2929 ngx_http_request_t * r );
30+ #ifdef NGX_HTTP_LUA_USE_OCSP
31+ static int ngx_http_lua_ssl_empty_status_callback (ngx_ssl_conn_t * ssl_conn ,
32+ void * data );
33+ #endif
3034
3135
3236ngx_int_t
@@ -75,13 +79,21 @@ char *
7579ngx_http_lua_ssl_cert_by_lua (ngx_conf_t * cf , ngx_command_t * cmd ,
7680 void * conf )
7781{
82+ #if OPENSSL_VERSION_NUMBER < 0x1000205fL
83+
84+ ngx_log_error (NGX_LOG_EMERG , cf -> log , 0 ,
85+ "at least OpenSSL 1.0.2e required but found "
86+ OPENSSL_VERSION_TEXT );
87+
88+ return NGX_CONF_ERROR ;
89+
90+ #else
91+
7892 u_char * p ;
7993 u_char * name ;
8094 ngx_str_t * value ;
8195 ngx_http_lua_srv_conf_t * lscf = conf ;
8296
83- dd ("enter" );
84-
8597 /* must specifiy a content handler */
8698 if (cmd -> post == NULL ) {
8799 return NGX_CONF_ERROR ;
@@ -136,6 +148,8 @@ ngx_http_lua_ssl_cert_by_lua(ngx_conf_t *cf, ngx_command_t *cmd,
136148 }
137149
138150 return NGX_CONF_OK ;
151+
152+ #endif /* OPENSSL_VERSION_NUMBER < 0x1000205fL */
139153}
140154
141155
@@ -443,6 +457,13 @@ ngx_http_lua_ssl_cert_by_chunk(lua_State *L, ngx_http_request_t *r)
443457int
444458ngx_http_lua_ffi_ssl_get_tls1_version (ngx_http_request_t * r , char * * err )
445459{
460+ #ifndef TLS1_get_version
461+
462+ * err = "no TLS1 support" ;
463+ return NGX_ERROR ;
464+
465+ #else
466+
446467 ngx_ssl_conn_t * ssl_conn ;
447468
448469 if (r -> connection == NULL || r -> connection -> ssl == NULL ) {
@@ -459,12 +480,21 @@ ngx_http_lua_ffi_ssl_get_tls1_version(ngx_http_request_t *r, char **err)
459480 dd ("tls1 ver: %d" , (int ) TLS1_get_version (ssl_conn ));
460481
461482 return (int ) TLS1_get_version (ssl_conn );
483+
484+ #endif
462485}
463486
464487
465488int
466489ngx_http_lua_ffi_ssl_clear_certs (ngx_http_request_t * r , char * * err )
467490{
491+ #if OPENSSL_VERSION_NUMBER < 0x1000205fL
492+
493+ * err = "at least OpenSSL 1.0.2e required but found " OPENSSL_VERSION_TEXT ;
494+ return NGX_ERROR ;
495+
496+ #else
497+
468498 ngx_ssl_conn_t * ssl_conn ;
469499
470500 if (r -> connection == NULL || r -> connection -> ssl == NULL ) {
@@ -480,13 +510,22 @@ ngx_http_lua_ffi_ssl_clear_certs(ngx_http_request_t *r, char **err)
480510
481511 SSL_certs_clear (ssl_conn );
482512 return NGX_OK ;
513+
514+ #endif /* OPENSSL_VERSION_NUMBER < 0x1000205fL */
483515}
484516
485517
486518int
487519ngx_http_lua_ffi_ssl_set_der_certificate (ngx_http_request_t * r ,
488520 const char * data , size_t len , char * * err )
489521{
522+ #if OPENSSL_VERSION_NUMBER < 0x1000205fL
523+
524+ * err = "at least OpenSSL 1.0.2e required but found " OPENSSL_VERSION_TEXT ;
525+ return NGX_ERROR ;
526+
527+ #else
528+
490529 BIO * bio = NULL ;
491530 X509 * x509 = NULL ;
492531 ngx_ssl_conn_t * ssl_conn ;
@@ -561,6 +600,8 @@ ngx_http_lua_ffi_ssl_set_der_certificate(ngx_http_request_t *r,
561600 }
562601
563602 return NGX_ERROR ;
603+
604+ #endif /* OPENSSL_VERSION_NUMBER < 0x1000205fL */
564605}
565606
566607
@@ -711,6 +752,8 @@ ngx_http_lua_ffi_ssl_server_name(ngx_http_request_t *r, char **name,
711752 return NGX_ERROR ;
712753 }
713754
755+ #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
756+
714757 * name = (char * ) SSL_get_servername (ssl_conn , TLSEXT_NAMETYPE_host_name );
715758
716759 if (* name ) {
@@ -719,6 +762,13 @@ ngx_http_lua_ffi_ssl_server_name(ngx_http_request_t *r, char **name,
719762 }
720763
721764 return NGX_DECLINED ;
765+
766+ #else
767+
768+ * err = "no TLS extension support" ;
769+ return NGX_ERROR ;
770+
771+ #endif
722772}
723773
724774
@@ -799,6 +849,13 @@ ngx_http_lua_ffi_ssl_get_ocsp_responder_from_der_chain(
799849 const char * chain_data , size_t chain_len , unsigned char * out ,
800850 size_t * out_size , char * * err )
801851{
852+ #ifndef NGX_HTTP_LUA_USE_OCSP
853+
854+ * err = "no OCSP support" ;
855+ return NGX_ERROR ;
856+
857+ #else
858+
802859 int rc = NGX_OK ;
803860 BIO * bio = NULL ;
804861 char * s ;
@@ -830,7 +887,11 @@ ngx_http_lua_ffi_ssl_get_ocsp_responder_from_der_chain(
830887 goto done ;
831888 }
832889
890+ #if OPENSSL_VERSION_NUMBER >= 0x10000000L
833891 s = sk_OPENSSL_STRING_value (aia , 0 );
892+ #else
893+ s = sk_value (aia , 0 );
894+ #endif
834895 if (s == NULL ) {
835896 rc = NGX_DECLINED ;
836897 goto done ;
@@ -897,13 +958,22 @@ ngx_http_lua_ffi_ssl_get_ocsp_responder_from_der_chain(
897958 }
898959
899960 return rc ;
961+
962+ #endif /* NGX_HTTP_LUA_USE_OCSP */
900963}
901964
902965
903966int
904967ngx_http_lua_ffi_ssl_create_ocsp_request (const char * chain_data ,
905968 size_t chain_len , unsigned char * out , size_t * out_size , char * * err )
906969{
970+ #ifndef NGX_HTTP_LUA_USE_OCSP
971+
972+ * err = "no OCSP support" ;
973+ return NGX_ERROR ;
974+
975+ #else
976+
907977 int rc = NGX_ERROR ;
908978 BIO * bio = NULL ;
909979 X509 * cert = NULL , * issuer = NULL ;
@@ -1000,6 +1070,8 @@ ngx_http_lua_ffi_ssl_create_ocsp_request(const char *chain_data,
10001070 }
10011071
10021072 return rc ;
1073+
1074+ #endif /* NGX_HTTP_LUA_USE_OCSP */
10031075}
10041076
10051077
@@ -1008,6 +1080,14 @@ ngx_http_lua_ffi_ssl_validate_ocsp_response(const u_char *resp,
10081080 size_t resp_len , const char * chain_data , size_t chain_len ,
10091081 u_char * errbuf , size_t * errbuf_size )
10101082{
1083+ #ifndef NGX_HTTP_LUA_USE_OCSP
1084+
1085+ * errbuf_size = ngx_snprintf (errbuf , * errbuf_size ,
1086+ "no OCSP support" ) - errbuf ;
1087+ return NGX_ERROR ;
1088+
1089+ #else
1090+
10111091 int n ;
10121092 BIO * bio = NULL ;
10131093 X509 * cert = NULL , * issuer = NULL ;
@@ -1162,20 +1242,31 @@ ngx_http_lua_ffi_ssl_validate_ocsp_response(const u_char *resp,
11621242 ERR_clear_error ();
11631243
11641244 return NGX_ERROR ;
1245+
1246+ #endif /* NGX_HTTP_LUA_USE_OCSP */
11651247}
11661248
11671249
1250+ #ifdef NGX_HTTP_LUA_USE_OCSP
11681251static int
11691252ngx_http_lua_ssl_empty_status_callback (ngx_ssl_conn_t * ssl_conn , void * data )
11701253{
11711254 return SSL_TLSEXT_ERR_OK ;
11721255}
1256+ #endif
11731257
11741258
11751259int
11761260ngx_http_lua_ffi_ssl_set_ocsp_status_resp (ngx_http_request_t * r ,
11771261 const u_char * resp , size_t resp_len , char * * err )
11781262{
1263+ #ifndef NGX_HTTP_LUA_USE_OCSP
1264+
1265+ * err = "no OCSP support" ;
1266+ return NGX_ERROR ;
1267+
1268+ #else
1269+
11791270 u_char * p ;
11801271 SSL_CTX * ctx ;
11811272 ngx_ssl_conn_t * ssl_conn ;
@@ -1216,6 +1307,8 @@ ngx_http_lua_ffi_ssl_set_ocsp_status_resp(ngx_http_request_t *r,
12161307 ssl_conn -> tlsext_status_expected = 1 ;
12171308
12181309 return NGX_OK ;
1310+
1311+ #endif /* NGX_HTTP_LUA_USE_OCSP */
12191312}
12201313
12211314#endif /* NGX_LUA_NO_FFI_API */
0 commit comments