bip39

package module
v0.0.0-...-e45ab58 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2023 License: MIT Imports: 11 Imported by: 0

README

go-bip39

Go implementation of Bitcoin BIP39,containing full test compatible with bitcoinjs and other well-known mnemonic implementations of bip39. The main features of the implementation are:

  1. Multilingual support with multilingual test of code
  2. Standard of utf and bytes based on NFKD encoding of bitcoinjs bip39
  3. Full coverage testing

The implementation is based on https://github.com/tyler-smith/go-bip39 and resolved problem of encoding utf bytes based on NFKD encoding of bitcoinjs bip39 that was not supported in the package and added multilingual support of bip39 to the project. The project tried to complete the tests and resolve bottlenecks of the mentioned project

Examples

package main

// The example contains two functions of bip39 package. You can see other functions in bip39 package
import (
	"encoding/hex"
	"fmt"

	"github.com/decen-one/go-bip39"
)

func main() {
	//NewRandMnemonic(language string,mnemonicSize int) (mnemonic space separated wordlist string, error )
	//language should be in ["chinese-simplified", "chinese-traditional", "czech", "english", "french", "italian", "japanese", "korean", "portuguese", "spanish"]
	//mnemonicSize should be in [12, 15, 18, 21, 24]
	words, err := bip39.NewRandMnemonic("english", 12)
	fmt.Println(words)
	fmt.Println(err)

	//convert words to corresponding seed checking words and language and validating the mnemonic words first
	//language should be in ["chinese-simplified", "chinese-traditional", "czech", "english", "french", "italian", "japanese", "korean", "portuguese", "spanish"]
	//mnemonic should be list of words with length of  [12, 15, 18, 21, 24] words in space separated string
	//password is passphrase string
	seed, err := bip39.NewSeedWithErrorChecking("english", words, "password")
	fmt.Println(hex.EncodeToString(seed))
	fmt.Println(err)
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidMnemonic is returned when trying to use a malformed mnemonic.
	ErrInvalidMnemonic = errors.New("Invalid mnemonic")

	//ErrInvalidLanguage is returned when trying to use a malformed language.
	ErrInvalidLanguage = errors.New("Invalid language")
	// 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")

	// Err MnemonicSizeInvalid is returned when trying to use an entropy set with
	// an invalid sentence size.
	ErrMnemonicSizeInvalid = errors.New("Entropy length must be [12, 24] and a multiple of 3")

	// 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

func EntropyFromMnemonic(lang string, mnemonic string) ([]byte, error)

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 GetWordIndex

func GetWordIndex(lang string, word string) (int, error)

GetWordIndex gets word index in wordMap.

func GetWordList

func GetWordList(lang string) ([]string, error)

GetWordList gets the list of words to use for mnemonics.

func IsMnemonicValid

func IsMnemonicValid(lang string, mnemonic string) bool

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

func MnemonicToByteArray(lang string, mnemonic string, raw ...bool) ([]byte, error)

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

func NewEntropy(bitSize int) ([]byte, error)

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 NewEntropyWithMnemonicSize

func NewEntropyWithMnemonicSize(MnemonicSize int) ([]byte, error)

NewEntropyWith MnemonicSize will create random entropy bytes so long as the requested size MnemonicSize is an appropriate size.

MnemonicSize has to be a multiple 3 and be within the inclusive range of {12, 24}.

func NewMnemonic

func NewMnemonic(lang string, entropy []byte) (string, error)

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.

func NewRandMnemonic

func NewRandMnemonic(lang string, mnemonicSize int) (string, error)

NewRandMnemonic will return a string consisting of new random mnemonic words If the provided language or mnemonicSize is invalid, an error will be returned. mnemonicSize has to be a multiple 3 and be within the inclusive range of {12, 24}.

func NewSeed

func NewSeed(mnemonic string, password string) []byte

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.

func NewSeedWithErrorChecking

func NewSeedWithErrorChecking(lang string, mnemonic string, password string) ([]byte, error)

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 SetWordMap

func SetWordMap()

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL