gleam/crypto
Set of cryptographic functions.
Types
pub type HashAlgorithm {
Sha224
Sha256
Sha384
Sha512
}
Constructors
-
Sha224
-
Sha256
-
Sha384
-
Sha512
Functions
pub fn hash(a: HashAlgorithm, b: BitArray) -> BitArray
Computes a digest of the input bit string.
pub fn hmac(
data: BitArray,
algorithm: HashAlgorithm,
key: BitArray,
) -> BitArray
Calculates the HMAC (hash-based message authentication code) for a bit string.
Based on the Erlang crypto:mac
function.
pub fn secure_compare(left: BitArray, right: BitArray) -> Bool
Compares the two binaries in constant-time to avoid timing attacks.
For more details see: http://codahale.com/a-lesson-in-timing-attacks/
pub fn sign_message(
message: BitArray,
secret: BitArray,
digest_type: HashAlgorithm,
) -> String
Sign a message which can later be verified using the verify_signed_message
function to detect if the message has been tampered with.
A web application could use this verifier to sign HTTP cookies. The data can be read by the user, but cannot be tampered with.
pub fn strong_random_bytes(a: Int) -> BitArray
Generates N bytes randomly uniform 0..255, and returns the result in a binary.
Uses a cryptographically secure prng seeded and periodically mixed with operating system provided entropy. By default this is the RAND_bytes method from OpenSSL.
https://erlang.org/doc/man/crypto.html#strong_rand_bytes-1
pub fn verify_signed_message(
message: String,
secret: BitArray,
) -> Result(BitArray, Nil)
Verify a message created by the sign_message
function.