class CryptoconditionsRuby::Types::Ed25519Fulfillment
Constants
- FEATURE_BITMASK
- FULFILLMENT_LENGTH
- PUBKEY_LENGTH
- SIGNATURE_LENGTH
- TYPE_ID
Attributes
public_key[RW]
signature[RW]
Public Class Methods
new(public_key = nil)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 12 def initialize(public_key = nil) if public_key public_key = Crypto::Ed25519VerifyingKey.new(public_key) if public_key.is_a?(String) raise TypeError unless public_key.is_a?(Crypto::Ed25519VerifyingKey) end @public_key = public_key @signature = nil end
Public Instance Methods
calculate_max_fulfillment_length()
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 53 def calculate_max_fulfillment_length Ed25519Fulfillment::FULFILLMENT_LENGTH end
generate_hash()
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 34 def generate_hash raise StandardError, 'Requires a public publicKey' unless public_key public_key.to_s end
parse_dict(data)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 67 def parse_dict(data) self.public_key = Crypto::Ed25519VerifyingKey.new(data['public_key']) self.signature = (Utils::Base58.decode(data['signature']) if data['signature']) end
parse_payload(reader, *_args)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 39 def parse_payload(reader, *_args) self.public_key = Crypto::Ed25519VerifyingKey.new( Utils::Base58.encode(reader.read_octet_string(Ed25519Fulfillment::PUBKEY_LENGTH)) ) self.signature = reader.read_octet_string(Ed25519Fulfillment::SIGNATURE_LENGTH) end
sign(message, private_key)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 25 def sign(message, private_key) sk = private_key vk = sk.get_verifying_key self.public_key = vk self.signature = sk.sign(message, 'bytes') end
to_dict()
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 57 def to_dict { 'type' => 'fulfillment', 'type_id' => TYPE_ID, 'bitmask' => bitmask, 'public_key' => Utils::Base58.encode(public_key.to_s), 'signature' => (Utils::Base58.encode(signature) if signature) } end
validate(message: nil, **_kwargs)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 72 def validate(message: nil, **_kwargs) return false unless message && signature public_key.verify(signature, message, 'bytes') end
write_common_header(writer)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 21 def write_common_header(writer) writer.write_var_octet_string(public_key) end
write_payload(writer)
click to toggle source
# File lib/cryptoconditions_ruby/types/ed25519_fulfillment.rb, line 46 def write_payload(writer) writer.tap do |w| w.write_octet_string(public_key.to_s, Ed25519Fulfillment::PUBKEY_LENGTH) w.write_octet_string(signature, Ed25519Fulfillment::SIGNATURE_LENGTH) end end