salsa20

AuthorAlfredo Beaumont <alfredo.beaumont@gmail.com>
LicenseBSD2
Homepagehttps://github.com/abeaumont/ocaml-salsa20
Issue Trackerhttps://github.com/abeaumont/ocaml-salsa20/issues
MaintainerAlfredo Beaumont <alfredo.beaumont@gmail.com>
Dependencies
&alcotest
cstruct>= 1.7.0
nocrypto>= 0.5.3
ocamlbuild
ocamlfind
salsa20-core>= 0.1.0
topkg
Availableocaml-version >= "4.02.0"
PublishedOct 30, 2017
Source [http] https://github.com/abeaumont/ocaml-salsa20/archive/0.1.0.tar.gz
473a7d5e6cf73e4095e5007af56c836b
StatisticsInstalled 4 times last month.
Edithttps://github.com/ocaml/opam-repository/tree/master/packages/salsa20/salsa20.0.1.0/opam

Family of encryption functions, in pure OCaml

A pure OCaml implementation of Salsa20 encryption function family.

Installation

opam install salsa20

Usage

utop[0]> #require "nocrypto";;
utop[1]> #require "nocrypto.unix";;
utop[2]> Nocrypto_entropy_unix.initialize ();;
- : unit = ()
utop[3]> let key = Nocrypto.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 "salsa20";;
utop[6]> let state = Salsa20.create key nonce;;
val state : Salsa20.t = <abstr>
utop[7]> Salsa20.encrypt (Cstruct.of_string "My secret text") state |> Cstruct.to_string;;
- : string = " 2\193\020`\142\182\234\188H[R\241V"
  • Key can either 32 (recommended) or 16 bytes
  • Salsa20 state may use a different hashing function, the recommended Salsa20_core.salsa20_20_core is used by default.
No package is dependent