diff options
author | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-01-20 19:10:52 +0700 |
---|---|---|
committer | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-01-20 19:26:00 +0700 |
commit | be2db6d67a33f11f8abe1d7715932ec342a7f7e4 (patch) | |
tree | 369899cc5214022b638df4ba6f7b83e26461cbe2 | |
parent | d127dd8095355af75c478fdec67da60ddbe709e6 (diff) | |
download | Nim-be2db6d67a33f11f8abe1d7715932ec342a7f7e4.tar.gz |
Allow static linking with OpenSSL 1.0.x
This commit basically returns the code that was removed in a78d7a31f780c6cf1e421f820d9ed19a5db64ca7, but under 'openssl10' define symbol. OpenSSL 1.0.2 is still actively maintained, so there is no point in dropping support of it.
-rw-r--r-- | changelog.md | 6 | ||||
-rw-r--r-- | lib/wrappers/openssl.nim | 46 |
2 files changed, 30 insertions, 22 deletions
diff --git a/changelog.md b/changelog.md index 3e6597ae9..bce2bcca3 100644 --- a/changelog.md +++ b/changelog.md @@ -212,9 +212,11 @@ for i in 1..15: styledEcho bgColor, bg, fgColor, fg, Nim, resetStyle int -= 0.01 fg = intensity(fg, int) - + setForegroundColor colRed setBackgroundColor colGreen styledEcho "Red on Green.", resetStyle ``` - +- If you use ``--dynlibOverride:ssl`` with OpenSSL 1.0.x, you now have to + define ``openssl10`` symbol (``-d:openssl10``). By default OpenSSL 1.1.x is + assumed. diff --git a/lib/wrappers/openssl.nim b/lib/wrappers/openssl.nim index 1d0dc5897..70d3887db 100644 --- a/lib/wrappers/openssl.nim +++ b/lib/wrappers/openssl.nim @@ -209,32 +209,38 @@ proc TLSv1_method*(): PSSL_METHOD{.cdecl, dynlib: DLLSSLName, importc.} when compileOption("dynlibOverride", "ssl"): # Static linking - proc OPENSSL_init_ssl*(opts: uint64, settings: uint8): cint {.cdecl, dynlib: DLLSSLName, importc, discardable.} - proc SSL_library_init*(): cint {.discardable.} = - ## Initialize SSL using OPENSSL_init_ssl for OpenSSL >= 1.1.0 - return OPENSSL_init_ssl(0.uint64, 0.uint8) - proc TLS_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} - proc SSLv23_method*(): PSSL_METHOD = - TLS_method() + when defined(openssl10): + proc SSL_library_init*(): cint {.cdecl, dynlib: DLLSSLName, importc, discardable.} + proc SSL_load_error_strings*() {.cdecl, dynlib: DLLSSLName, importc.} + proc SSLv23_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} + else: + proc OPENSSL_init_ssl*(opts: uint64, settings: uint8): cint {.cdecl, dynlib: DLLSSLName, importc, discardable.} + proc SSL_library_init*(): cint {.discardable.} = + ## Initialize SSL using OPENSSL_init_ssl for OpenSSL >= 1.1.0 + return OPENSSL_init_ssl(0.uint64, 0.uint8) - proc SSLv23_client_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} - proc SSLv2_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} - proc SSLv3_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} + proc TLS_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} + proc SSLv23_method*(): PSSL_METHOD = + TLS_method() - template OpenSSL_add_all_algorithms*() = discard + proc OpenSSL_version_num(): culong {.cdecl, dynlib: DLLSSLName, importc.} - proc OpenSSL_version_num(): culong {.cdecl, dynlib: DLLSSLName, importc.} + proc getOpenSSLVersion*(): culong = + ## Return OpenSSL version as unsigned long + OpenSSL_version_num() - proc getOpenSSLVersion*(): culong = - ## Return OpenSSL version as unsigned long - OpenSSL_version_num() + proc SSL_load_error_strings*() = + ## Removed from OpenSSL 1.1.0 + # This proc prevents breaking existing code calling SslLoadErrorStrings + # Static linking against OpenSSL < 1.1.0 is not supported + discard - proc SSL_load_error_strings*() = - ## Removed from OpenSSL 1.1.0 - # This proc prevents breaking existing code calling SslLoadErrorStrings - # Static linking against OpenSSL < 1.1.0 is not supported - discard + template OpenSSL_add_all_algorithms*() = discard + + proc SSLv23_client_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} + proc SSLv2_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} + proc SSLv3_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.} else: # Here we're trying to stay compatible with openssl 1.0.* and 1.1.*. Some |