diff --git a/README.md b/README.md index 41f247f..53b14d5 100644 --- a/README.md +++ b/README.md @@ -15,15 +15,17 @@ Execute: The shared library uses NIF. Use the Erlang file `src/ecrecover.erl` to use this: ``` -c("src/ecrecover"). -c("src/ecrecover_util"). -Decoded = ecrecover_util:hex_to_bin("47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad000000000000000000000000000000000000000000000000000000000000001b650acf9d3f5f0a2c799776a1254355d5f4061762a237396a99a0e0e3fc2bcd6729514a0dacb2e623ac4abd157cb18163ff942280db4d5caad66ddf941ba12e03"). -List = binary:bin_to_list(Decoded). -Hash = binary:list_to_bin(lists:sublist(List, 1, 32)). -Sig = binary:list_to_bin(lists:sublist(List, 64, 65)). -Input = <>. -binary:bin_to_list(Input) == binary:bin_to_list(Decoded). -Result = ecrecover:recover(Hash, Sig). -Expected = ecrecover_util:hex_to_bin("000000000000000000000000c08b5542d177ac6686946920409741463a15dddb"). -binary:bin_to_list(Result) == binary:bin_to_list(Expected). %% check result +./rebar3 shell +Erlang/OTP 25 [erts-13.1.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace] +Eshell V13.1.3 (abort with ^G) + +1> Decoded = binary:decode_hex(<<"47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad000000000000000000000000000000000000000000000000000000000000001b650acf9d3f5f0a2c799776a1254355d5f4061762a237396a99a0e0e3fc2bcd6729514a0dacb2e623ac4abd157cb18163ff942280db4d5caad66ddf941ba12e03">>). +2> List = binary:bin_to_list(Decoded). +3> Hash = binary:list_to_bin(lists:sublist(List, 1, 32)). +4> Sig = binary:list_to_bin(lists:sublist(List, 64, 65)). +5> Input = <>. +6> binary:bin_to_list(Input) == binary:bin_to_list(Decoded). +7> Result = ecrecover:recover(Hash, Sig). +8> Expected = binary:decode_hex(<<"000000000000000000000000c08b5542d177ac6686946920409741463a15dddb">>). +9> Result == Expected. %% check result ``` diff --git a/src/ecrecover_util.erl b/src/ecrecover_util.erl deleted file mode 100644 index 6d154b7..0000000 --- a/src/ecrecover_util.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(ecrecover_util). - --export([ recover_from_hex/1 - , bin_to_hex/1 - , hex_to_bin/1 - ]). - -%%============================================================================= -%% External API - -recover_from_hex(Input) -> - <> = hex_to_bin(Input), - PubKey = ecrecover:recover(Hash, Sig), - bin_to_hex(PubKey). - -bin_to_hex(Bin) -> - lists:flatten([io_lib:format("~2.16.0B", [X]) || X <- binary_to_list(Bin)]). - -hex_to_bin(S) -> - hex_to_bin(S, []). -hex_to_bin([], Acc) -> - list_to_binary(lists:reverse(Acc)); -hex_to_bin([X,Y|T], Acc) -> - {ok, [V], []} = io_lib:fread("~16u", [X,Y]), - hex_to_bin(T, [V | Acc]); -hex_to_bin([X|T], Acc) -> - {ok, [V], []} = io_lib:fread("~16u", lists:flatten([X,"0"])), - hex_to_bin(T, [V | Acc]).