package nocrypto
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=8f720c8753136706ae14d46ba85e27f482a8b3e9ceccf08b0de63348618a507f
md5=c331a7a4d2a563d1d5ed581aeb849011
Description
nocrypto is a small cryptographic library that puts emphasis on the applicative style and ease of use. It includes basic ciphers (AES, 3DES, RC4), hashes (MD5, SHA1, SHA2), public-key primitives (RSA, DSA, DH) and a strong RNG (Fortuna).
RSA timing attacks are countered by blinding. AES timing attacks are avoided by delegating to AES-NI.
README
nocrypto - Simpler crypto
v0.5.4
nocrypto is a small cryptographic library that puts emphasis on the applicative style and ease of use. It includes basic ciphers (AES, 3DES, RC4), hashes (MD5, SHA1, SHA2), public-key primitives (RSA, DSA, DH) and a strong RNG (Fortuna).
RSA timing attacks are countered by blinding. AES timing attacks are avoided by delegating to AES-NI.
Documentation
Interface is documented. Also online.
Build
--with-unix BOOL
--with-lwt BOOL
--xen BOOL
--freestanding BOOL
./pkg/pkg.ml test
FAQ
RNG seeding
If RNG fails with Fatal error: exception Uncommon.Boot.Unseeded_generator
, you need to seed it.
Unix:
let () = Nocrypto_entropy_unix.initialize ()
Unix/Lwt:
let () = Nocrypto_entropy_lwt.initialize () |> ignore
Illegal instructions
Program terminated with signal SIGILL, Illegal instruction.
#0 _mm_aeskeygenassist_si128 (__C=<optimized out>, __X=...)
Nocrypto
has CPU acceleration support (SSE2
+AES-NI
), but no run-time autodetection yet. You compiled the library with acceleration, but you are using it on a machine that does not support it.
pkg/pkg.ml build --accelerate false
force-disables non-portable code.
pkg/pkg.ml build --accelerate true
force-enables non-portable code.
The flag can also be set via the NOCRYPTO_ACCELERATE
environment variable. When unset, it maches the capabilities of the build machine.
Dependencies (21)
- zarith-freestanding
- mirage-entropy
- mirage-solo5
- mirage-no-solo5
- zarith-xen
- mirage-entropy
-
mirage-xen
>= "2.2.0" & < "6.0.0"
- mirage-no-xen
-
sexplib
!= "v0.9.0"
- lwt
- zarith
- cstruct-lwt
-
cstruct
>= "3.0.0" & < "6.1.0"
-
ppx_sexp_conv
>= "113.33.01" & != "v0.11.0"
-
ppx_deriving
>= "4.2"
-
ocb-stubblr
build & >= "0.1.0"
-
cpuid
build & >= "0.1.2"
-
topkg
build & >= "0.9.1"
-
ocamlbuild
build
-
ocamlfind
build
-
ocaml
>= "4.02.0" & != "4.08.0"
Dev Dependencies (1)
-
ounit
with-test
Used by (42)
-
arp
< "1.0.0"
-
aws
>= "1.0.0" & < "1.2"
-
aws-s3
< "3.0.0"
-
certify
< "0.3.3"
-
conex
< "0.10.0"
- conex-nocrypto
-
cuid
>= "0.2"
-
current_github
< "0.2"
- datakit-bridge-github
-
datakit-github
< "0.9.0"
-
dns-cli
< "4.4.0"
-
dns-server
< "4.4.0"
-
dns-tsig
< "4.4.0"
- gemini
-
git
>= "1.3.0" & != "1.10.0" & < "2.1.3"
-
git-mirage
< "2.1.3"
-
git-unix
!= "2.1.0" & < "2.1.3"
- github-hooks
-
hkdf
< "1.0.4"
-
irmin
>= "0.9.0" & < "0.9.6"
-
jupyter
< "1.0.0"
-
jupyter-kernel
< "0.4"
-
letsencrypt
< "0.2.1"
-
mirage-block-ccm
< "1.1.0"
- monorobot
- nocoiner
- noise
- osbx
-
otr
>= "0.3.1" & < "0.3.7"
-
pbkdf
< "1.1.0"
-
rfc6287
>= "1.0.2" & < "1.0.4"
-
salsa20
< "1.1.0"
-
salsa20-core
< "0.3.0"
-
scrypt-kdf
< "1.1.0"
-
session
< "0.5.0"
- slack
-
ssh-agent
< "0.2.1"
-
tls
= "0.6.0" | >= "0.7.1" & < "0.11.0"
- tlstunnel
- ulid
-
websocket
>= "2.0.0" & < "2.3"
-
x509
>= "0.5.1" & < "0.10.0"
Conflicts
None