module Netchannels_crypto:sig..end
Crypto extensions for Netchannels
class type tls_channel =object..end
A TLS channel is a layer on top of a bidirectional channel that adds the TLS protocol.
class tls_layer :?start_pos_in:int -> ?start_pos_out:int -> ?resume:string -> role:[ `Client | `Server ] -> rd:Netchannels.raw_in_channel -> wr:Netchannels.raw_out_channel -> peer_name:string option -> Netsys_crypto_types.tls_config ->tls_channel
Adds TLS security to an already established connection, here made available as separate channels for input and output.
class tls_endpoint :?start_pos_in:int -> ?start_pos_out:int -> ?resume:string -> role:[ `Client | `Server ] -> peer_name:string option -> Unix.file_descr -> Netsys_crypto_types.tls_config ->tls_channel
This class is slightly more efficient than tls_layer, and to preferred
if you have direct access to the file descriptors.
class type crypto_out_filter =object..end
Encrypt or decrypt data while writing to a channel
class type crypto_in_filter =object..end
Encrypt or decrypt data while reading from a channel
val encrypt_out : Netsys_ciphers.cipher_ctx ->
Netchannels.out_obj_channel -> crypto_out_filterlet ch2 = encrypt_out ctx ch1: Writing to ch2 encrypts
the data and writes the ciphertext to ch1. Closing ch2 will flush
data and close ch1.
val encrypt_in : Netsys_ciphers.cipher_ctx ->
Netchannels.in_obj_channel -> crypto_in_filterlet ch2 = encrypt_in ctx ch1: Reading from ch2 encrypts
the data from ch1. Closing ch2 will close ch1.
val decrypt_out : Netsys_ciphers.cipher_ctx ->
Netchannels.out_obj_channel -> crypto_out_filterlet ch2 = decrypt_out ctx ch1: Writing to ch2 decrypts
the data and writes the plaintext to ch1. Closing ch2 will flush
data and close ch1.
val decrypt_in : Netsys_ciphers.cipher_ctx ->
Netchannels.in_obj_channel -> crypto_in_filterlet ch2 = decrypt_in ctx ch1: Reading from ch2 decrypts
the data from ch1. Closing ch2 will close ch1.