Class: CLPublicKey
Class Method Summary
collapse
Instance Method Summary
collapse
account_hash_from_byte_to_hex, byte_hash
#decode_base_16, #encode_base_16, #from_bytes, #to_bytes
Methods inherited from CLValue
#to_hash
Constructor Details
#initialize(raw_public_key, tag) ⇒ CLPublicKey
Returns a new instance of CLPublicKey.
35
36
37
38
39
40
|
# File 'lib/types/cl_public_key.rb', line 35
def initialize(raw_public_key, tag)
super()
@tag = tag
@raw_public_key = raw_public_key
raw_public_key_length_valid?(raw_public_key, tag)
end
|
Class Method Details
.from_ed25519(public_key) ⇒ Object
113
114
115
|
# File 'lib/types/cl_public_key.rb', line 113
def self.from_ed25519(public_key)
CLPublicKey.new(public_key, CLPublicKeyTag[:ED25519])
end
|
.from_hex(public_key_hex) ⇒ Object
.from_json(json) ⇒ Object
146
147
148
149
150
151
152
|
# File 'lib/types/cl_public_key.rb', line 146
def self.from_json(json)
parsed = JSON.parse(json).deep_symbolize_keys
bytes = Utils::Base16.decode16(parsed[:bytes])
tag = bytes[0]
raw_public_key = bytes[1..]
CLPublicKey.new(raw_public_key, tag)
end
|
.from_secp256k1(public_key) ⇒ Object
121
122
123
|
# File 'lib/types/cl_public_key.rb', line 121
def self.from_secp256k1(public_key)
CLPublicKey.new(public_key, CLPublicKeyTag[:SECP256K1])
end
|
.to_json(public_key) ⇒ Object
142
143
144
|
# File 'lib/types/cl_public_key.rb', line 142
def self.to_json(public_key)
json = {"bytes": public_key.to_hex, "cl_type": public_key.get_cl_type}.to_json
end
|
Instance Method Details
86
87
88
|
# File 'lib/types/cl_public_key.rb', line 86
def ed25519?
@tag == CLPublicKeyTag[:ED25519]
end
|
#from_ed25519(public_key) ⇒ Object
109
110
111
|
# File 'lib/types/cl_public_key.rb', line 109
def from_ed25519(public_key)
CLPublicKey.new(public_key, CLPublicKeyTag[:ED25519])
end
|
#from_hex(public_key_hex) ⇒ Object
#from_secp256k1(public_key) ⇒ Object
117
118
119
|
# File 'lib/types/cl_public_key.rb', line 117
def from_secp256k1(public_key)
CLPublicKey.new(public_key, CLPublicKeyTag[:SECP256K1])
end
|
#get_cl_public_key_tag ⇒ Object
#get_cl_type ⇒ Object
60
61
62
63
|
# File 'lib/types/cl_public_key.rb', line 60
def get_cl_type
@cl_type = CLPublicKeyType.new
@cl_type.to_string
end
|
#get_signature_algorithm ⇒ Object
#get_value ⇒ Object
66
67
68
|
# File 'lib/types/cl_public_key.rb', line 66
def get_value
@raw_public_key
end
|
#raw_public_key_length_valid?(raw_public_key, tag) ⇒ Boolean
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/types/cl_public_key.rb', line 42
def raw_public_key_length_valid?(raw_public_key, tag)
if tag == CLPublicKeyTag[:ED25519] || tag == SignatureAlgorithm[:Ed25519]
if raw_public_key.length != ED25519_LENGTH
raise ArgumentError.new("Wrong length of ED25519 key. Expected #{ED25519_LENGTH}, but got #{raw_public_key.length}")
end
@raw_public_key = raw_public_key
@tag = tag
elsif tag == CLPublicKeyTag[:SECP256K1] || tag == SignatureAlgorithm[:Secp256K1]
if raw_public_key.length != SECP256K1_LENGTH
raise ArgumentError.new("Wrong length of SECP256K1 key. Expected #{SECP256K1_LENGTH}, but got #{raw_public_key.length}")
end
@raw_public_key = raw_public_key
@tag = tag
else
raise ArgumentError.new("Unsupported type of public key")
end
end
|
90
91
92
|
# File 'lib/types/cl_public_key.rb', line 90
def secp256k1?
@tag == CLPublicKeyTag[:SECP256K1]
end
|
#to_account_hash_byte_array ⇒ Array<Integer>
95
96
97
98
99
100
101
|
# File 'lib/types/cl_public_key.rb', line 95
def to_account_hash_byte_array
key_name = CLPublicKeyTag.key(@tag).to_s
prefix = key_name.downcase.unpack("C*") + [0]
bytes = prefix + @raw_public_key
result_array = Utils::HashUtils.byte_hash(bytes)
@raw_public_key.length == 0 ? [] : result_array
end
|
#to_account_hash_hex ⇒ String