Documentation ¶
Overview ¶
Package bip39 is the official Golang implementation of the BIP39 spec.
The official BIP39 spec can be found at https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
Index ¶
- Variables
- func EntropyFromMnemonic(mnemonic string) ([]byte, error)
- func IsMnemonicValid(mnemonic string) bool
- func MnemonicToByteArray(mnemonic string, raw ...bool) ([]byte, error)
- func NewEntropy(bitSize int) ([]byte, error)
- func NewMnemonic(entropy []byte) (string, error)
- func NewSeed(mnemonic string, password string) []byte
- func NewSeedWithErrorChecking(mnemonic string, password string) ([]byte, error)
- func SetWordList(list []string)
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidMnemonic is returned when trying to use a malformed mnemonic. ErrInvalidMnemonic = errors.New("Invalid menomic") // ErrEntropyLengthInvalid is returned when trying to use an entropy set with // an invalid size. ErrEntropyLengthInvalid = errors.New("Entropy length must be [128, 256] and a multiple of 32") // ErrValidatedSeedLengthMismatch is returned when a validated seed is not the // same size as the given seed. This should never happen is present only as a // sanity assertion. ErrValidatedSeedLengthMismatch = errors.New("Seed length does not match validated seed length") // ErrChecksumIncorrect is returned when entropy has the incorrect checksum. ErrChecksumIncorrect = errors.New("Checksum incorrect") )
Functions ¶
func EntropyFromMnemonic ¶
EntropyFromMnemonic takes a mnemonic generated by this library, and returns the input entropy used to generate the given mnemonic. An error is returned if the given mnemonic is invalid.
func IsMnemonicValid ¶
IsMnemonicValid attempts to verify that the provided mnemonic is valid. Validity is determined by both the number of words being appropriate, and that all the words in the mnemonic are present in the word list.
func MnemonicToByteArray ¶
MnemonicToByteArray takes a mnemonic string and turns it into a byte array suitable for creating another mnemonic. An error is returned if the mnemonic is invalid.
func NewEntropy ¶
NewEntropy will create random entropy bytes so long as the requested size bitSize is an appropriate size.
bitSize has to be a multiple 32 and be within the inclusive range of {128, 256}
func NewMnemonic ¶
NewMnemonic will return a string consisting of the mnemonic words for the given entropy. If the provide entropy is invalid, an error will be returned.
Example ¶
package main import ( "encoding/hex" "fmt" "github.com/Qitmeer/qng/crypto/bip39" ) func main() { // the entropy can be any byte slice, generated how pleased, // as long its bit size is a multiple of 32 and is within // the inclusive range of {128,256} entropy, _ := hex.DecodeString("066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad") // generate a mnemomic mnemomic, _ := bip39.NewMnemonic(entropy) fmt.Println(mnemomic) }
Output: all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform
func NewSeed ¶
NewSeed creates a hashed seed output given a provided string and password. No checking is performed to validate that the string provided is a valid mnemonic. NOTE: the mnemonic is the passphrase prefix
Example ¶
package main import ( "encoding/hex" "fmt" "github.com/Qitmeer/qng/crypto/bip39" ) func main() { seed := bip39.NewSeed("all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform", "TREZOR") fmt.Println(hex.EncodeToString(seed)) }
Output: 26e975ec644423f4a4c4f4215ef09b4bd7ef924e85d1d17c4cf3f136c2863cf6df0a475045652c57eb5fb41513ca2a2d67722b77e954b4b3fc11f7590449191d
func NewSeedWithErrorChecking ¶
NewSeedWithErrorChecking creates a hashed seed output given the mnemonic string and a password. An error is returned if the mnemonic is not convertible to a byte array.
func SetWordList ¶
func SetWordList(list []string)
SetWordList sets the list of words to use for mnemonics. Currently the list that is set is used package-wide.
Types ¶
This section is empty.