class MoneyTree::Master
Constants
- HD_WALLET_BASE_KEY
- RANDOM_SEED_SIZE
Attributes
seed[R]
seed_hash[R]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/money-tree/node.rb, line 244 def initialize(opts = {}) @depth = 0 @index = 0 opts[:seed] = [opts[:seed_hex]].pack("H*") if opts[:seed_hex] if opts[:seed] @seed = opts[:seed] @seed_hash = generate_seed_hash(@seed) raise SeedGeneration::ImportError unless seed_valid?(@seed_hash) set_seeded_keys elsif opts[:private_key] || opts[:public_key] raise ImportError, 'chain code required' unless opts[:chain_code] @chain_code = opts[:chain_code] if opts[:private_key] @private_key = opts[:private_key] @public_key = MoneyTree::PublicKey.new @private_key else opts[:public_key] @public_key = if opts[:public_key].is_a?(MoneyTree::PublicKey) opts[:public_key] else MoneyTree::PublicKey.new(opts[:public_key]) end end else generate_seed set_seeded_keys end end
Public Instance Methods
generate_seed()
click to toggle source
# File lib/money-tree/node.rb, line 276 def generate_seed @seed = OpenSSL::Random.random_bytes(32) @seed_hash = generate_seed_hash(@seed) raise SeedGeneration::ValidityError unless seed_valid?(@seed_hash) end
generate_seed_hash(seed)
click to toggle source
# File lib/money-tree/node.rb, line 282 def generate_seed_hash(seed) hmac_sha512 HD_WALLET_BASE_KEY, seed end
is_private?()
click to toggle source
# File lib/money-tree/node.rb, line 272 def is_private? true end
seed_hex()
click to toggle source
# File lib/money-tree/node.rb, line 298 def seed_hex bytes_to_hex(seed) end
seed_valid?(seed_hash)
click to toggle source
# File lib/money-tree/node.rb, line 286 def seed_valid?(seed_hash) return false unless seed_hash.bytesize == 64 master_key = left_from_hash(seed_hash) !master_key.zero? && master_key < MoneyTree::Key::ORDER end
set_seeded_keys()
click to toggle source
# File lib/money-tree/node.rb, line 292 def set_seeded_keys @private_key = MoneyTree::PrivateKey.new key: left_from_hash(seed_hash) @chain_code = right_from_hash(seed_hash) @public_key = MoneyTree::PublicKey.new @private_key end