`sig
module Symmetric_cipher :
sig
type sc_ctx = {
set_iv : string -> unit;
set_header : string -> unit;
encrypt : Netsys_types.memory -> Netsys_types.memory -> unit;
decrypt : Netsys_types.memory -> Netsys_types.memory -> bool;
mac : unit -> string;
}
type sc = {
name : string;
mode : string;
key_lengths : (int * int) list;
iv_lengths : (int * int) list;
block_constraint : int;
supports_aead : bool;
create : string -> Netsys_crypto_modes.Symmetric_cipher.sc_ctx;
}
val extract :
(module Netsys_crypto_types.SYMMETRIC_CRYPTO) ->
string * string -> Netsys_crypto_modes.Symmetric_cipher.sc
val extract_all :
(module Netsys_crypto_types.SYMMETRIC_CRYPTO) ->
Netsys_crypto_modes.Symmetric_cipher.sc list
val cbc_of_ecb :
Netsys_crypto_modes.Symmetric_cipher.sc ->
Netsys_crypto_modes.Symmetric_cipher.sc
val ofb_of_ecb :
Netsys_crypto_modes.Symmetric_cipher.sc ->
Netsys_crypto_modes.Symmetric_cipher.sc
val ctr_of_ecb :
Netsys_crypto_modes.Symmetric_cipher.sc ->
Netsys_crypto_modes.Symmetric_cipher.sc
end
module type CIPHERS =
sig val ciphers : Netsys_crypto_modes.Symmetric_cipher.sc list end
module Bundle :
functor (C : CIPHERS) -> Netsys_crypto_types.SYMMETRIC_CRYPTO
module Add_modes :
functor (SC : Netsys_crypto_types.SYMMETRIC_CRYPTO) ->
Netsys_crypto_types.SYMMETRIC_CRYPTO
end`