class BitJWT::Crypto

Public Class Methods

new(private_key) click to toggle source
# File lib/bitjwt/crypto.rb, line 5
def initialize(private_key)
  @key = Bitcoin::Key.from_base58(private_key)
end
verify(data, signature_base64, pub_address) click to toggle source
# File lib/bitjwt/crypto.rb, line 19
def self.verify(data, signature_base64, pub_address)
  pubkey = Bitcoin::Key.recover_compact_signature_to_key(data, signature_base64)
  pubkey.addr == pub_address
end

Public Instance Methods

bitcoin_address() click to toggle source
# File lib/bitjwt/crypto.rb, line 9
def bitcoin_address
  @key.addr
end
sign(data) click to toggle source
# File lib/bitjwt/crypto.rb, line 13
def sign(data)
  bsm = Bitcoin.bitcoin_signed_message_hash(data)
  signature = Bitcoin::Secp256k1.sign_compact(bsm, Util.hex_to_bin(@key.priv))
  Base64.strict_encode64(signature)
end