Alien::ngtcp2
Alien::ngtcp2 builds the native libraries needed by Perl QUIC modules.
What gets built
Alien::ngtcp2 provides one tested native stack:
ngtcp2 1.25.0
|
+-- libngtcp2_crypto_picotls
|
+-- Picotls
|
+-- OpenSSL crypto
ngtcp2 handles QUIC.
Picotls handles TLS 1.3.
OpenSSL supplies cryptography and X.509 certificate handling underneath Picotls. Net::QUIC does not use OpenSSL's QUIC TLS API.
The bundled Picotls source is pinned to commit:
f07f1c8c68b237f1468bc1f1fe1b68aba3ff23b4
That is the Picotls revision documented for ngtcp2 1.25.0.
Alien::ngtcp2 builds this pair itself instead of reusing an arbitrary system ngtcp2 TLS helper. A system helper does not tell us which Picotls revision it was built against.
OpenSSL
On Unix-like systems, Alien::ngtcp2 uses a system OpenSSL 1.1.1 or newer when one is available.
If no suitable OpenSSL development installation is available, Alien::OpenSSL can provide one.
On Windows, Alien::ngtcp2 uses the OpenSSL that belongs to the active Perl and compiler toolchain. It does not silently install a second TLS stack.
Historical Strawberry Perl 5.28 contains OpenSSL 1.1.0j and is too old. Strawberry Perl 5.30 and newer meet the required baseline.
Using it from another Perl distribution
The core ngtcp2 compiler and linker flags are:
use Alien::ngtcp2;
my $cflags = Alien::ngtcp2->cflags;
my $libs = Alien::ngtcp2->libs;
The TLS helper flags are:
my $crypto_cflags = Alien::ngtcp2->crypto_cflags;
my $crypto_libs = Alien::ngtcp2->crypto_libs;
The compatibility methods remain available:
Alien::ngtcp2->crypto_backend; # picotls
Alien::ngtcp2->crypto_package; # libngtcp2_crypto_picotls
A normal Net::QUIC user should not need to call these methods directly.
Compatibility
Alien::ngtcp2 requires:
- Perl 5.20 or newer
- Alien::Build 2.84 or newer
- OpenSSL 1.1.1 or newer
The bundled ngtcp2 source is version 1.25.0.
Development
perl Makefile.PL
make
make test
See CONTRIBUTING.md for more development information.
License
Alien::ngtcp2 is MIT licensed.
The bundled Picotls source subset is also MIT licensed and keeps its upstream copyright and license notices.