Bitcoin-Crypto
view release on metacpan or search on metacpan
lib/Bitcoin/Crypto/BIP44.pm view on Meta::CPAN
coin_type => Bitcoin::Crypto::Network->get('bitcoin_testnet'), # can also be a number or a key instance
index => 43,
# account => 0,
# change => 0,
);
# stringifies automatically
say "$path";
# can be used in key derivation
$ext_private_key->derive_key($path);
=head1 DESCRIPTION
This class is a helper for constructing BIP44-compilant key derivation paths.
BIP44 describes the mechanism the HD (Hierarchical Deterministic) wallets use
to decide derivation paths for coins. BIP49 and BIP84 are constructed the same
way, but used for compat and segwit addresses respectively.
Each coin has its own C<coin_type> constant, a list of which is maintained
here: L<https://github.com/satoshilabs/slips/blob/master/slip-0044.md>.
lib/Bitcoin/Crypto/BIP85.pm view on Meta::CPAN
__END__
=head1 NAME
Bitcoin::Crypto::BIP85 - BIP85 (deterministic entropy) implementation
=head1 SYNOPSIS
use Bitcoin::Crypto::BIP85;
my $bip85 = Bitcoin::Crypto::BIP85->new(
key => $extended_private_key,
);
# get raw bytestring seed
my $seed = $bip85->derive_entropy("m/0'/0'");
# get a mnemonic
my $mnemonic = $bip85->derive_mnemonic(index => 0);
=head1 DESCRIPTION
lib/Bitcoin/Crypto/Key/ExtPrivate.pm view on Meta::CPAN
# child number - 4 bytes
$hmac_data .= ensure_length pack('N', $child_num), 4;
my $data = hmac('SHA512', $self->chain_code, $hmac_data);
my $tweak = substr $data, 0, 32;
my $chain_code = substr $data, 32, 32;
Bitcoin::Crypto::Exception::KeyDerive->trap_into(
sub {
$key = ecc->add_private_key($key, $tweak);
die 'verification failed' unless ecc->verify_private_key($key);
},
"key $child_num in sequence was found invalid"
);
return $self->new(
key_instance => $key,
chain_code => $chain_code,
child_number => $child_num,
parent_fingerprint => $self->get_fingerprint,
depth => $self->depth + 1,
lib/Bitcoin/Crypto/Role/Key.pm view on Meta::CPAN
'trying to create key from unknown key data'
) unless $is_private == $self->_is_private;
Bitcoin::Crypto::Exception::KeyCreate->raise(
'invalid entropy data passed to key creation method'
) unless defined $is_private;
if ($is_private) {
Bitcoin::Crypto::Exception::KeyCreate->raise(
'private key is not valid'
) unless ecc->verify_private_key(ensure_length $entropy, Bitcoin::Crypto::Constants::key_max_length);
}
}
signature_for has_purpose => (
method => Object,
positional => [BIP44Purpose],
);
sub has_purpose
{
( run in 0.244 second using v1.01-cache-2.11-cpan-4d50c553e7e )