Class: Crypto::Keys::PrivateKey

Inherits:
Object
  • Object
show all
Defined in:
lib/crypto/keys/private_key.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(private_key_hex, network = MAINNET) ⇒ PrivateKey

Returns a new instance of PrivateKey.

Raises:



5
6
7
8
9
# File 'lib/crypto/keys/private_key.rb', line 5

def initialize(private_key_hex, network = MAINNET)
    @private_key_hex = private_key_hex
    @network = network
    raise AxentroError, "invalid private key: '#{@private_key_hex}'" unless is_valid?
end

Instance Attribute Details

#networkObject (readonly)

Returns the value of attribute network.



3
4
5
# File 'lib/crypto/keys/private_key.rb', line 3

def network
  @network
end

Class Method Details

.from_bytes(bytes, network = MAINNET) ⇒ Object



15
16
17
# File 'lib/crypto/keys/private_key.rb', line 15

def self.from_bytes(bytes, network = MAINNET)
    PrivateKey.new(KeyUtils.to_hex(bytes), network)
end

.from_hex(hex, network = MAINNET) ⇒ Object



11
12
13
# File 'lib/crypto/keys/private_key.rb', line 11

def self.from_hex(hex, network = MAINNET)
    PrivateKey.new(hex, network)
end

Instance Method Details

#addressObject



37
38
39
# File 'lib/crypto/keys/private_key.rb', line 37

def address 
    Address.new(KeyUtils.get_address_from_public_key(self.public_key), @network)
end

#as_bytesObject



23
24
25
# File 'lib/crypto/keys/private_key.rb', line 23

def as_bytes
    KeyUtils.to_bytes(@private_key_hex)
end

#as_hexObject



19
20
21
# File 'lib/crypto/keys/private_key.rb', line 19

def as_hex
    @private_key_hex
end

#is_valid?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/crypto/keys/private_key.rb', line 41

def is_valid?
    !@private_key_hex.nil? && @private_key_hex.size == 64
end

#public_keyObject



31
32
33
34
35
# File 'lib/crypto/keys/private_key.rb', line 31

def public_key
    signing_key = Ed25519::SigningKey.new([@private_key_hex].pack("H*"))
    hex_public_key = signing_key.keypair.unpack("H*").first[64..-1]
    PublicKey.new(hex_public_key, @network)
end

#wifObject



27
28
29
# File 'lib/crypto/keys/private_key.rb', line 27

def wif 
    Wif.from(self, @network)
end