Packages

Cryptography library for Gleam targeting Erlang and JavaScript

Current section

Files

Jump to
kryptos src kryptos@internal@utils.erl
Raw

src/kryptos@internal@utils.erl

-module(kryptos@internal@utils).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kryptos/internal/utils.gleam").
-export([strip_leading_zeros/1, strip_trailing_zeros/1, pad_left/2]).
-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).
-file("src/kryptos/internal/utils.gleam", 8).
?DOC(false).
-spec strip_leading_zeros(bitstring()) -> bitstring().
strip_leading_zeros(Bytes) ->
case Bytes of
<<16#00, Rest/bitstring>> ->
case erlang:byte_size(Rest) > 0 of
true ->
strip_leading_zeros(Rest);
false ->
Bytes
end;
_ ->
Bytes
end.
-file("src/kryptos/internal/utils.gleam", 29).
?DOC(false).
-spec strip_trailing_zeros_loop(bitstring(), integer()) -> bitstring().
strip_trailing_zeros_loop(Data, Len) ->
case Len of
0 ->
<<>>;
_ ->
Last_byte@1 = case gleam_stdlib:bit_array_slice(Data, Len - 1, 1) of
{ok, <<Last_byte>>} -> Last_byte;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kryptos/internal/utils"/utf8>>,
function => <<"strip_trailing_zeros_loop"/utf8>>,
line => 33,
value => _assert_fail,
start => 881,
'end' => 945,
pattern_start => 892,
pattern_end => 909})
end,
case Last_byte@1 of
0 ->
strip_trailing_zeros_loop(Data, Len - 1);
_ ->
Result@1 = case gleam_stdlib:bit_array_slice(Data, 0, Len) of
{ok, Result} -> Result;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"kryptos/internal/utils"/utf8>>,
function => <<"strip_trailing_zeros_loop"/utf8>>,
line => 37,
value => _assert_fail@1,
start => 1048,
'end' => 1101,
pattern_start => 1059,
pattern_end => 1069})
end,
Result@1
end
end.
-file("src/kryptos/internal/utils.gleam", 24).
?DOC(false).
-spec strip_trailing_zeros(bitstring()) -> bitstring().
strip_trailing_zeros(Data) ->
Len = erlang:byte_size(Data),
strip_trailing_zeros_loop(Data, Len).
-file("src/kryptos/internal/utils.gleam", 48).
?DOC(false).
-spec pad_left(bitstring(), integer()) -> bitstring().
pad_left(Value, Size) ->
Current_size = erlang:byte_size(Value),
case Current_size >= Size of
true ->
Value;
false ->
Padding_size = Size - Current_size,
Padding = begin
_pipe = gleam@list:repeat(<<0>>, Padding_size),
gleam_stdlib:bit_array_concat(_pipe)
end,
gleam_stdlib:bit_array_concat([Padding, Value])
end.