Class: Eth::Key
- Inherits:
-
Object
show all
- Defined in:
- lib/eth/key.rb
Defined Under Namespace
Classes: Decrypter, Encrypter
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Instance Attribute Details
#private_key ⇒ Object
Returns the value of attribute private_key.
6
7
8
|
# File 'lib/eth/key.rb', line 6
def private_key
@private_key
end
|
#public_key ⇒ Object
Returns the value of attribute public_key.
6
7
8
|
# File 'lib/eth/key.rb', line 6
def public_key
@public_key
end
|
Class Method Details
.decrypt(data, password) ⇒ Object
14
15
16
17
|
# File 'lib/eth/key.rb', line 14
def self.decrypt(data, password)
priv = Decrypter.perform data, password
default priv: priv
end
|
.default(priv: nil) ⇒ Object
39
40
41
42
43
44
45
46
|
# File 'lib/eth/key.rb', line 39
def default(priv: nil)
key = self.new
private_key = MoneyTree::PrivateKey.new key: priv
public_key = MoneyTree::PublicKey.new(private_key, compressed: false)
key.private_key = private_key
key.public_key = public_key
return key
end
|
.encrypt(key, password) ⇒ Object
8
9
10
11
12
|
# File 'lib/eth/key.rb', line 8
def self.encrypt(key, password)
key = new(priv: key) unless key.is_a?(Key)
Encrypter.perform key.private_hex, password
end
|
.from_node(node) ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/eth/key.rb', line 30
def from_node(node)
key = self.new
private_key = MoneyTree::PrivateKey.new(key: node.private_key.to_hex)
public_key = MoneyTree::PublicKey.new(node.private_key, compressed: false)
key.private_key = private_key
key.public_key = public_key
return key
end
|
.from_private_key_hex(private_key_hex) ⇒ Object
20
21
22
23
24
25
26
27
28
|
# File 'lib/eth/key.rb', line 20
def from_private_key_hex(private_key_hex)
private_key = MoneyTree::PrivateKey.new(key: private_key_hex)
private_key.remove_instance_variable(:@raw_key)
private_key.options[:key] = nil
key = self.new
key.private_key = private_key
key.public_key = MoneyTree::PublicKey.new private_key, compressed: false
return key
end
|
Instance Method Details
#address ⇒ Object
Also known as:
to_address
67
68
69
|
# File 'lib/eth/key.rb', line 67
def address
Utils.public_key_to_address public_hex
end
|
#get_signer_key(message, signature) ⇒ Object
88
89
90
91
92
93
94
95
|
# File 'lib/eth/key.rb', line 88
def get_signer_key(message, signature)
hash = message_hash(message)
signer_public_hex = OpenSsl.recover_compact(hash, signature)
signer_public_key = MoneyTree::PublicKey.new(signer_public_hex, compressed: false)
signer_key = Eth::Key.new
signer_key.public_key = signer_public_key
return signer_key
end
|
#private_hex ⇒ Object
55
56
57
|
# File 'lib/eth/key.rb', line 55
def private_hex
private_key.to_hex
end
|
#public_bytes ⇒ Object
59
60
61
|
# File 'lib/eth/key.rb', line 59
def public_bytes
public_key.to_bytes
end
|
#public_hex ⇒ Object
63
64
65
|
# File 'lib/eth/key.rb', line 63
def public_hex
public_key.to_hex
end
|
#sign(message) ⇒ Object
72
73
74
|
# File 'lib/eth/key.rb', line 72
def sign(message)
sign_hash message_hash(message)
end
|
#sign_hash(hash) ⇒ Object
76
77
78
79
80
81
|
# File 'lib/eth/key.rb', line 76
def sign_hash(hash)
loop do
signature = OpenSsl.sign_compact hash, private_hex, public_hex
return signature if valid_s? signature
end
end
|
#verify_rpc_signature(message, signature, signer_address) ⇒ Object
97
98
99
100
|
# File 'lib/eth/key.rb', line 97
def verify_rpc_signature(message, signature, signer_address)
signer = get_signer_key(message, signature)
signer.address == signer_address
end
|
#verify_rpc_signature_no_prefix(message, signature, signer_address) ⇒ Object
102
103
104
105
|
# File 'lib/eth/key.rb', line 102
def verify_rpc_signature_no_prefix(message, signature, signer_address)
prefixed_message = Eth::Utils.prefix_message(message)
verify_rpc_signature(prefixed_message, signature, signer_address)
end
|
#verify_signature(message, signature) ⇒ Object
83
84
85
86
|
# File 'lib/eth/key.rb', line 83
def verify_signature(message, signature)
hash = message_hash(message)
public_hex == OpenSsl.recover_compact(hash, signature)
end
|