Current section
Files
Jump to
Current section
Files
src/munch/internal/native.gleam
import munch/internal/hash.{type Hash}
type Context
pub fn md5() -> Result(Hash, Nil) {
new("md5")
}
pub fn sha1() -> Result(Hash, Nil) {
new("sha1")
}
pub fn sha224() -> Result(Hash, Nil) {
new("sha224")
}
pub fn sha256() -> Result(Hash, Nil) {
new("sha256")
}
pub fn sha384() -> Result(Hash, Nil) {
new("sha384")
}
pub fn sha512() -> Result(Hash, Nil) {
new("sha512")
}
pub fn new(algorithm: String) -> Result(Hash, Nil) {
case init(algorithm) {
Ok(context) -> Ok(hash.from(context, update, finish))
Error(_) -> Error(Nil)
}
}
@external(erlang, "munch_native_ffi", "init")
@external(javascript, "./native.ffi.mjs", "init")
fn init(_algorithm: String) -> Result(Context, Nil) {
Error(Nil)
}
@external(erlang, "crypto", "hash_update")
@external(javascript, "./native.ffi.mjs", "update")
fn update(_context: Context, _bits: BitArray) -> Context
@external(erlang, "crypto", "hash_final")
@external(javascript, "./native.ffi.mjs", "finish")
fn finish(_context: Context) -> BitArray