<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Cryptokit" rel="Chapter" href="Cryptokit.html"><title>Cryptokit</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> transform =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> available_output : int<br> <span class="keyword">method</span> finish : unit<br> <span class="keyword">method</span> flush : unit<br> <span class="keyword">method</span> get_byte : int<br> <span class="keyword">method</span> get_char : char<br> <span class="keyword">method</span> get_string : string<br> <span class="keyword">method</span> get_substring : string * int * int<br> <span class="keyword">method</span> input_block_size : int<br> <span class="keyword">method</span> output_block_size : int<br> <span class="keyword">method</span> put_byte : int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> put_char : char <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> put_string : string <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> put_substring : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> wipe : unit<br> <span class="keyword">end</span><br> <span class="keyword">val</span> transform_string : <span class="constructor">Cryptokit</span>.transform <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> transform_channel :<br> <span class="constructor">Cryptokit</span>.transform <span class="keywordsign">-></span><br> ?len:int <span class="keywordsign">-></span> <span class="constructor">Pervasives</span>.in_channel <span class="keywordsign">-></span> <span class="constructor">Pervasives</span>.out_channel <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> compose :<br> <span class="constructor">Cryptokit</span>.transform <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">class</span> <span class="keyword">type</span> hash =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> add_byte : int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> add_char : char <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> add_string : string <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> add_substring : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> hash_size : int<br> <span class="keyword">method</span> result : string<br> <span class="keyword">method</span> wipe : unit<br> <span class="keyword">end</span><br> <span class="keyword">val</span> hash_string : <span class="constructor">Cryptokit</span>.hash <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> hash_channel :<br> <span class="constructor">Cryptokit</span>.hash <span class="keywordsign">-></span> ?len:int <span class="keywordsign">-></span> <span class="constructor">Pervasives</span>.in_channel <span class="keywordsign">-></span> string<br> <span class="keyword">module</span> <span class="constructor">Random</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> rng =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> random_bytes : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> wipe : unit<br> <span class="keyword">end</span><br> <span class="keyword">val</span> string : <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng <span class="keywordsign">-></span> int <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> secure_rng : <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng<br> <span class="keyword">val</span> system_rng : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng<br> <span class="keyword">val</span> device_rng : string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng<br> <span class="keyword">val</span> egd_rng : string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng<br> <span class="keyword">val</span> pseudo_rng : string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Padding</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> scheme =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> pad : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> strip : string <span class="keywordsign">-></span> int<br> <span class="keyword">end</span><br> <span class="keyword">val</span> length : <span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme<br> <span class="keyword">val</span> _8000 : <span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Cipher</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> direction = <span class="constructor">Encrypt</span> <span class="keywordsign">|</span> <span class="constructor">Decrypt</span><br> <span class="keyword">type</span> chaining_mode = <span class="constructor">ECB</span> <span class="keywordsign">|</span> <span class="constructor">CBC</span> <span class="keywordsign">|</span> <span class="constructor">CFB</span> <span class="keyword">of</span> int <span class="keywordsign">|</span> <span class="constructor">OFB</span> <span class="keyword">of</span> int<br> <span class="keyword">val</span> aes :<br> ?mode:<span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.chaining_mode <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span><br> ?iv:string <span class="keywordsign">-></span><br> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.direction <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> des :<br> ?mode:<span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.chaining_mode <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span><br> ?iv:string <span class="keywordsign">-></span><br> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.direction <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> triple_des :<br> ?mode:<span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.chaining_mode <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span><br> ?iv:string <span class="keywordsign">-></span><br> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.direction <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> arcfour :<br> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Cipher</span>.direction <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Hash</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> sha1 : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> sha256 : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> ripemd160 : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> md5 : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">MAC</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> hmac_sha1 : string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> hmac_md5 : string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> aes :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> des :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> triple_des :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">val</span> des_final_triple_des :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.hash<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">RSA</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> key = {<br> size : int;<br> n : string;<br> e : string;<br> d : string;<br> p : string;<br> q : string;<br> dp : string;<br> dq : string;<br> qinv : string;<br> }<br> <span class="keyword">val</span> wipe_key : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> new_key :<br> ?rng:<span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng <span class="keywordsign">-></span> ?e:int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key<br> <span class="keyword">val</span> encrypt : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> decrypt : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> decrypt_CRT : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> sign : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> sign_CRT : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> unwrap_signature : <span class="constructor">Cryptokit</span>.<span class="constructor">RSA</span>.key <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">DH</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> parameters = { p : string; g : string; privlen : int; }<br> <span class="keyword">val</span> new_parameters :<br> ?rng:<span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng <span class="keywordsign">-></span><br> ?privlen:int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.parameters<br> <span class="keyword">type</span> private_secret<br> <span class="keyword">val</span> private_secret :<br> ?rng:<span class="constructor">Cryptokit</span>.<span class="constructor">Random</span>.rng <span class="keywordsign">-></span><br> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.parameters <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.private_secret<br> <span class="keyword">val</span> message :<br> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.parameters <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.private_secret <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> shared_secret :<br> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.parameters <span class="keywordsign">-></span><br> <span class="constructor">Cryptokit</span>.<span class="constructor">DH</span>.private_secret <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> derive_key : ?diversification:string <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> string<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Block</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> block_cipher =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> blocksize : int<br> <span class="keyword">method</span> transform : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> wipe : unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> cipher : <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> transform<br> <span class="keyword">class</span> cipher_padded_encrypt :<br> <span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> transform<br> <span class="keyword">class</span> cipher_padded_decrypt :<br> <span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> transform<br> <span class="keyword">class</span> mac :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> hash<br> <span class="keyword">class</span> mac_final_triple :<br> ?iv:string <span class="keywordsign">-></span><br> ?pad:<span class="constructor">Cryptokit</span>.<span class="constructor">Padding</span>.scheme <span class="keywordsign">-></span><br> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span><br> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> hash<br> <span class="keyword">class</span> aes_encrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> aes_decrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> des_encrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> des_decrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> triple_des_encrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> triple_des_decrypt : string <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> cbc_encrypt :<br> ?iv:string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> cbc_decrypt :<br> ?iv:string <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> cfb_encrypt :<br> ?iv:string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> cfb_decrypt :<br> ?iv:string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">class</span> ofb :<br> ?iv:string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.<span class="constructor">Block</span>.block_cipher <span class="keywordsign">-></span> block_cipher<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Stream</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> stream_cipher =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> transform : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> wipe : unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> cipher : <span class="constructor">Cryptokit</span>.<span class="constructor">Stream</span>.stream_cipher <span class="keywordsign">-></span> transform<br> <span class="keyword">class</span> arcfour : string <span class="keywordsign">-></span> stream_cipher<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Base64</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> encode_multiline : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> encode_compact : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> decode : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Hexa</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> encode : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> decode : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Zlib</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> compress : ?level:int <span class="keywordsign">-></span> unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">val</span> uncompress : unit <span class="keywordsign">-></span> <span class="constructor">Cryptokit</span>.transform<br> <span class="keyword">end</span><br> <span class="keyword">type</span> error =<br> <span class="constructor">Wrong_key_size</span><br> <span class="keywordsign">|</span> <span class="constructor">Wrong_IV_size</span><br> <span class="keywordsign">|</span> <span class="constructor">Wrong_data_length</span><br> <span class="keywordsign">|</span> <span class="constructor">Bad_padding</span><br> <span class="keywordsign">|</span> <span class="constructor">Output_buffer_overflow</span><br> <span class="keywordsign">|</span> <span class="constructor">Incompatible_block_size</span><br> <span class="keywordsign">|</span> <span class="constructor">Number_too_long</span><br> <span class="keywordsign">|</span> <span class="constructor">Seed_too_short</span><br> <span class="keywordsign">|</span> <span class="constructor">Message_too_long</span><br> <span class="keywordsign">|</span> <span class="constructor">Bad_encoding</span><br> <span class="keywordsign">|</span> <span class="constructor">Compression_error</span> <span class="keyword">of</span> string * string<br> <span class="keywordsign">|</span> <span class="constructor">No_entropy_source</span><br> <span class="keywordsign">|</span> <span class="constructor">Entropy_source_closed</span><br> <span class="keywordsign">|</span> <span class="constructor">Compression_not_supported</span><br> <span class="keyword">exception</span> <span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Cryptokit</span>.error<br> <span class="keyword">val</span> wipe_string : string <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> xor_string : string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> string <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> mod_power : string <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> mod_mult : string <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string <span class="keywordsign">-></span> string<br> <span class="keyword">end</span></code></body></html>