ErrDuplicateKeyAlias = errors.New("duplicate key alias")
ErrLoadKey = errors.New("key not found or wrong password ")
ErrDecrypt = errors.New("could not decrypt key with given passphrase")
+ ErrMnemonicLength = errors.New("mnemonic length error")
)
+// EntropyLength random entropy length to generate mnemonics.
+const EntropyLength = 128
+
// HSM type for storing pubkey and privatekey
type HSM struct {
cacheMu sync.Mutex
h.cacheMu.Lock()
defer h.cacheMu.Unlock()
+ // checksum length = entropy length /32
+ // mnemonic length = (entropy length + checksum length)/11
+ if len(strings.Fields(mnemonic)) != (EntropyLength+EntropyLength/32)/11 {
+ return nil, ErrMnemonicLength
+ }
+
normalizedAlias := strings.ToLower(strings.TrimSpace(alias))
if ok := h.cache.hasAlias(normalizedAlias); ok {
return nil, ErrDuplicateKeyAlias
func (h *HSM) createChainKDKey(alias string, auth string, language string) (*XPub, *string, error) {
// Generate a mnemonic for memorization or user-friendly seeds
- entropy, err := mnem.NewEntropy(256)
+ entropy, err := mnem.NewEntropy(EntropyLength)
if err != nil {
return nil, nil, err
}