Packages

A replacement for gleam_crypto that works on all targets.

Current section

Files

Jump to
munch src munch@internal@native.erl
Raw

src/munch@internal@native.erl

-module(munch@internal@native).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/munch/internal/native.gleam").
-export([new/1, md5/0, sha1/0, sha224/0, sha256/0, sha384/0, sha512/0]).
-export_type([context/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type context() :: any().
-file("src/munch/internal/native.gleam", 29).
?DOC(false).
-spec new(binary()) -> {ok, munch@internal@hash:hash()} | {error, nil}.
new(Algorithm) ->
case munch_native_ffi:init(Algorithm) of
{ok, Context} ->
{ok,
munch@internal@hash:from(
Context,
fun crypto:hash_update/2,
fun crypto:hash_final/1
)};
{error, _} ->
{error, nil}
end.
-file("src/munch/internal/native.gleam", 5).
?DOC(false).
-spec md5() -> {ok, munch@internal@hash:hash()} | {error, nil}.
md5() ->
new(<<"md5"/utf8>>).
-file("src/munch/internal/native.gleam", 9).
?DOC(false).
-spec sha1() -> {ok, munch@internal@hash:hash()} | {error, nil}.
sha1() ->
new(<<"sha1"/utf8>>).
-file("src/munch/internal/native.gleam", 13).
?DOC(false).
-spec sha224() -> {ok, munch@internal@hash:hash()} | {error, nil}.
sha224() ->
new(<<"sha224"/utf8>>).
-file("src/munch/internal/native.gleam", 17).
?DOC(false).
-spec sha256() -> {ok, munch@internal@hash:hash()} | {error, nil}.
sha256() ->
new(<<"sha256"/utf8>>).
-file("src/munch/internal/native.gleam", 21).
?DOC(false).
-spec sha384() -> {ok, munch@internal@hash:hash()} | {error, nil}.
sha384() ->
new(<<"sha384"/utf8>>).
-file("src/munch/internal/native.gleam", 25).
?DOC(false).
-spec sha512() -> {ok, munch@internal@hash:hash()} | {error, nil}.
sha512() ->
new(<<"sha512"/utf8>>).