Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
xen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

docs Build Status

ChaCha family of encryption functions, in OCaml

An OCaml implementation of ChaCha functions, both ChaCha20 and the reduced ChaCha8 and ChaCha12 functions. The hot loop is implemented in C for efficiency reasons.

Installation

opam install chacha

Usage

utop[0]> #require "mirage-crypto";;
utop[1]> #require "mirage-crypto-rng.unix";;
utop[2]> Mirage_crypto_rng_unix.initialize ();;
- : unit = ()
utop[3]> let key = Mirage_crypto_rng.generate 32;;
val key : Cstruct.t = {Cstruct.buffer = <abstr>; off = 0; len = 32}
utop[4]> let nonce = Cstruct.create 8;;
val nonce : Cstruct.t = {Cstruct.buffer = <abstr>; off = 0; len = 8}
utop[5]> #require "chacha";;
utop[6]> let state = Chacha.create key nonce;;
val state : Chacha.t = <abstr>
utop[7]> Chacha.encrypt (Cstruct.of_string "My secret text") state |> Cstruct.to_string;;
- : string = "\026m.\\363\\026\\263\\207Xg\\256l\\262\\232F"
  • Key can either 32 (recommended) or 16 bytes
  • Chacha state may use a different hashing function, the recommended Chacha_core.chacha20 is used by default.

About

ChaCha20, ChaCha12 and ChaCha8 encryption functions, in OCaml

Topics

Resources

License

Packages

No packages published

Languages