taoensso.nippy.crypto

Low-level crypto utils.
Private & alpha, very likely to change!

cbc-cipher

(cbc-cipher)

cipher-kit-aes-cbc

Default CipherKit for AES CBC

cipher-kit-aes-gcm

Default CipherKit for AES GCM

decrypt

(decrypt {:keys [cipher-kit salt-size salt->key-fn enc-ba], :or {cipher-kit cipher-kit-aes-gcm}})

encrypt

(encrypt {:keys [cipher-kit ?salt-ba key-ba plain-ba rand-bytes-fn], :or {cipher-kit cipher-kit-aes-gcm, rand-bytes-fn rand-bytes}})

gcm-cipher

(gcm-cipher)

ICipherKit

protocol

members

get-cipher

(get-cipher _)
Returns a thread-safe `javax.crypto.Cipher` instance.

get-iv-size

(get-iv-size _)
Returns necessary iv-ba length.

get-key-spec

(get-key-spec _ ba)
Returns a `javax.crypto.spec.SecretKeySpec`.

get-param-spec

(get-param-spec _ iv-ba)
Returns a `java.security.spec.AlgorithmParameters`.

murmur3

(murmur3 s)

pwd-as-ba

(pwd-as-ba utf8-or-ba)

rand-bool

(rand-bool)

rand-bytes

(rand-bytes size)

rand-double

(rand-double)

rand-gauss

(rand-gauss)

rand-long

(rand-long)(rand-long n)

rand-nth

(rand-nth coll)

sha256-ba

(sha256-ba ba)

sha256-md

(sha256-md)

sha512-ba

(sha512-ba ba)

sha512-key-ba

(sha512-key-ba ?salt-ba utf8-or-ba)(sha512-key-ba ?salt-ba utf8-or-ba n-rounds)
SHA512-based key generator. Good JVM availability without extra dependencies
(PBKDF2, bcrypt, scrypt, etc.). Decent security when using many rounds.

sha512-md

(sha512-md)

take-ba

(take-ba n ba)

utf8->ba

(utf8->ba s)