Native TLS client with PEM mTLS identity support, derived from moonbitlang/async 0.21.3
moon add Strangelight-Merser/async-tlslet tls = @tls.Tls::client(
tcp,
host="broker.example",
trust=@tls.CustomPemFile("server-ca.pem"),
identity={
certificate_chain_file: "client-chain.pem",
private_key_file: "client.key",
},
)moon check --target native
MOONBIT_ASYNC_CHECK_FD_LEAK=1 moon test --target nativepub(all) struct ClientIdentity {
certificate_chain_file : String
private_key_file : String
}type Tlsasync fn[Inner : Reader + Writer] Tls::client(inner : Inner, verify? : Bool, host? : String, sni? : Bool, trust? : TrustedRoot, identity? : ClientIdentity) -> Tlsasync fn[R : Reader, W : Writer] Tls::client_from_pair(r : R, w : W, verify? : Bool, host? : String, sni? : Bool, trust? : TrustedRoot, identity? : ClientIdentity) -> Tlsasync fn[Inner : Reader + Writer] Tls::server(inner : Inner, private_key_file~ : String, private_key_type~ : X509FileType, certificate_file~ : String, certificate_type~ : X509FileType, client_ca_file? : String, require_client_certificate? : Bool, min_protocol_version? : Int) -> Tlsasync fn[R : Reader, W : Writer] Tls::server_from_pair(r : R, w : W, private_key_file~ : String, private_key_type~ : X509FileType, certificate_file~ : String, certificate_type~ : X509FileType, client_ca_file? : String, require_client_certificate? : Bool, min_protocol_version? : Int) -> Tlspub(all) enum TrustedRoot {
NoVerification
SystemRoot
CustomPemFile(String)
}fn describe_tls_error(err : Error) -> String#internal(internal, "for internal use only")
fn rand_bytes(num : Int) -> Bytes raiseInstall
Download zipNative TLS client with PEM mTLS identity support, derived from moonbitlang/async 0.21.3