mirror of
https://github.com/vacp2p/nim-ngtcp2.git
synced 2026-01-09 04:58:04 -05:00
chore: make quictls optional (#19)
This commit is contained in:
14
README.md
14
README.md
@@ -1,18 +1,14 @@
|
|||||||
ngtcp2 for Nim
|
# ngtcp2 for Nim
|
||||||
==============
|
|
||||||
|
|
||||||
[](https://opensource.org/licenses/MIT)
|
[](https://opensource.org/licenses/MIT)
|
||||||
[](https://opensource.org/licenses/Apache-2.0)
|
[](https://opensource.org/licenses/Apache-2.0)
|
||||||

|

|
||||||
<img src="https://img.shields.io/badge/nim-%3E%3D1.2.0-orange.svg?style=flat-square" />
|
<img src="https://img.shields.io/badge/nim-%3E%3D1.2.0-orange.svg?style=flat-square" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Wrapper around the [ngtcp2](https://github.com/ngtcp2/ngtcp2) C library for
|
Wrapper around the [ngtcp2](https://github.com/ngtcp2/ngtcp2) C library for
|
||||||
[Nim](https://nim-lang.org/).
|
[Nim](https://nim-lang.org/).
|
||||||
|
|
||||||
Updating to a newer version
|
## Updating to a newer version
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Follow these steps when updating the wrapper to a newer version of ngtcp2:
|
Follow these steps when updating the wrapper to a newer version of ngtcp2:
|
||||||
|
|
||||||
@@ -21,3 +17,9 @@ Follow these steps when updating the wrapper to a newer version of ngtcp2:
|
|||||||
- run `build.sh` (requires Nim, CMake and clang to be installed)
|
- run `build.sh` (requires Nim, CMake and clang to be installed)
|
||||||
- increase the `version` property in the `ngtcp2.nimble` file
|
- increase the `version` property in the `ngtcp2.nimble` file
|
||||||
- commit the changes
|
- commit the changes
|
||||||
|
|
||||||
|
### Enabling QuicTLS
|
||||||
|
|
||||||
|
```
|
||||||
|
`-d:ngtcp2_enable_quictls`
|
||||||
|
```
|
||||||
|
|||||||
137
extras.nim
137
extras.nim
@@ -13,82 +13,83 @@ type
|
|||||||
ptls_handshake_properties_t_anon0_t_server_t_cookie_t* =
|
ptls_handshake_properties_t_anon0_t_server_t_cookie_t* =
|
||||||
struct_st_ptls_handshake_properties_t_anon0_t_server_t_cookie_t
|
struct_st_ptls_handshake_properties_t_anon0_t_server_t_cookie_t
|
||||||
|
|
||||||
# OpenSSL/QuicTLS crypto support
|
when defined(ngtcp2_enable_quictls):
|
||||||
# OpenSSL/QuicTLS type definitions
|
# OpenSSL/QuicTLS crypto support
|
||||||
type
|
# OpenSSL/QuicTLS type definitions
|
||||||
SSL_CTX* = pointer
|
type
|
||||||
OSSL_ENCRYPTION_LEVEL* = enum
|
SSL_CTX* = pointer
|
||||||
OSSL_ENCRYPTION_LEVEL_INITIAL = 0
|
OSSL_ENCRYPTION_LEVEL* = enum
|
||||||
OSSL_ENCRYPTION_LEVEL_EARLY_DATA = 1
|
OSSL_ENCRYPTION_LEVEL_INITIAL = 0
|
||||||
OSSL_ENCRYPTION_LEVEL_HANDSHAKE = 2
|
OSSL_ENCRYPTION_LEVEL_EARLY_DATA = 1
|
||||||
OSSL_ENCRYPTION_LEVEL_APPLICATION = 3
|
OSSL_ENCRYPTION_LEVEL_HANDSHAKE = 2
|
||||||
|
OSSL_ENCRYPTION_LEVEL_APPLICATION = 3
|
||||||
|
|
||||||
# ngtcp2_crypto_quictls error constants
|
# ngtcp2_crypto_quictls error constants
|
||||||
const
|
const
|
||||||
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP* = -10001
|
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP* = -10001
|
||||||
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB* = -10002
|
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB* = -10002
|
||||||
|
|
||||||
# ngtcp2_crypto_quictls function bindings
|
# ngtcp2_crypto_quictls function bindings
|
||||||
when not declared(ngtcp2_crypto_quictls_init):
|
when not declared(ngtcp2_crypto_quictls_init):
|
||||||
proc ngtcp2_crypto_quictls_init*(): cint {.
|
proc ngtcp2_crypto_quictls_init*(): cint {.
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_init"
|
cdecl, importc: "ngtcp2_crypto_quictls_init"
|
||||||
.}
|
.}
|
||||||
|
|
||||||
else:
|
else:
|
||||||
static:
|
static:
|
||||||
hint(
|
hint(
|
||||||
"Declaration of " & "ngtcp2_crypto_quictls_init" &
|
"Declaration of " & "ngtcp2_crypto_quictls_init" &
|
||||||
" already exists, not redeclaring"
|
" already exists, not redeclaring"
|
||||||
)
|
)
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_from_ossl_encryption_level):
|
when not declared(ngtcp2_crypto_quictls_from_ossl_encryption_level):
|
||||||
proc ngtcp2_crypto_quictls_from_ossl_encryption_level*(
|
proc ngtcp2_crypto_quictls_from_ossl_encryption_level*(
|
||||||
ossl_level: OSSL_ENCRYPTION_LEVEL
|
ossl_level: OSSL_ENCRYPTION_LEVEL
|
||||||
): ngtcp2_encryption_level_553648745 {.
|
): ngtcp2_encryption_level_553648745 {.
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_from_ossl_encryption_level"
|
cdecl, importc: "ngtcp2_crypto_quictls_from_ossl_encryption_level"
|
||||||
.}
|
.}
|
||||||
|
|
||||||
else:
|
else:
|
||||||
static:
|
static:
|
||||||
hint(
|
hint(
|
||||||
"Declaration of " & "ngtcp2_crypto_quictls_from_ossl_encryption_level" &
|
"Declaration of " & "ngtcp2_crypto_quictls_from_ossl_encryption_level" &
|
||||||
" already exists, not redeclaring"
|
" already exists, not redeclaring"
|
||||||
)
|
)
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_from_ngtcp2_encryption_level):
|
when not declared(ngtcp2_crypto_quictls_from_ngtcp2_encryption_level):
|
||||||
proc ngtcp2_crypto_quictls_from_ngtcp2_encryption_level*(
|
proc ngtcp2_crypto_quictls_from_ngtcp2_encryption_level*(
|
||||||
encryption_level: ngtcp2_encryption_level_553648745
|
encryption_level: ngtcp2_encryption_level_553648745
|
||||||
): OSSL_ENCRYPTION_LEVEL {.
|
): OSSL_ENCRYPTION_LEVEL {.
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level"
|
cdecl, importc: "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level"
|
||||||
.}
|
.}
|
||||||
|
|
||||||
else:
|
else:
|
||||||
static:
|
static:
|
||||||
hint(
|
hint(
|
||||||
"Declaration of " & "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level" &
|
"Declaration of " & "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level" &
|
||||||
" already exists, not redeclaring"
|
" already exists, not redeclaring"
|
||||||
)
|
)
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_configure_server_context):
|
when not declared(ngtcp2_crypto_quictls_configure_server_context):
|
||||||
proc ngtcp2_crypto_quictls_configure_server_context*(
|
proc ngtcp2_crypto_quictls_configure_server_context*(
|
||||||
ssl_ctx: SSL_CTX
|
ssl_ctx: SSL_CTX
|
||||||
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_server_context".}
|
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_server_context".}
|
||||||
|
|
||||||
else:
|
else:
|
||||||
static:
|
static:
|
||||||
hint(
|
hint(
|
||||||
"Declaration of " & "ngtcp2_crypto_quictls_configure_server_context" &
|
"Declaration of " & "ngtcp2_crypto_quictls_configure_server_context" &
|
||||||
" already exists, not redeclaring"
|
" already exists, not redeclaring"
|
||||||
)
|
)
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_configure_client_context):
|
when not declared(ngtcp2_crypto_quictls_configure_client_context):
|
||||||
proc ngtcp2_crypto_quictls_configure_client_context*(
|
proc ngtcp2_crypto_quictls_configure_client_context*(
|
||||||
ssl_ctx: SSL_CTX
|
ssl_ctx: SSL_CTX
|
||||||
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_client_context".}
|
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_client_context".}
|
||||||
|
|
||||||
else:
|
else:
|
||||||
static:
|
static:
|
||||||
hint(
|
hint(
|
||||||
"Declaration of " & "ngtcp2_crypto_quictls_configure_client_context" &
|
"Declaration of " & "ngtcp2_crypto_quictls_configure_client_context" &
|
||||||
" already exists, not redeclaring"
|
" already exists, not redeclaring"
|
||||||
)
|
)
|
||||||
|
|||||||
160
ngtcp2.nim
160
ngtcp2.nim
@@ -20,12 +20,12 @@ else:
|
|||||||
{.passl: "-lcrypto".}
|
{.passl: "-lcrypto".}
|
||||||
|
|
||||||
const root = currentSourcePath.parentDir
|
const root = currentSourcePath.parentDir
|
||||||
const libIncludes = root/"build"/"lib"/"includes"
|
const libIncludes = root / "build" / "lib" / "includes"
|
||||||
const ngtcp2Crypto = root/"libs"/"ngtcp2"/"crypto"
|
const ngtcp2Crypto = root / "libs" / "ngtcp2" / "crypto"
|
||||||
const ngtcp2CryptoIncludes = root/"libs"/"ngtcp2"/"crypto"/"includes"
|
const ngtcp2CryptoIncludes = root / "libs" / "ngtcp2" / "crypto" / "includes"
|
||||||
const ngtcp2Lib = root/"libs"/"ngtcp2"/"lib"
|
const ngtcp2Lib = root / "libs" / "ngtcp2" / "lib"
|
||||||
const ngtcp2LibIncludes = root/"libs"/"ngtcp2"/"lib"/"includes"
|
const ngtcp2LibIncludes = root / "libs" / "ngtcp2" / "lib" / "includes"
|
||||||
const picotlsInclude = root/"libs"/"picotls"/"include"
|
const picotlsInclude = root / "libs" / "picotls" / "include"
|
||||||
|
|
||||||
{.passc: fmt"-I{libIncludes}".}
|
{.passc: fmt"-I{libIncludes}".}
|
||||||
{.passc: fmt"-I{ngtcp2Crypto}".}
|
{.passc: fmt"-I{ngtcp2Crypto}".}
|
||||||
@@ -34,9 +34,10 @@ const picotlsInclude = root/"libs"/"picotls"/"include"
|
|||||||
{.passc: fmt"-I{ngtcp2LibIncludes}".}
|
{.passc: fmt"-I{ngtcp2LibIncludes}".}
|
||||||
{.passc: fmt"-I{picotlsInclude}".}
|
{.passc: fmt"-I{picotlsInclude}".}
|
||||||
|
|
||||||
# QuicTLS/OpenSSL crypto support
|
when defined(ngtcp2_enable_quictls):
|
||||||
{.passc: "-DNGTCP2_CRYPTO_QUICTLS".}
|
# QuicTLS/OpenSSL crypto support
|
||||||
{.passc: "-I/usr/include/openssl".}
|
{.localpassc: "-DNGTCP2_CRYPTO_QUICTLS".}
|
||||||
|
{.localpassc: "-I/usr/include/openssl".}
|
||||||
|
|
||||||
{.compile: "./libs/picotls/picotlsvs/picotls/wintimeofday.c".}
|
{.compile: "./libs/picotls/picotlsvs/picotls/wintimeofday.c".}
|
||||||
{.compile: "./libs/picotls/lib/pembase64.c".}
|
{.compile: "./libs/picotls/lib/pembase64.c".}
|
||||||
@@ -1056,11 +1057,11 @@ type
|
|||||||
handshake_properties*: ptls_handshake_properties_t_553648999
|
handshake_properties*: ptls_handshake_properties_t_553648999
|
||||||
ngtcp2_crypto_picotls_ctx_553649050 = struct_ngtcp2_crypto_picotls_ctx_553649049 ## Generated based on /nim-ngtcp2/libs/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h:53:3
|
ngtcp2_crypto_picotls_ctx_553649050 = struct_ngtcp2_crypto_picotls_ctx_553649049 ## Generated based on /nim-ngtcp2/libs/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h:53:3
|
||||||
struct_ptls_cred_buffer_s_553649052 {.pure, inheritable, bycopy.} = object
|
struct_ptls_cred_buffer_s_553649052 {.pure, inheritable, bycopy.} = object
|
||||||
base*: cstring ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/utils/cred_buffer.h:8:16
|
base*: cstring ## Generated based on /home/r/vacp2p/nim-ngtcp2/build/lib/includes/utils/cred_buffer.h:8:16
|
||||||
len*: csize_t
|
len*: csize_t
|
||||||
off*: csize_t
|
off*: csize_t
|
||||||
owns_base*: cint
|
owns_base*: cint
|
||||||
ptls_cred_buffer_t_553649054 = struct_ptls_cred_buffer_s_553649053 ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/utils/cred_buffer.h:16:3
|
ptls_cred_buffer_t_553649054 = struct_ptls_cred_buffer_s_553649053 ## Generated based on /home/r/vacp2p/nim-ngtcp2/build/lib/includes/utils/cred_buffer.h:16:3
|
||||||
sa_family_t_553649056 = cushort ## Generated based on /usr/include/x86_64-linux-gnu/bits/sockaddr.h:28:28
|
sa_family_t_553649056 = cushort ## Generated based on /usr/include/x86_64-linux-gnu/bits/sockaddr.h:28:28
|
||||||
in_port_t_553649058 = uint16 ## Generated based on /usr/include/netinet/in.h:125:18
|
in_port_t_553649058 = uint16 ## Generated based on /usr/include/netinet/in.h:125:18
|
||||||
compiler_socklen_t_553649060 = cuint ## Generated based on /usr/include/x86_64-linux-gnu/bits/types.h:210:23
|
compiler_socklen_t_553649060 = cuint ## Generated based on /usr/include/x86_64-linux-gnu/bits/types.h:210:23
|
||||||
@@ -4804,21 +4805,21 @@ else:
|
|||||||
hint("Declaration of " & "struct_ngtcp2_ccerr" &
|
hint("Declaration of " & "struct_ngtcp2_ccerr" &
|
||||||
" already exists, not redeclaring")
|
" already exists, not redeclaring")
|
||||||
when not declared(NGTCP2_VERSION):
|
when not declared(NGTCP2_VERSION):
|
||||||
when "1.6.0" is static:
|
when "1.11.0-DEV" is static:
|
||||||
const
|
const
|
||||||
NGTCP2_VERSION* = "1.6.0" ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/ngtcp2/version.h:39:9
|
NGTCP2_VERSION* = "1.11.0-DEV" ## Generated based on /nim-ngtcp2/libs/ngtcp2/lib/includes/ngtcp2/version.h:39:9
|
||||||
else:
|
else:
|
||||||
let NGTCP2_VERSION* = "1.6.0" ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/ngtcp2/version.h:39:9
|
let NGTCP2_VERSION* = "1.11.0-DEV" ## Generated based on /nim-ngtcp2/libs/ngtcp2/lib/includes/ngtcp2/version.h:39:9
|
||||||
else:
|
else:
|
||||||
static :
|
static :
|
||||||
hint("Declaration of " & "NGTCP2_VERSION" &
|
hint("Declaration of " & "NGTCP2_VERSION" &
|
||||||
" already exists, not redeclaring")
|
" already exists, not redeclaring")
|
||||||
when not declared(NGTCP2_VERSION_NUM):
|
when not declared(NGTCP2_VERSION_NUM):
|
||||||
when 67072 is static:
|
when 68352 is static:
|
||||||
const
|
const
|
||||||
NGTCP2_VERSION_NUM* = 67072 ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/ngtcp2/version.h:49:9
|
NGTCP2_VERSION_NUM* = 68352 ## Generated based on /nim-ngtcp2/libs/ngtcp2/lib/includes/ngtcp2/version.h:49:9
|
||||||
else:
|
else:
|
||||||
let NGTCP2_VERSION_NUM* = 67072 ## Generated based on /home/andrew/opensource/Vac/nim-ngtcp2/build/lib/includes/ngtcp2/version.h:49:9
|
let NGTCP2_VERSION_NUM* = 68352 ## Generated based on /nim-ngtcp2/libs/ngtcp2/lib/includes/ngtcp2/version.h:49:9
|
||||||
else:
|
else:
|
||||||
static :
|
static :
|
||||||
hint("Declaration of " & "NGTCP2_VERSION_NUM" &
|
hint("Declaration of " & "NGTCP2_VERSION_NUM" &
|
||||||
@@ -10433,60 +10434,83 @@ type
|
|||||||
ptls_handshake_properties_t_anon0_t_server_t_cookie_t* =
|
ptls_handshake_properties_t_anon0_t_server_t_cookie_t* =
|
||||||
struct_st_ptls_handshake_properties_t_anon0_t_server_t_cookie_t
|
struct_st_ptls_handshake_properties_t_anon0_t_server_t_cookie_t
|
||||||
|
|
||||||
# OpenSSL/QuicTLS crypto support
|
when defined(ngtcp2_enable_quictls):
|
||||||
# OpenSSL/QuicTLS type definitions
|
# OpenSSL/QuicTLS crypto support
|
||||||
type
|
# OpenSSL/QuicTLS type definitions
|
||||||
SSL_CTX* = pointer
|
type
|
||||||
OSSL_ENCRYPTION_LEVEL* = enum
|
SSL_CTX* = pointer
|
||||||
OSSL_ENCRYPTION_LEVEL_INITIAL = 0
|
OSSL_ENCRYPTION_LEVEL* = enum
|
||||||
OSSL_ENCRYPTION_LEVEL_EARLY_DATA = 1
|
OSSL_ENCRYPTION_LEVEL_INITIAL = 0
|
||||||
OSSL_ENCRYPTION_LEVEL_HANDSHAKE = 2
|
OSSL_ENCRYPTION_LEVEL_EARLY_DATA = 1
|
||||||
OSSL_ENCRYPTION_LEVEL_APPLICATION = 3
|
OSSL_ENCRYPTION_LEVEL_HANDSHAKE = 2
|
||||||
|
OSSL_ENCRYPTION_LEVEL_APPLICATION = 3
|
||||||
|
|
||||||
# ngtcp2_crypto_quictls error constants
|
# ngtcp2_crypto_quictls error constants
|
||||||
const
|
const
|
||||||
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP* = -10001
|
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP* = -10001
|
||||||
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB* = -10002
|
NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB* = -10002
|
||||||
|
|
||||||
# ngtcp2_crypto_quictls function bindings
|
# ngtcp2_crypto_quictls function bindings
|
||||||
when not declared(ngtcp2_crypto_quictls_init):
|
when not declared(ngtcp2_crypto_quictls_init):
|
||||||
proc ngtcp2_crypto_quictls_init*(): cint {.
|
proc ngtcp2_crypto_quictls_init*(): cint {.
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_init".}
|
cdecl, importc: "ngtcp2_crypto_quictls_init"
|
||||||
else:
|
.}
|
||||||
static :
|
|
||||||
hint("Declaration of " & "ngtcp2_crypto_quictls_init" &
|
|
||||||
" already exists, not redeclaring")
|
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_from_ossl_encryption_level):
|
else:
|
||||||
proc ngtcp2_crypto_quictls_from_ossl_encryption_level*(
|
static:
|
||||||
ossl_level: OSSL_ENCRYPTION_LEVEL): ngtcp2_encryption_level_553648745 {.
|
hint(
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_from_ossl_encryption_level".}
|
"Declaration of " & "ngtcp2_crypto_quictls_init" &
|
||||||
else:
|
" already exists, not redeclaring"
|
||||||
static :
|
)
|
||||||
hint("Declaration of " & "ngtcp2_crypto_quictls_from_ossl_encryption_level" &
|
|
||||||
" already exists, not redeclaring")
|
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_from_ngtcp2_encryption_level):
|
when not declared(ngtcp2_crypto_quictls_from_ossl_encryption_level):
|
||||||
proc ngtcp2_crypto_quictls_from_ngtcp2_encryption_level*(
|
proc ngtcp2_crypto_quictls_from_ossl_encryption_level*(
|
||||||
encryption_level: ngtcp2_encryption_level_553648745): OSSL_ENCRYPTION_LEVEL {.
|
ossl_level: OSSL_ENCRYPTION_LEVEL
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level".}
|
): ngtcp2_encryption_level_553648745 {.
|
||||||
else:
|
cdecl, importc: "ngtcp2_crypto_quictls_from_ossl_encryption_level"
|
||||||
static :
|
.}
|
||||||
hint("Declaration of " & "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level" &
|
|
||||||
" already exists, not redeclaring")
|
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_configure_server_context):
|
else:
|
||||||
proc ngtcp2_crypto_quictls_configure_server_context*(ssl_ctx: SSL_CTX): cint {.
|
static:
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_configure_server_context".}
|
hint(
|
||||||
else:
|
"Declaration of " & "ngtcp2_crypto_quictls_from_ossl_encryption_level" &
|
||||||
static :
|
" already exists, not redeclaring"
|
||||||
hint("Declaration of " & "ngtcp2_crypto_quictls_configure_server_context" &
|
)
|
||||||
" already exists, not redeclaring")
|
|
||||||
|
|
||||||
when not declared(ngtcp2_crypto_quictls_configure_client_context):
|
when not declared(ngtcp2_crypto_quictls_from_ngtcp2_encryption_level):
|
||||||
proc ngtcp2_crypto_quictls_configure_client_context*(ssl_ctx: SSL_CTX): cint {.
|
proc ngtcp2_crypto_quictls_from_ngtcp2_encryption_level*(
|
||||||
cdecl, importc: "ngtcp2_crypto_quictls_configure_client_context".}
|
encryption_level: ngtcp2_encryption_level_553648745
|
||||||
else:
|
): OSSL_ENCRYPTION_LEVEL {.
|
||||||
static :
|
cdecl, importc: "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level"
|
||||||
hint("Declaration of " & "ngtcp2_crypto_quictls_configure_client_context" &
|
.}
|
||||||
" already exists, not redeclaring")
|
|
||||||
|
else:
|
||||||
|
static:
|
||||||
|
hint(
|
||||||
|
"Declaration of " & "ngtcp2_crypto_quictls_from_ngtcp2_encryption_level" &
|
||||||
|
" already exists, not redeclaring"
|
||||||
|
)
|
||||||
|
|
||||||
|
when not declared(ngtcp2_crypto_quictls_configure_server_context):
|
||||||
|
proc ngtcp2_crypto_quictls_configure_server_context*(
|
||||||
|
ssl_ctx: SSL_CTX
|
||||||
|
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_server_context".}
|
||||||
|
|
||||||
|
else:
|
||||||
|
static:
|
||||||
|
hint(
|
||||||
|
"Declaration of " & "ngtcp2_crypto_quictls_configure_server_context" &
|
||||||
|
" already exists, not redeclaring"
|
||||||
|
)
|
||||||
|
|
||||||
|
when not declared(ngtcp2_crypto_quictls_configure_client_context):
|
||||||
|
proc ngtcp2_crypto_quictls_configure_client_context*(
|
||||||
|
ssl_ctx: SSL_CTX
|
||||||
|
): cint {.cdecl, importc: "ngtcp2_crypto_quictls_configure_client_context".}
|
||||||
|
|
||||||
|
else:
|
||||||
|
static:
|
||||||
|
hint(
|
||||||
|
"Declaration of " & "ngtcp2_crypto_quictls_configure_client_context" &
|
||||||
|
" already exists, not redeclaring"
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
packageName = "ngtcp2"
|
packageName = "ngtcp2"
|
||||||
version = "0.37.0"
|
version = "0.38.0"
|
||||||
author = "Status Research & Development GmbH"
|
author = "Status Research & Development GmbH"
|
||||||
description = "Nim wrapper around the ngtcp2 library"
|
description = "Nim wrapper around the ngtcp2 library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
19
prelude.nim
19
prelude.nim
@@ -20,12 +20,12 @@ else:
|
|||||||
{.passl: "-lcrypto".}
|
{.passl: "-lcrypto".}
|
||||||
|
|
||||||
const root = currentSourcePath.parentDir
|
const root = currentSourcePath.parentDir
|
||||||
const libIncludes = root/"build"/"lib"/"includes"
|
const libIncludes = root / "build" / "lib" / "includes"
|
||||||
const ngtcp2Crypto = root/"libs"/"ngtcp2"/"crypto"
|
const ngtcp2Crypto = root / "libs" / "ngtcp2" / "crypto"
|
||||||
const ngtcp2CryptoIncludes = root/"libs"/"ngtcp2"/"crypto"/"includes"
|
const ngtcp2CryptoIncludes = root / "libs" / "ngtcp2" / "crypto" / "includes"
|
||||||
const ngtcp2Lib = root/"libs"/"ngtcp2"/"lib"
|
const ngtcp2Lib = root / "libs" / "ngtcp2" / "lib"
|
||||||
const ngtcp2LibIncludes = root/"libs"/"ngtcp2"/"lib"/"includes"
|
const ngtcp2LibIncludes = root / "libs" / "ngtcp2" / "lib" / "includes"
|
||||||
const picotlsInclude = root/"libs"/"picotls"/"include"
|
const picotlsInclude = root / "libs" / "picotls" / "include"
|
||||||
|
|
||||||
{.passc: fmt"-I{libIncludes}".}
|
{.passc: fmt"-I{libIncludes}".}
|
||||||
{.passc: fmt"-I{ngtcp2Crypto}".}
|
{.passc: fmt"-I{ngtcp2Crypto}".}
|
||||||
@@ -34,6 +34,7 @@ const picotlsInclude = root/"libs"/"picotls"/"include"
|
|||||||
{.passc: fmt"-I{ngtcp2LibIncludes}".}
|
{.passc: fmt"-I{ngtcp2LibIncludes}".}
|
||||||
{.passc: fmt"-I{picotlsInclude}".}
|
{.passc: fmt"-I{picotlsInclude}".}
|
||||||
|
|
||||||
# QuicTLS/OpenSSL crypto support
|
when defined(ngtcp2_enable_quictls):
|
||||||
{.passc: "-DNGTCP2_CRYPTO_QUICTLS".}
|
# QuicTLS/OpenSSL crypto support
|
||||||
{.passc: "-I/usr/include/openssl".}
|
{.localpassc: "-DNGTCP2_CRYPTO_QUICTLS".}
|
||||||
|
{.localpassc: "-I/usr/include/openssl".}
|
||||||
|
|||||||
@@ -23,16 +23,17 @@ test "ptls_instantiation":
|
|||||||
var tls: ptr ptls_t = ptls_client_new(addr ctx)
|
var tls: ptr ptls_t = ptls_client_new(addr ctx)
|
||||||
check tls != nil
|
check tls != nil
|
||||||
|
|
||||||
test "QuicTLS bindings":
|
when defined(ngtcp2_enable_quictls):
|
||||||
# Test error constants
|
test "QuicTLS bindings":
|
||||||
check NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP == -10001
|
# Test error constants
|
||||||
check NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB == -10002
|
check NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP == -10001
|
||||||
|
check NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB == -10002
|
||||||
|
|
||||||
# Test OSSL_ENCRYPTION_LEVEL enum values
|
# Test OSSL_ENCRYPTION_LEVEL enum values
|
||||||
check ord(OSSL_ENCRYPTION_LEVEL_INITIAL) == 0
|
check ord(OSSL_ENCRYPTION_LEVEL_INITIAL) == 0
|
||||||
check ord(OSSL_ENCRYPTION_LEVEL_EARLY_DATA) == 1
|
check ord(OSSL_ENCRYPTION_LEVEL_EARLY_DATA) == 1
|
||||||
check ord(OSSL_ENCRYPTION_LEVEL_HANDSHAKE) == 2
|
check ord(OSSL_ENCRYPTION_LEVEL_HANDSHAKE) == 2
|
||||||
check ord(OSSL_ENCRYPTION_LEVEL_APPLICATION) == 3
|
check ord(OSSL_ENCRYPTION_LEVEL_APPLICATION) == 3
|
||||||
|
|
||||||
# Test that SSL_CTX type is properly defined as pointer
|
# Test that SSL_CTX type is properly defined as pointer
|
||||||
check sizeof(SSL_CTX) == sizeof(pointer)
|
check sizeof(SSL_CTX) == sizeof(pointer)
|
||||||
|
|||||||
Reference in New Issue
Block a user