TLS/SSL secure socket module for Quadrate using OpenSSL.
quadpm install tlsPrerequisites: OpenSSL development libraries must be installed:
- Debian/Ubuntu:
apt install libssl-dev - Fedora/RHEL:
dnf install openssl-devel - Arch:
pacman -S openssl - macOS:
brew install openssl
use net
use tls
fn main() {
// HTTPS client example
"example.com" 443 net::connect! -> sock
sock "example.com" tls::connect! -> conn
conn "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" tls::send! -> sent
conn 4096 tls::receive! -> response -> n
response print nl
conn tls::close
sock net::close
}
connect(socket:i64 hostname:str -- conn:ptr)!- Wrap TCP socket with TLS (client mode)connect_mtls(socket:i64 hostname:str cert:str key:str -- conn:ptr)!- Connect with client certificate (mTLS)
accept(socket:i64 cert:str key:str -- conn:ptr)!- Wrap TCP socket with TLS (server mode)
send(conn:ptr data:str -- bytes:i64)!- Send encrypted datareceive(conn:ptr max:i64 -- data:str bytes:i64)!- Receive and decrypt data
close(conn:ptr --)- Close TLS connection (does NOT close underlying socket)
ErrInit(2) - TLS initialization failedErrConnect(3) - TLS handshake failed (client)ErrAccept(4) - TLS handshake failed (server)ErrCertificate(5) - Certificate errorErrRead(6) - TLS read errorErrWrite(7) - TLS write errorErrClosed(8) - Connection closed by peerErrMemory(9) - Memory allocation failedErrInvalidArg(10) - Invalid argument
- Minimum TLS 1.2 enforced
- Certificate verification enabled by default
- Server Name Indication (SNI) supported
- Hostname verification enabled
Apache-2.0