salsa20

Salsa20 family of encryption functions, in pure OCaml
README


Salsa20 family of encryption functions, in pure OCaml

A pure OCaml implementation of Salsa20 encryption function family.

Installation

opam install salsa20

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 "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.

Install
Published
15 Aug 2021
Sources
1.2.0.tar.gz
md5=aabca4d3954543cf8afb5121e0719821
sha512=afe2212ee6f44a32811214b0a369be06ed7806e501adb4e98dd5b0bc0718ce311c8306919813d64ed7a6df3d6147d42ce819488801b863d5cd31079c37120fbb
Dependencies
alcotest
with-test
salsa20-core
>= "0.1.0"
cstruct
>= "6.0.0"
dune
>= "1.8.0"
ocaml
>= "4.07.0"
Reverse Dependencies