class ArkEcosystem::Crypto::Utils::Message

The builder to work with signed messages.

Public Class Methods

new(message) click to toggle source
# File lib/arkecosystem/crypto/utils/message.rb, line 6
def initialize(message)
  @public_key = message[:publickey]
  @signature = message[:signature]
  @message = message[:message]
end
sign(message, passphrase) click to toggle source
# File lib/arkecosystem/crypto/utils/message.rb, line 12
def self.sign(message, passphrase)
  key = ArkEcosystem::Crypto::Identities::PrivateKey.from_passphrase(passphrase)

  hash = Digest::SHA256.digest(message)

  Message.new(publickey: BTC.to_hex(key.public_key),
              signature: BTC.to_hex(key.ecdsa_signature(hash)),
              message: message)
end

Public Instance Methods

to_json() click to toggle source
# File lib/arkecosystem/crypto/utils/message.rb, line 36
def to_json
  to_params.to_json
end
to_params() click to toggle source
# File lib/arkecosystem/crypto/utils/message.rb, line 30
def to_params
  { publickey: @public_key,
    signature: @signature,
    message: @message }
end
verify() click to toggle source
# File lib/arkecosystem/crypto/utils/message.rb, line 22
def verify
  key = BTC::Key.new(public_key: BTC.from_hex(@public_key))

  hash = Digest::SHA256.digest(@message)

  key.verify_ecdsa_signature(BTC.from_hex(@signature), hash)
end