mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-03-02 21:45:14 +01:00
25 lines
941 B
Ruby
25 lines
941 B
Ruby
# Dependencies: https://github.com/lian/bitcoin-ruby
|
|
|
|
require 'digest'
|
|
require 'bitcoin'
|
|
|
|
challenge_hidden = "cd8552569d6e4509266ef137584d1e62c7579b5b8ed69bbafa4b864c6521e7c2" # Use random value
|
|
challenge_visual = "2015-03-23 17:39:22"
|
|
public_key = "023a472219ad3327b07c18273717bb3a40b39b743756bf287fbd5fa9d263237f45"
|
|
signature = "20f2d1a42d08c3a362be49275c3ffeeaa415fc040971985548b9f910812237bb41770bf2c8d488428799fbb7e52c11f1a3404011375e4080e077e0e42ab7a5ba02"
|
|
|
|
def verify(challenge_hidden, challenge_visual, pubkey, signature, version)
|
|
address = Bitcoin.pubkey_to_address(pubkey)
|
|
sha256 = Digest::SHA256.new
|
|
signature = [signature.htb].pack('m0')
|
|
case version
|
|
when 1
|
|
message = challenge_hidden.htb + challenge_visual
|
|
when 2
|
|
message = sha256.digest(challenge_hidden.htb) + sha256.digest(challenge_visual)
|
|
else
|
|
raise "Unknown version"
|
|
end
|
|
Bitcoin.verify_message(address, signature, message, 2)
|
|
end
|