Current section
Files
Jump to
Current section
Files
src/glethers@signer.erl
-module(glethers@signer).-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).-export([sign_hash/2, sign_typed_data/4, sign_message/2, verify_signature/3]).-export_type([signer/0]).-type signer() :: {signer, glethers@provider:provider(), glethers@signer@signing_key:private_key()}.-spec sign_hash( glethers@signer@signing_key:private_key(), glethers@hash@message:hash()) -> secp256k1_gleam:signature().sign_hash(Private_key, Hash) -> Private_key@1 = begin _pipe = Private_key, glethers@signer@signing_key:to_bit_array(_pipe) end, Message = begin _pipe@1 = Hash, glethers@hash@message:to_bit_array(_pipe@1) end, _assert_subject = secp256k1_gleam:sign(Message, Private_key@1), {ok, Signature} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail, module => <<"glethers/signer"/utf8>>, function => <<"sign_hash"/utf8>>, line => 17}) end, Signature.-spec sign_typed_data( glethers@signer@signing_key:private_key(), glethers@hash@typed_data:typed_data_domain(), HVV, fun((HVV) -> {binary(), list({binary(), glethers@hash@typed_data:complex_field()})})) -> secp256k1_gleam:signature().sign_typed_data(Private_key, Domain, Struct, Encoder) -> Hash = glethers@hash@typed_data:hash_message(Domain, Struct, Encoder), sign_hash(Private_key, Hash).-spec sign_message(glethers@signer@signing_key:private_key(), binary()) -> secp256k1_gleam:signature().sign_message(Private_key, Message) -> Hash = glethers@hash@message:hash_message(Message), sign_hash(Private_key, Hash).-spec verify_signature( glethers@signer@signing_key:private_key(), binary(), secp256k1_gleam:signature()) -> boolean().verify_signature(Private_key, Message, Signature) -> Private_key@1 = begin _pipe = Private_key, glethers@signer@signing_key:to_bit_array(_pipe) end, _assert_subject = 'Elixir.ExSecp256k1':create_public_key(Private_key@1), {ok, Public_key} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail, module => <<"glethers/signer"/utf8>>, function => <<"verify_signature"/utf8>>, line => 42}) end, Hash = begin _pipe@1 = glethers@hash@message:hash_message(Message), glethers@hash@message:to_bit_array(_pipe@1) end, case secp256k1_gleam:verify(Hash, Signature, Public_key) of {ok, _} -> true; {error, _} -> false end.