From e4b82e7a3e6c7522595b5fc48b4fe73501808301 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Fri, 13 Jul 2018 05:08:42 +0200 Subject: [PATCH] feat: message verification (#7) * feat: initial step for verifying messages * add mesage hash generation * message verification attempt * refactor: move message.ex to correct folder * feat: message verification * test: add message signing and verification test --- .gitignore | 3 +++ lib/{ => arkecosystem/crypto}/message.ex | 4 +--- test/crypto/message_test.exs | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) rename lib/{ => arkecosystem/crypto}/message.ex (86%) create mode 100644 test/crypto/message_test.exs diff --git a/.gitignore b/.gitignore index b6c0b07..11e4821 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ ark_elixir-*.tar # Ignore package lock file mix.lock + +# Ignore osx .DS_Store +.DS_Store diff --git a/lib/message.ex b/lib/arkecosystem/crypto/message.ex similarity index 86% rename from lib/message.ex rename to lib/arkecosystem/crypto/message.ex index 1a40e6b..e58c242 100644 --- a/lib/message.ex +++ b/lib/arkecosystem/crypto/message.ex @@ -12,8 +12,6 @@ defmodule ArkEcosystem.Crypto.Message do @spec verify(String.t(), String.t(), String.t()) :: Boolean.t() def verify(message, signature, public_key) do - IO.puts(message) - IO.puts(signature) - IO.puts(public_key) + EcKey.verify(message, signature, public_key) end end diff --git a/test/crypto/message_test.exs b/test/crypto/message_test.exs new file mode 100644 index 0000000..5b14727 --- /dev/null +++ b/test/crypto/message_test.exs @@ -0,0 +1,19 @@ +defmodule ArkEcosystem.Crypto.MessageTest do + use ExUnit.Case, async: false + alias ArkEcosystem.Crypto.Message + + test "should be able to sign a message" do + signed = Message.sign("hello", "world") + assert(signed[:message] == "hello") + assert(signed[:publickey] == "039b101edcbe1ee37ff6b2318526a425b629e823d7d8d9154417880595a28000ee") + assert(signed[:signature] == "3045022100ff2007e57064946fb80f4280dca2a9d312c8ec9a101f706700eae732947b65f302207a6a0fbd07d4084aba6dcd53d0c3ef531bd42d0281079323709ac2026420a8a7") + end + + test "should be able to verify a message" do + signed = Message.sign("hello", "world") + assert(Message.verify(signed[:message], signed[:signature], signed[:publickey]) == true) + # Change last character of signature, as verify should then return false + assert(Message.verify(signed[:message], "3045022100ff2007e57064946fb80f4280dca2a9d312c8ec9a101f706700eae732947b65f302207a6a0fbd07d4084aba6dcd53d0c3ef531bd42d0281079323709ac2026420a8a2", signed[:publickey]) == false) + end + +end