Package org.bitcoinj.wallet
Class DeterministicSeed
- java.lang.Object
-
- org.bitcoinj.wallet.DeterministicSeed
-
- All Implemented Interfaces:
EncryptableItem
public class DeterministicSeed extends java.lang.Object implements EncryptableItem
Holds the seed bytes for the BIP32 deterministic wallet algorithm, inside aDeterministicKeyChain
. The purpose of this wrapper is to simplify the encryption code.
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_SEED_ENTROPY_BITS
static int
MAX_SEED_ENTROPY_BITS
-
Constructor Summary
Constructors Constructor Description DeterministicSeed(byte[] entropy, java.lang.String passphrase, long creationTimeSecs)
Deprecated.DeterministicSeed(java.lang.String mnemonicString, byte[] seed, java.lang.String passphrase, long creationTimeSecs)
Deprecated.DeterministicSeed(java.security.SecureRandom random, int bits, java.lang.String passphrase)
Deprecated.DeterministicSeed(java.util.List<java.lang.String> mnemonicCode, byte[] seed, java.lang.String passphrase, long creationTimeSecs)
Deprecated.DeterministicSeed(EncryptedData encryptedMnemonic, EncryptedData encryptedSeed, long creationTimeSecs)
Deprecated.will be removed in a future release
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
check()
Check if our mnemonic is a valid mnemonic phrase for our word list.void
clearCreationTime()
Clears the creation time of this seed.DeterministicSeed
decrypt(KeyCrypter crypter, java.lang.String passphrase, AesKey aesKey)
DeterministicSeed
encrypt(KeyCrypter keyCrypter, AesKey aesKey)
boolean
equals(java.lang.Object o)
java.util.Optional<java.time.Instant>
getCreationTime()
Returns the time at which this encryptable item was first created/derived, or empty of unknown.EncryptedData
getEncryptedData()
Returns the initialization vector and encrypted secret bytes, or null if not encrypted.EncryptedData
getEncryptedSeedData()
org.bitcoinj.protobuf.wallet.Protos.Wallet.EncryptionType
getEncryptionType()
Returns an enum constant describing what algorithm was used to encrypt the key or UNENCRYPTED.java.util.List<java.lang.String>
getMnemonicCode()
Get the mnemonic code, or null if unknown.java.lang.String
getMnemonicString()
Get the mnemonic code as string, or null if unknown.byte[]
getSecretBytes()
Returns the raw bytes of the item, if not encrypted, or null if encrypted or the secret is missing.byte[]
getSeedBytes()
int
hashCode()
boolean
isEncrypted()
Returns whether the item is encrypted or not.static DeterministicSeed
ofEntropy(byte[] entropy, java.lang.String passphrase)
Constructs a BIP 39 mnemonic code and a seed from a given entropy.static DeterministicSeed
ofEntropy(byte[] entropy, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a BIP 39 mnemonic code and a seed from a given entropy.static DeterministicSeed
ofMnemonic(java.lang.String mnemonicCode, java.lang.String passphrase)
Constructs a seed from a BIP 39 mnemonic code.static DeterministicSeed
ofMnemonic(java.lang.String mnemonicCode, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a seed from a BIP 39 mnemonic code.static DeterministicSeed
ofMnemonic(java.util.List<java.lang.String> mnemonicCode, java.lang.String passphrase)
Constructs a seed from a BIP 39 mnemonic code.static DeterministicSeed
ofMnemonic(java.util.List<java.lang.String> mnemonicCode, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a seed from a BIP 39 mnemonic code.static DeterministicSeed
ofRandom(java.security.SecureRandom random, int bits, java.lang.String passphrase)
Constructs a BIP 39 mnemonic code and a seed randomly.void
setCreationTime(java.time.Instant creationTime)
Sets the creation time of this seed.void
setCreationTimeSeconds(long creationTimeSecs)
Deprecated.java.lang.String
toHexString()
Returns the seed as hex or null if encrypted.java.lang.String
toString()
java.lang.String
toString(boolean includePrivate)
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.bitcoinj.crypto.EncryptableItem
getCreationTimeSeconds
-
-
-
-
Field Detail
-
DEFAULT_SEED_ENTROPY_BITS
public static final int DEFAULT_SEED_ENTROPY_BITS
- See Also:
- Constant Field Values
-
MAX_SEED_ENTROPY_BITS
public static final int MAX_SEED_ENTROPY_BITS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DeterministicSeed
@Deprecated public DeterministicSeed(java.lang.String mnemonicString, byte[] seed, java.lang.String passphrase, long creationTimeSecs)
Deprecated.
-
DeterministicSeed
@Deprecated public DeterministicSeed(EncryptedData encryptedMnemonic, @Nullable EncryptedData encryptedSeed, long creationTimeSecs)
Deprecated.will be removed in a future release
-
DeterministicSeed
@Deprecated public DeterministicSeed(java.util.List<java.lang.String> mnemonicCode, @Nullable byte[] seed, java.lang.String passphrase, long creationTimeSecs)
Deprecated.
-
DeterministicSeed
@Deprecated public DeterministicSeed(java.security.SecureRandom random, int bits, java.lang.String passphrase)
Deprecated.
-
DeterministicSeed
@Deprecated public DeterministicSeed(byte[] entropy, java.lang.String passphrase, long creationTimeSecs)
Deprecated.
-
-
Method Detail
-
ofMnemonic
public static DeterministicSeed ofMnemonic(java.lang.String mnemonicCode, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a seed from a BIP 39 mnemonic code. SeeMnemonicCode
for more details on this scheme.- Parameters:
mnemonicCode
- list of words, space separatedpassphrase
- user supplied passphrase, or empty string if there is no passphrasecreationTime
- when the seed was originally created
-
ofMnemonic
public static DeterministicSeed ofMnemonic(java.lang.String mnemonicCode, java.lang.String passphrase)
Constructs a seed from a BIP 39 mnemonic code. SeeMnemonicCode
for more details on this scheme. Use this if you don't know the seed's creation time.- Parameters:
mnemonicCode
- list of words, space separatedpassphrase
- user supplied passphrase, or empty string if there is no passphrase
-
ofMnemonic
public static DeterministicSeed ofMnemonic(java.util.List<java.lang.String> mnemonicCode, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a seed from a BIP 39 mnemonic code. SeeMnemonicCode
for more details on this scheme.- Parameters:
mnemonicCode
- list of wordspassphrase
- user supplied passphrase, or empty string if there is no passphrasecreationTime
- when the seed was originally created
-
ofMnemonic
public static DeterministicSeed ofMnemonic(java.util.List<java.lang.String> mnemonicCode, java.lang.String passphrase)
Constructs a seed from a BIP 39 mnemonic code. SeeMnemonicCode
for more details on this scheme. Use this if you don't know the seed's creation time.- Parameters:
mnemonicCode
- list of wordspassphrase
- user supplied passphrase, or empty string if there is no passphrase
-
ofEntropy
public static DeterministicSeed ofEntropy(byte[] entropy, java.lang.String passphrase, java.time.Instant creationTime)
Constructs a BIP 39 mnemonic code and a seed from a given entropy. SeeMnemonicCode
for more details on this scheme.- Parameters:
entropy
- entropy bits, length must be at least 128 bits and a multiple of 32 bitspassphrase
- user supplied passphrase, or empty string if there is no passphrasecreationTime
- when the seed was originally created
-
ofEntropy
public static DeterministicSeed ofEntropy(byte[] entropy, java.lang.String passphrase)
Constructs a BIP 39 mnemonic code and a seed from a given entropy. SeeMnemonicCode
for more details on this scheme. Use this if you don't know the seed's creation time.- Parameters:
entropy
- entropy bits, length must be at least 128 bits and a multiple of 32 bitspassphrase
- user supplied passphrase, or empty string if there is no passphrase
-
ofRandom
public static DeterministicSeed ofRandom(java.security.SecureRandom random, int bits, java.lang.String passphrase)
Constructs a BIP 39 mnemonic code and a seed randomly. SeeMnemonicCode
for more details on this scheme.- Parameters:
random
- random source for the entropybits
- number of bits of entropy, must be at least 128 bits and a multiple of 32 bitspassphrase
- user supplied passphrase, or empty string if there is no passphrase
-
isEncrypted
public boolean isEncrypted()
Description copied from interface:EncryptableItem
Returns whether the item is encrypted or not. If it is, thenEncryptableItem.getSecretBytes()
will return null.- Specified by:
isEncrypted
in interfaceEncryptableItem
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
toString
public java.lang.String toString(boolean includePrivate)
-
toHexString
@Nullable public java.lang.String toHexString()
Returns the seed as hex or null if encrypted.
-
getSecretBytes
@Nullable public byte[] getSecretBytes()
Description copied from interface:EncryptableItem
Returns the raw bytes of the item, if not encrypted, or null if encrypted or the secret is missing.- Specified by:
getSecretBytes
in interfaceEncryptableItem
-
getSeedBytes
@Nullable public byte[] getSeedBytes()
-
getEncryptedData
@Nullable public EncryptedData getEncryptedData()
Description copied from interface:EncryptableItem
Returns the initialization vector and encrypted secret bytes, or null if not encrypted.- Specified by:
getEncryptedData
in interfaceEncryptableItem
-
getEncryptionType
public org.bitcoinj.protobuf.wallet.Protos.Wallet.EncryptionType getEncryptionType()
Description copied from interface:EncryptableItem
Returns an enum constant describing what algorithm was used to encrypt the key or UNENCRYPTED.- Specified by:
getEncryptionType
in interfaceEncryptableItem
-
getEncryptedSeedData
@Nullable public EncryptedData getEncryptedSeedData()
-
getCreationTime
public java.util.Optional<java.time.Instant> getCreationTime()
Description copied from interface:EncryptableItem
Returns the time at which this encryptable item was first created/derived, or empty of unknown.- Specified by:
getCreationTime
in interfaceEncryptableItem
-
setCreationTime
public void setCreationTime(java.time.Instant creationTime)
Sets the creation time of this seed.- Parameters:
creationTime
- creation time of this seed
-
clearCreationTime
public void clearCreationTime()
Clears the creation time of this seed. This is mainly used deserialization and cloning. Normally you should not need to use this, as keys should have proper creation times whenever possible.
-
setCreationTimeSeconds
@Deprecated public void setCreationTimeSeconds(long creationTimeSecs)
Deprecated.
-
encrypt
public DeterministicSeed encrypt(KeyCrypter keyCrypter, AesKey aesKey)
-
decrypt
public DeterministicSeed decrypt(KeyCrypter crypter, java.lang.String passphrase, AesKey aesKey)
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
check
public void check() throws MnemonicException
Check if our mnemonic is a valid mnemonic phrase for our word list. Does nothing if we are encrypted.- Throws:
MnemonicException
- if check fails
-
getMnemonicCode
@Nullable public java.util.List<java.lang.String> getMnemonicCode()
Get the mnemonic code, or null if unknown.
-
getMnemonicString
@Nullable public java.lang.String getMnemonicString()
Get the mnemonic code as string, or null if unknown.
-
-