From 52cdcf8f0f1127f5ee694f39086a9e4df54174e6 Mon Sep 17 00:00:00 2001 From: Andrea Franz Date: Mon, 14 May 2018 19:13:56 +0200 Subject: [PATCH] wallet compatibility (#858) * update master key generations using "Bitcoin seed" as hmac key following BIP32 * use `"mnemonic" + passphrase` as salt for pbkdf2 following BIP39 * test generated addresses and compatibility with BIP44 * check generated public keys * test children private keys * update MasterKey to be a constant * don't export salt and masterKey constants * use `crypto.FromECDSA` to get the hex representation of the priv key * use empty pwd for the generation of the BIP39 seed, keeping pwd to encrypt keys * add comment before the seed generation with empty passphrase --- extkeys/hdkey.go | 6 +- extkeys/hdkey_test.go | 76 +++++++++++-- extkeys/mnemonic.go | 11 +- extkeys/mnemonic_test.go | 33 +++--- extkeys/mnemonic_vectors.json | 194 +--------------------------------- geth/account/accounts.go | 14 ++- 6 files changed, 105 insertions(+), 229 deletions(-) diff --git a/extkeys/hdkey.go b/extkeys/hdkey.go index f866431af..04b093330 100644 --- a/extkeys/hdkey.go +++ b/extkeys/hdkey.go @@ -104,16 +104,18 @@ type ExtendedKey struct { CachedPubKeyData []byte // (non-serialized) used for memoization of public key (calculated from a private key) } +const masterSecret = "Bitcoin seed" + // NewMaster creates new master node, root of HD chain/tree. // Both master and child nodes are of ExtendedKey type, and all the children derive from the root node. -func NewMaster(seed, salt []byte) (*ExtendedKey, error) { +func NewMaster(seed []byte) (*ExtendedKey, error) { // Ensure seed is within expected limits lseed := len(seed) if lseed < MinSeedBytes || lseed > MaxSeedBytes { return nil, ErrInvalidSeedLen } - secretKey, chainCode, err := splitHMAC(seed, salt) + secretKey, chainCode, err := splitHMAC(seed, []byte(masterSecret)) if err != nil { return nil, err } diff --git a/extkeys/hdkey_test.go b/extkeys/hdkey_test.go index 9b1a177aa..c48cfb9dc 100644 --- a/extkeys/hdkey_test.go +++ b/extkeys/hdkey_test.go @@ -4,10 +4,12 @@ import ( "bytes" "encoding/hex" "errors" + "fmt" "reflect" "testing" "github.com/btcsuite/btcd/chaincfg" + "github.com/ethereum/go-ethereum/crypto" ) func TestBIP32Vectors(t *testing.T) { @@ -114,7 +116,7 @@ tests: continue } - extKey, err := NewMaster(seed, []byte("Bitcoin seed")) + extKey, err := NewMaster(seed) if err != nil { t.Errorf("NewMasterKey #%d (%s): %v", i, test.name, err) continue @@ -380,21 +382,21 @@ func TestChildDerivation(t *testing.T) { func TestErrors(t *testing.T) { // Should get an error when seed has too few bytes. - _, err := NewMaster(bytes.Repeat([]byte{0x00}, 15), []byte{0x00}) + _, err := NewMaster(bytes.Repeat([]byte{0x00}, 15)) if err != ErrInvalidSeedLen { t.Errorf("NewMaster: mismatched error -- got: %v, want: %v", err, ErrInvalidSeedLen) } // Should get an error when seed has too many bytes. - _, err = NewMaster(bytes.Repeat([]byte{0x00}, 65), []byte{0x00}) + _, err = NewMaster(bytes.Repeat([]byte{0x00}, 65)) if err != ErrInvalidSeedLen { t.Errorf("NewMaster: mismatched error -- got: %v, want: %v", err, ErrInvalidSeedLen) } // Generate a new key and neuter it to a public extended key. - mnemonic := NewMnemonic(Salt) + mnemonic := NewMnemonic() phrase, err := mnemonic.MnemonicPhrase(128, EnglishLanguage) if err != nil { @@ -402,7 +404,7 @@ func TestErrors(t *testing.T) { } password := "badpassword" - extKey, err := NewMaster(mnemonic.MnemonicSeed(phrase, password), []byte(Salt)) + extKey, err := NewMaster(mnemonic.MnemonicSeed(phrase, password)) if err != nil { t.Errorf("unexpected error: %v", err) return @@ -533,6 +535,68 @@ func TestBIP44ChildDerivation(t *testing.T) { t.Logf("Account 1 key: %s", accounKey2.String()) } +func TestHDWalletCompatibility(t *testing.T) { + password := "TREZOR" + mnemonic := NewMnemonic() + mnemonicPhrase := "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" + seed := mnemonic.MnemonicSeed(mnemonicPhrase, password) + rootKey, err := NewMaster(seed) + if err != nil { + t.Errorf("couldn't create master extended key: %v", err) + } + + expectedAddresses := []struct { + address string + pubKey string + privKey string + }{ + { + address: "0x9c32F71D4DB8Fb9e1A58B0a80dF79935e7256FA6", + pubKey: "0x03986dee3b8afe24cb8ccb2ac23dac3f8c43d22850d14b809b26d6b8aa5a1f4778", + privKey: "0x62f1d86b246c81bdd8f6c166d56896a4a5e1eddbcaebe06480e5c0bc74c28224", + }, + { + address: "0x7AF7283bd1462C3b957e8FAc28Dc19cBbF2FAdfe", + pubKey: "0x03462e7b95dab24fe8a57ac897d9026545ec4327c9c5e4a772e5d14cc5422f9489", + privKey: "0x49ee230b1605382ac1c40079191bca937fc30e8c2fa845b7de27a96ffcc4ddbf", + }, + { + address: "0x05f48E30fCb69ADcd2A591Ebc7123be8BE72D7a1", + pubKey: "0x036650e4b2b8e731a0ef12cda892b70cb95e78ea6e576ba995019b5e9aa7d9c0f5", + privKey: "0xeef2c0702151930b84cffcaa642af58e692956314519114e78f3211a6465f28b", + }, + { + address: "0xbfE91Bc05cE66013660D7Eb742F74BD324DA5F92", + pubKey: "0x0201d1c12e8fcea03a68ad5fd0d02fd0a4bfe0339618f949e2e30cf311e8b83c46", + privKey: "0xbca51d1d3529a0e0787933a2293cf46d9b973ea3ea00e28d3bd33590bc7f7156", + }, + } + + for i := 0; i < len(expectedAddresses); i++ { + key, err := rootKey.BIP44Child(CoinTypeETH, uint32(i)) + if err != nil { + t.Errorf("Error deriving BIP44-compliant key: %s", err) + } + + privateKeyECDSA := key.ToECDSA() + address := crypto.PubkeyToAddress(privateKeyECDSA.PublicKey).Hex() + + if address != expectedAddresses[i].address { + t.Errorf("wrong address generated. expected %s, got %s", expectedAddresses[i].address, address) + } + + pubKey := fmt.Sprintf("0x%x", (crypto.CompressPubkey(&privateKeyECDSA.PublicKey))) + if pubKey != expectedAddresses[i].pubKey { + t.Errorf("wrong public key generated. expected %s, got %s", expectedAddresses[i].pubKey, pubKey) + } + + privKey := fmt.Sprintf("0x%x", crypto.FromECDSA(privateKeyECDSA)) + if privKey != expectedAddresses[i].privKey { + t.Errorf("wrong private key generated. expected %s, got %s", expectedAddresses[i].privKey, privKey) + } + } +} + //func TestNewKey(t *testing.T) { // mnemonic := NewMnemonic() // @@ -543,7 +607,7 @@ func TestBIP44ChildDerivation(t *testing.T) { // // password := "badpassword" // mnemonic.salt = "Bitcoin seed" -// key, err := NewMaster(mnemonic.MnemonicSeed(phrase, password), []byte(mnemonic.salt)) +// key, err := NewMaster(mnemonic.MnemonicSeed(phrase, password)) // if err != nil { // t.Error(err) // } diff --git a/extkeys/mnemonic.go b/extkeys/mnemonic.go index 978923169..7578e228e 100644 --- a/extkeys/mnemonic.go +++ b/extkeys/mnemonic.go @@ -25,8 +25,7 @@ import ( // https://github.com/trezor/python-mnemonic/blob/master/mnemonic/mnemonic.py // https://github.com/bitpay/bitcore-mnemonic/blob/master/lib/mnemonic.js (used in eth-lightwallet.js) -// Salt is input salt to mnemonic key -const Salt = "status-im" +const defaultSalt = "mnemonic" // available dictionaries const ( @@ -90,13 +89,9 @@ type Mnemonic struct { // NewMnemonic returns new mnemonic generator // nolint: dupl, misspell -func NewMnemonic(salt string) *Mnemonic { - if len(salt) == 0 { - salt = Salt - } - +func NewMnemonic() *Mnemonic { mnemonic := &Mnemonic{ - salt: salt, + salt: defaultSalt, } mnemonic.wordLists[EnglishLanguage] = &WordList{"abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo"} diff --git a/extkeys/mnemonic_test.go b/extkeys/mnemonic_test.go index b75745fac..13eb7655d 100644 --- a/extkeys/mnemonic_test.go +++ b/extkeys/mnemonic_test.go @@ -13,24 +13,18 @@ type VectorsFile struct { } type Vector struct { - language, salt, password, input, mnemonic, seed, xprv string + language, password, input, mnemonic, seed, xprv string } func TestNewMnemonic(t *testing.T) { - m1 := NewMnemonic("") - if m1.salt != Salt { + m1 := NewMnemonic() + if m1.salt != defaultSalt { t.Errorf("expected default salt, got: %q", m1.salt) } - - customSalt := "custom-salt" - m2 := NewMnemonic(customSalt) - if m2.salt != customSalt { - t.Errorf("expected %q, got: %q", customSalt, m2.salt) - } } func TestMnemonic_WordList(t *testing.T) { - m := NewMnemonic(Salt) + m := NewMnemonic() _, err := m.WordList(EnglishLanguage) if err != nil { t.Errorf("expected WordList to return WordList without errors, got: %s", err) @@ -48,7 +42,7 @@ func TestMnemonic_WordList(t *testing.T) { // TestMnemonicPhrase func TestMnemonicPhrase(t *testing.T) { - mnemonic := NewMnemonic(Salt) + mnemonic := NewMnemonic() // test strength validation strengths := []entropyStrength{127, 129, 257} @@ -84,13 +78,22 @@ func TestMnemonicPhrase(t *testing.T) { stats := map[string]int{} for _, vector := range vectorsFile.vectors { stats[vector.language]++ - mnemonic := NewMnemonic(vector.salt) + mnemonic := NewMnemonic() seed := mnemonic.MnemonicSeed(vector.mnemonic, vector.password) if fmt.Sprintf("%x", seed) != vector.seed { t.Errorf("Test failed (%s): incorrect seed (%x) generated (expected: %s)", vector.language, seed, vector.seed) return } //t.Logf("Test passed: correct seed (%x) generated (expected: %s)", seed, vector.seed) + + rootKey, err := NewMaster(seed) + if err != nil { + t.Error(err) + } + + if rootKey.String() != vector.xprv { + t.Errorf("Test failed (%s): incorrect xprv (%s) generated (expected: %s)", vector.language, rootKey, vector.xprv) + } } for language, count := range stats { t.Logf("[%s]: %d tests completed", language, count) @@ -111,7 +114,7 @@ func LoadVectorsFile(path string) (*VectorsFile, error) { // load data into Vector structs for language, data := range vectorsFile.Data { for _, item := range data { - vectorsFile.vectors = append(vectorsFile.vectors, &Vector{language, item[0], item[1], item[2], item[3], item[4], item[5]}) + vectorsFile.vectors = append(vectorsFile.vectors, &Vector{language, item[0], item[1], item[2], item[3], item[4]}) } } @@ -119,6 +122,6 @@ func LoadVectorsFile(path string) (*VectorsFile, error) { } func (v *Vector) String() string { - return fmt.Sprintf("{salt: %s, password: %s, input: %s, mnemonic: %s, seed: %s, xprv: %s}", - v.salt, v.password, v.input, v.mnemonic, v.seed, v.xprv) + return fmt.Sprintf("{password: %s, input: %s, mnemonic: %s, seed: %s, xprv: %s}", + v.password, v.input, v.mnemonic, v.seed, v.xprv) } diff --git a/extkeys/mnemonic_vectors.json b/extkeys/mnemonic_vectors.json index 418101e7f..554cc78d8 100644 --- a/extkeys/mnemonic_vectors.json +++ b/extkeys/mnemonic_vectors.json @@ -2,7 +2,6 @@ "data": { "english": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about", @@ -10,7 +9,6 @@ "xprv9s21ZrQH143K3h3fDYiay8mocZ3afhfULfb5GX8kCBdno77K4HiA15Tg23wpbeF1pLfs1c5SPmYHrEpTuuRhxMwvKDwqdKiGJS9XFKzUsAF" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "legal winner thank year wave sausage worth useful legal winner thank yellow", @@ -18,7 +16,6 @@ "xprv9s21ZrQH143K2gA81bYFHqU68xz1cX2APaSq5tt6MFSLeXnCKV1RVUJt9FWNTbrrryem4ZckN8k4Ls1H6nwdvDTvnV7zEXs2HgPezuVccsq" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "letter advice cage absurd amount doctor acoustic avoid letter advice cage above", @@ -26,7 +23,6 @@ "xprv9s21ZrQH143K2shfP28KM3nr5Ap1SXjz8gc2rAqqMEynmjt6o1qboCDpxckqXavCwdnYds6yBHZGKHv7ef2eTXy461PXUjBFQg6PrwY4Gzq" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong", @@ -34,7 +30,6 @@ "xprv9s21ZrQH143K2V4oox4M8Zmhi2Fjx5XK4Lf7GKRvPSgydU3mjZuKGCTg7UPiBUD7ydVPvSLtg9hjp7MQTYsW67rZHAXeccqYqrsx8LcXnyd" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent", @@ -42,7 +37,6 @@ "xprv9s21ZrQH143K3mEDrypcZ2usWqFgzKB6jBBx9B6GfC7fu26X6hPRzVjzkqkPvDqp6g5eypdk6cyhGnBngbjeHTe4LsuLG1cCmKJka5SMkmU" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will", @@ -50,7 +44,6 @@ "xprv9s21ZrQH143K3Lv9MZLj16np5GzLe7tDKQfVusBni7toqJGcnKRtHSxUwbKUyUWiwpK55g1DUSsw76TF1T93VT4gz4wt5RM23pkaQLnvBh7" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always", @@ -58,7 +51,6 @@ "xprv9s21ZrQH143K3VPCbxbUtpkh9pRG371UCLDz3BjceqP1jz7XZsQ5EnNkYAEkfeZp62cDNj13ZTEVG1TEro9sZ9grfRmcYWLBhCocViKEJae" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when", @@ -66,7 +58,6 @@ "xprv9s21ZrQH143K36Ao5jHRVhFGDbLP6FCx8BEEmpru77ef3bmA928BxsqvVM27WnvvyfWywiFN8K6yToqMaGYfzS6Db1EHAXT5TuyCLBXUfdm" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art", @@ -74,7 +65,6 @@ "xprv9s21ZrQH143K32qBagUJAMU2LsHg3ka7jqMcV98Y7gVeVyNStwYS3U7yVVoDZ4btbRNf4h6ibWpY22iRmXq35qgLs79f312g2kj5539ebPM" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title", @@ -82,7 +72,6 @@ "xprv9s21ZrQH143K3Y1sd2XVu9wtqxJRvybCfAetjUrMMco6r3v9qZTBeXiBZkS8JxWbcGJZyio8TrZtm6pkbzG8SYt1sxwNLh3Wx7to5pgiVFU" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless", @@ -90,7 +79,6 @@ "xprv9s21ZrQH143K3CSnQNYC3MqAAqHwxeTLhDbhF43A4ss4ciWNmCY9zQGvAKUSqVUf2vPHBTSE1rB2pg4avopqSiLVzXEU8KziNnVPauTqLRo" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote", @@ -98,7 +86,6 @@ "xprv9s21ZrQH143K2WFF16X85T2QCpndrGwx6GueB72Zf3AHwHJaknRXNF37ZmDrtHrrLSHvbuRejXcnYxoZKvRquTPyp2JiNG3XcjQyzSEgqCB" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic", @@ -106,7 +93,6 @@ "xprv9s21ZrQH143K2oZ9stBYpoaZ2ktHj7jLz7iMqpgg1En8kKFTXJHsjxry1JbKH19YrDTicVwKPehFKTbmaxgVEc5TpHdS1aYhB2s9aFJBeJH" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog", @@ -114,7 +100,6 @@ "xprv9s21ZrQH143K3uT8eQowUjsxrmsA9YUuQQK1RLqFufzybxD6DH6gPY7NjJ5G3EPHjsWDrs9iivSbmvjc9DQJbJGatfa9pv4MZ3wjr8qWPAK" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length", @@ -122,7 +107,6 @@ "xprv9s21ZrQH143K2XTAhys3pMNcGn261Fi5Ta2Pw8PwaVPhg3D8DWkzWQwjTJfskj8ofb81i9NP2cUNKxwjueJHHMQAnxtivTA75uUFqPFeWzk" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "scheme spot photo card baby mountain device kick cradle pact join borrow", @@ -130,7 +114,6 @@ "xprv9s21ZrQH143K3FperxDp8vFsFycKCRcJGAFmcV7umQmcnMZaLtZRt13QJDsoS5F6oYT6BB4sS6zmTmyQAEkJKxJ7yByDNtRe5asP2jFGhT6" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave", @@ -138,7 +121,6 @@ "xprv9s21ZrQH143K3R1SfVZZLtVbXEB9ryVxmVtVMsMwmEyEvgXN6Q84LKkLRmf4ST6QrLeBm3jQsb9gx1uo23TS7vo3vAkZGZz71uuLCcywUkt" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside", @@ -146,7 +128,6 @@ "xprv9s21ZrQH143K2WNnKmssvZYM96VAr47iHUQUTUyUXH3sAGNjhJANddnhw3i3y3pBbRAVk5M5qUGFr4rHbEWwXgX4qrvrceifCYQJbbFDems" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "cat swing flag economy stadium alone churn speed unique patch report train", @@ -154,7 +135,6 @@ "xprv9s21ZrQH143K4G28omGMogEoYgDQuigBo8AFHAGDaJdqQ99QKMQ5J6fYTMfANTJy6xBmhvsNZ1CJzRZ64PWbnTFUn6CDV2FxoMDLXdk95DQ" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access", @@ -162,7 +142,6 @@ "xprv9s21ZrQH143K3wtsvY8L2aZyxkiWULZH4vyQE5XkHTXkmx8gHo6RUEfH3Jyr6NwkJhvano7Xb2o6UqFKWHVo5scE31SGDCAUsgVhiUuUDyh" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform", @@ -170,7 +149,6 @@ "xprv9s21ZrQH143K3rEfqSM4QZRVmiMuSWY9wugscmaCjYja3SbUD3KPEB1a7QXJoajyR2T1SiXU7rFVRXMV9XdYVSZe7JoUXdP4SRHTxsT1nzm" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "vessel ladder alter error federal sibling chat ability sun glass valve picture", @@ -178,7 +156,6 @@ "xprv9s21ZrQH143K2QWV9Wn8Vvs6jbqfF1YbTCdURQW9dLFKDovpKaKrqS3SEWsXCu6ZNky9PSAENg6c9AQYHcg4PjopRGGKmdD313ZHszymnps" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump", @@ -186,7 +163,6 @@ "xprv9s21ZrQH143K4aERa2bq7559eMCCEs2QmmqVjUuzfy5eAeDX4mqZffkYwpzGQRE2YEEeLVRoH4CSHxianrFaVnMN2RYaPUZJhJx8S5j6puX" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold", @@ -196,7 +172,6 @@ ], "russian": [ [ - "mnemonic", "ТОРИО", "00000000000000000000000000000000", "абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абрикос", @@ -204,7 +179,6 @@ "xprv9s21ZrQH143K2uVyCi8i5X8gwGeEYwMnwW9iCK5gkho8fVSZWhDNKVTH1TQftF45dS9gbgKwjHGRosNEQ4VLBAsV7kPuMT9MKqDARXyvqp6" ], [ - "mnemonic", "ТОРИО", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "нигде эффект умение ярко шутка скорость язва честь нигде эффект умение ярмарка", @@ -212,7 +186,6 @@ "xprv9s21ZrQH143K2v645wxByTQesDM7bmnH1ZmPH8L99P5HKD3qvJJnMCDgwuA6oQdvZVwhRLJdqrU9ui3LtdpgQSXz1SafoNWsxMAQDgMRztQ" ], [ - "mnemonic", "ТОРИО", "80808080808080808080808080808080", "ничья акцент видный авоська аптека желтый адмирал берег ничья акцент видный абсурд", @@ -220,7 +193,6 @@ "xprv9s21ZrQH143K4SxhnZQbwwC6saDtyjLv3oEaM4wqt31a2kAGqpzJohTwXMUHP3s9XVQtAN3737XNAJrg5mFkEo7nC2FPRXXmVe3DC4j7c85" ], [ - "mnemonic", "ТОРИО", "ffffffffffffffffffffffffffffffff", "ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик япония", @@ -228,7 +200,6 @@ "xprv9s21ZrQH143K36V47oU7ViQeLpFRsZce8Uz6zuECgogjQEqykukRERtyrbq8ggSaKPGD1ENf9urPucYg2ZgcmswkCWenCVcdZHrGc7Err2i" ], [ - "mnemonic", "ТОРИО", "000000000000000000000000000000000000000000000000", "абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур алхимик", @@ -236,7 +207,6 @@ "xprv9s21ZrQH143K39QWzfNLDnbvSWUqUJi9j6LHKRFqJVhgEKDrEqeVSuGdza1qWLf1PXciJ8a3dxdqbRcVtCEaVj1AD9E7G7uouU4p6Nom2Jh" ], [ - "mnemonic", "ТОРИО", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "нигде эффект умение ярко шутка скорость язва честь нигде эффект умение ярко шутка скорость язва честь нигде эстрада", @@ -244,7 +214,6 @@ "xprv9s21ZrQH143K3LDBZ3Yp65NyGe9vULxjHgQr66tNabJgCPan1V3FERn4rW4umd1UAwCS8hzHoQF6U3PBKG7C3GSwvR1seQQFHicRwZwp4h8" ], [ - "mnemonic", "ТОРИО", "808080808080808080808080808080808080808080808080", "ничья акцент видный авоська аптека желтый адмирал берег ничья акцент видный авоська аптека желтый адмирал берег ничья апофеоз", @@ -252,7 +221,6 @@ "xprv9s21ZrQH143K3YmCLmkQ9DA6SbuFwHn5ex43RMYZL1AiuFgmVeD5mykVvb3yXYenEWcKWU6iF3vLNeeyHMYtz24yAgSLHTjWREfghmdzgwa" ], [ - "mnemonic", "ТОРИО", "ffffffffffffffffffffffffffffffffffffffffffffffff", "ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик эмблема", @@ -260,7 +228,6 @@ "xprv9s21ZrQH143K4GHxVCqdYHmm2VgkT7DXauiMu1u1yt7LQVLjdAeeLJAiHNHmT1gAWnPdAP9Ky6QtwVtQGNZCuMD6grsLrNeTAdhG1ScxSie" ], [ - "mnemonic", "ТОРИО", "0000000000000000000000000000000000000000000000000000000000000000", "абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур абажур баклажан", @@ -268,7 +235,6 @@ "xprv9s21ZrQH143K3W1aZeUtpcBL6nBBieChXj5CamQgJ681mJzJSnYQpnX2qrHPjLzqzastWTqPraXvPVSiwvpRfVFastWfWe65MmedPJC4aUR" ], [ - "mnemonic", "ТОРИО", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "нигде эффект умение ярко шутка скорость язва честь нигде эффект умение ярко шутка скорость язва честь нигде эффект умение ярко шутка скорость язва учеба", @@ -276,7 +242,6 @@ "xprv9s21ZrQH143K3WjEtvTHkEn69ZtQFVcxPKD9X2u2rmrXGcBCqeQwwsvfcnBqVG1YibMBcb2F4mkyxKXpaydBx2mV4ZCRPNo6ft1xGDge8xv" ], [ - "mnemonic", "ТОРИО", "8080808080808080808080808080808080808080808080808080808080808080", "ничья акцент видный авоська аптека желтый адмирал берег ничья акцент видный авоська аптека желтый адмирал берег ничья акцент видный авоська аптека желтый адмирал бусы", @@ -284,7 +249,6 @@ "xprv9s21ZrQH143K2CREprwwPMe7KZMfvzkUmBeBFnPvwVQfnuZsisdYcei3nqUE9iRZ8qAa5pX2kVXDpfHAfHvT1dpmPvFtJ1th1xeCH5RhEwM" ], [ - "mnemonic", "ТОРИО", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик ящик шпага", @@ -292,7 +256,6 @@ "xprv9s21ZrQH143K3zY9B7b45HyFrAjNZqetANhBZCfCvWHWNVnaz4hXvRZ5Tv4ssmsoFLD8DcBKQcVtV4xHAaPidLGxBPTnYgQrvqbVozqbD3M" ], [ - "mnemonic", "ТОРИО", "9e885d952ad362caeb4efe34a8e91bd2", "покой зависть лаять кетчуп диван лебедь раствор умение депутат здание звонок премия", @@ -300,7 +263,6 @@ "xprv9s21ZrQH143K4QNCy1wefbKpJnASKS6Qpess15BBKpEevunTZsm8UnDxVj3NoNYCx9PYtwPSKRf3xkbBPNgarmgedwSq1PzZC6ob2kAa1tm" ], [ - "mnemonic", "ТОРИО", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "лезть оборот пена съемка убыток квота кинуть баян шофер кольцо глухой течь кафе пистолет зачет тепло пазуха колодец", @@ -308,7 +270,6 @@ "xprv9s21ZrQH143K3EjYEFBgMPDTTfABNwgDwWFxqbTFVZauo491FdNedtixAreiXLFumoBiG2nkz3CMDv2UGRT8Yme95Q98KHmq1SafTRnjVpn" ], [ - "mnemonic", "ТОРИО", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "литр дышать радио замысел волос досада радио округ строка учитель ронять валенок лихой кандидат лапа украина овца едкий нужда явно спасать мимо досада никто", @@ -316,7 +277,6 @@ "xprv9s21ZrQH143K4WrKnoZt7avyYovfv3APNexFeeN3YavhevRfN2vHzrYmdUjt2ycCWnFRcTVyr6zGS9KPwaU3TR7BzynE6w6SZRLbtJDVchS" ], [ - "mnemonic", "ТОРИО", "c0ba5a8e914111210f2bd131f3d5e08d", "след телега правда вниз бикини оттуда дыра мэтр далекий покрыть музей ванна", @@ -324,7 +284,6 @@ "xprv9s21ZrQH143K3jrUMKLpx4PzAxKcQed2gHV9k22wgrX7p58j8bEL1eG83FVsPeJX2s3f6QJmLzSquf6ibNKp5s6PRctqFawiMdKU4Bb2WF1" ], [ - "mnemonic", "ТОРИО", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "мальчик укол надпись удар театр таможня круг гипотеза раунд сумма стыд штука ссылка париж турист целое даже вдруг", @@ -332,7 +291,6 @@ "xprv9s21ZrQH143K36zdQjJiooB2Jjh316X5NrSepr7amYYfqoo4aKqEHNVhM3Gw6857QAbsZ2feQAkFgYMGGb7feMkksfPLJpE6sWj4QT43HUH" ], [ - "mnemonic", "ТОРИО", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "полный кабина ветка ландшафт визг сугроб охапка узел орган ехать сухой подвиг амфора талант палата кнопка дыхание ниша люстра рента мнение загадка кузнец мозг", @@ -340,7 +298,6 @@ "xprv9s21ZrQH143K3B5y53nvNhVmanTVzPuuUvq37EYGoeU59gVH1Bkup2CP1FR9K7LWpAtzuu11FQKPPRkti8HoEdE1RuJgk1cEouDUt6NPNrt" ], [ - "mnemonic", "ТОРИО", "23db8160a31d3e0dca3688ed941adbf3", "возраст тьма книга защита терапия аномалия вялый талант цикл поперек сапог фонд", @@ -348,7 +305,6 @@ "xprv9s21ZrQH143K3kvF9d17LrGqZ615AJBHvnGCw1ER8wAaHP6yExYFjQgW2GeeCnAn2uE533vQARBWwiUXKvivgzm5ENcvtkro48tfbmSxSvq" ], [ - "mnemonic", "ТОРИО", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "ножницы сигнал гадать язык жуткий явно пятеро теперь часть умысел миграция карта ателье туман даже труба ранее агат", @@ -356,7 +312,6 @@ "xprv9s21ZrQH143K3GPhXgaiEZ8mAc7kKZhbUYcgAAri93v4GonUuMV7QNsqP9FHmVnh9N3YvnGELRwDFys2Z9ivkUNiQEJMWtAeRNb2UX8Z7V4" ], [ - "mnemonic", "ТОРИО", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "англия масло общение кличка нельзя итог магазин ангел ботинок леший лапа небо попытка подход восток очаг муха одеяло сабля камень сталкер акула сказка ружье", @@ -364,7 +319,6 @@ "xprv9s21ZrQH143K2d2pUf718y1x5QHcY3ay1TcQRFU9JaGmrwYy2a33xCyJTxwkJGLkWcCnoNqrwtZpQe4dX19tWPchtbUpc6oYwyshvD9WeRP" ], [ - "mnemonic", "ТОРИО", "f30f8c1da665478f49b001d94c5fc452", "шатер налог апельсин издание качество спина вход абзац тройка кусок чтение препарат", @@ -372,7 +326,6 @@ "xprv9s21ZrQH143K4SRkY8JhrJXNTPiho2E7E4W7q4aV35BExwAuzJwfeQFEXde4PtCidTjMvgsXuWsvPX8pMoUGmYjgF1W2LnmwuZjSbA46Yb7" ], [ - "mnemonic", "ТОРИО", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "слово монета нынче овца труд роман родной шорох грек оценка едва здоровье ночь веко липа овес грек глыба", @@ -380,7 +333,6 @@ "xprv9s21ZrQH143K3oy8aX4oJhtsZsEpX7cjN15cAZQcyJFjq1Xiw36TVyNF5zVP54owFoRCMRfMuhPwMHSwSCaPDLzzFeTidg8Ms5aYH6kZCLh" ], [ - "mnemonic", "ТОРИО", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "шорох горячий звезда третий вина туда штурман лоно сосуд пятно гнездо деталь плод аппетит служба порог лето сюрприз прочесть уклон ирония стыд мораль ценность", @@ -390,7 +342,6 @@ ], "japanese": [ [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "00000000000000000000000000000000", "あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あおぞら", @@ -398,7 +349,6 @@ "xprv9s21ZrQH143K258jAiWPAM6JYT9hLA91MV3AZUKfxmLZJCjCHeSjBvMbDy8C1mJ2FL5ytExyS97FAe6pQ6SD5Jt9SwHaLorA8i5Eojokfo1" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "そつう れきだい ほんやく わかす りくつ ばいか ろせん やちん そつう れきだい ほんやく わかめ", @@ -406,7 +356,6 @@ "xprv9s21ZrQH143K3ra1D6uGQyST9UqtUscH99GK8MBh5RrgPkrQo83QG4o6H2YktwSKvoZRVXDQZQrSyCDpHdA2j8i3PW5M9LkauaaTKwym1Wf" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "80808080808080808080808080808080", "そとづら あまど おおう あこがれる いくぶん けいけん あたえる いよく そとづら あまど おおう あかちゃん", @@ -414,7 +363,6 @@ "xprv9s21ZrQH143K2aDKfG8hpfvRXzANmyBQWoqoUXWaSwVZcKtnmX5xTVkkHAdD9yykuuBcagjCFK6iLcBdHHxXC1g3TT9xHSu4PW6SRf3KvVy" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "ffffffffffffffffffffffffffffffff", "われる われる われる われる われる われる われる われる われる われる われる ろんぶん", @@ -422,7 +370,6 @@ "xprv9s21ZrQH143K4WxYzpW3izjoq6e51NSZgN6AHxoKxZStsxBvtxuQDxPyvb8o4pSbxYPCyJGKewMxrHWvTBY6WEFX4svSzB2ezmatzzJW9wi" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "000000000000000000000000000000000000000000000000", "あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あらいぐま", @@ -430,7 +377,6 @@ "xprv9s21ZrQH143K2pqcK1QdBVm9r4gL4yQX6KFTqHWctvfZa9Wjhxow63ZGpSB27mVo1BBH4D1NoTo3gVAHAeqmhm5Z9SuC8xJmFYBFz978rza" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "そつう れきだい ほんやく わかす りくつ ばいか ろせん やちん そつう れきだい ほんやく わかす りくつ ばいか ろせん やちん そつう れいぎ", @@ -438,7 +384,6 @@ "xprv9s21ZrQH143K34NWKwHe5cBVDYuoKZ6iiqWczDMwGA9Ut57iCCTksDTnxE5AH3qHHvfcgwpRhyj4G7Y6FEewjVoQqq4gHN6CetyFdd3q4CR" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "808080808080808080808080808080808080808080808080", "そとづら あまど おおう あこがれる いくぶん けいけん あたえる いよく そとづら あまど おおう あこがれる いくぶん けいけん あたえる いよく そとづら いきなり", @@ -446,7 +391,6 @@ "xprv9s21ZrQH143K4RABcYmYKbZybgJrvpcnricsuNaZvsGVo7pupfELFY6TJw5G5XVswQodBzaRtfPkTi6aVCmC349A3yYzAZLfT7emP8m1RFX" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "ffffffffffffffffffffffffffffffffffffffffffffffff", "われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる りんご", @@ -454,7 +398,6 @@ "xprv9s21ZrQH143K2ThaKxBDxUByy4gNwULJyqKQzZXyF3aLyGdknnP18KvKVZwCvBJGXaAsKd7oh2ypLbjyDn4bDY1iiSPvNkKsVAGQGj7G3PZ" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "0000000000000000000000000000000000000000000000000000000000000000", "あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん いってい", @@ -462,7 +405,6 @@ "xprv9s21ZrQH143K3skSyXVw9CTTUHgKnsysvKiJw9MQjvTSY6ysTk4sFz58htMAcqHrjLdnUhqxRtmRy5AMJyWGeuQrDGSSfmcNh7cbfnrbDty" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "そつう れきだい ほんやく わかす りくつ ばいか ろせん やちん そつう れきだい ほんやく わかす りくつ ばいか ろせん やちん そつう れきだい ほんやく わかす りくつ ばいか ろせん まんきつ", @@ -470,7 +412,6 @@ "xprv9s21ZrQH143K2y9p1D6KuxqypMjbiBKkiALERahpxvb46x9giqkvmv5KxGvGJZG2mdcMunmHaazYyEqYmkx9SnfndimSmgJv5EL24X1DGqV" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "8080808080808080808080808080808080808080808080808080808080808080", "そとづら あまど おおう あこがれる いくぶん けいけん あたえる いよく そとづら あまど おおう あこがれる いくぶん けいけん あたえる いよく そとづら あまど おおう あこがれる いくぶん けいけん あたえる うめる", @@ -478,7 +419,6 @@ "xprv9s21ZrQH143K2TuQM4HcbBBtvC19SaDgqn6cL16KTaPEazB26iCDfxABvBi9driWcbnF4rcLVpkx5iGG7zH2QcN7qNxL4cpb7mQ2G3ByAv7" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる われる らいう", @@ -486,7 +426,6 @@ "xprv9s21ZrQH143K3XTGpC53cWswvhg6GVQ1dE1yty6F9VhBcE7rnXmStuKwtaZNXRxw5N7tsh1REyAxun1S5BCYvhD5pNwxWUMMZaHwjTmXFdb" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "9e885d952ad362caeb4efe34a8e91bd2", "ておくれ げざん しねま こりる きぼう しねん ななおし ほんやく きない けむり けまり てんない", @@ -494,7 +433,6 @@ "xprv9s21ZrQH143K3vCtmnxoeFhjA82w8w69tioZoJJEYJg31WxbYHU75Eis62bfBSwBGxdUABWu7fkgVuZtbbTXAVivZ3wFLhvmL7n7RjT4vxK" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "しはつ たいちょう ちめいど ひりつ ほくろ こやく こんかい いひん よろしい さくら がはく ふっかつ こまる つごう けぬき ふすま ちから さくし", @@ -502,7 +440,6 @@ "xprv9s21ZrQH143K2f7P6kwnAx1frPng3ZTvLf1Cfx2wgZeYNrCPMUhgB4ptXuAPnYXqpyiscrBpDeGNCFd99z7PUK4YNz7irZwhuMEWfQycWfq" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "しやくしょ くちこみ どんぶり けつじょ おとしもの くうぐん どんぶり たずさわる ひたむき みうち にほん うわさ しゃけん このよ じどう ほめる たいよう くふう そんちょう ろくが はんこ せあぶら くうぐん そっこう", @@ -510,7 +447,6 @@ "xprv9s21ZrQH143K4YnhYCnPAuXhbU4GK42ZbzHsQTxKtyzjag1NfBwSJ33Wx78KxNHUFxQpJe4o9T2FqUQkGSJd6XWofP6kB12L2MKMfmVWCBj" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "c0ba5a8e914111210f2bd131f3d5e08d", "はいち ふかい てんすう おさない いろえんぴつ だんち くださる せんちょう きさらぎ てきとう せもたれ うんどう", @@ -518,7 +454,6 @@ "xprv9s21ZrQH143K2La43r2Abw54k99RzwnRgZJjKY478LDMQNSvEJRJPzAhuTFwEPPX35cpzcFx5GHQGbfBPeTzPepCd4W5UowPsf2CSSA4FP8" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "すいえい ほとんど せんやく ほしい ふうふ ひんそう ざんしょ がちょう なにわ ひはん ひつじゅひん られつ はんぼうき ちそう ほいく めだつ きさま えがお", @@ -526,7 +461,6 @@ "xprv9s21ZrQH143K498Tnb5u3nVrEBmG1u5TkFum8Tk9pCwAYS6YWVxZfx6FmeRg5YRHYLmevKzDDaoEkpYzynL8JTgNV1Zp5neZuftjiF7Qx49" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "てそう こつこつ えんちょう じてん おおや ぴっちり だんねつ ほそく たなばた くらべる ひまん ていき あんい ひんしゅ ちきん ざいげん くたびれる そなえる しんか にいがた せきむ けしょう しあさって せたい", @@ -534,7 +468,6 @@ "xprv9s21ZrQH143K3KdFXimeiJhEZUzbJ5RcNRNeLCGfou6euXPyAhZEhVUR6fZVJMZLZ48rSRR5PXeR7sNErhLsijFwyZzoVVv6XAVirPS31JT" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "23db8160a31d3e0dca3688ed941adbf3", "おたく ほうりつ さいかい げねつ ふせい いいだす かいてん ひんしゅ もえる てのひら ねいき むいか", @@ -542,7 +475,6 @@ "xprv9s21ZrQH143K2Tt6fLeQqfdijrkhfC18pv4WoQzAVJsBrd6NMnGa3gf4NJQ68eaXQ587JCKjuDphWDHDy8wSXJAvPJhDTdcACC6P6xtbGk4" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "そむく のぞく かいふく ろてん げきやく ろくが ともだち ふじみ やおや まかせる すらすら こぼれる いぜん へんたい きさま へきが なたでここ あさひ", @@ -550,7 +482,6 @@ "xprv9s21ZrQH143K3ywuZfoA2aYWQ1qBn9N2qWMarjNCK521GchGYhNSwsuCoZM5HJKoV6Md6V96K8PYPvSGnfqVGBwdZ2z6YjXAGi7EP4fMxjo" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "あんぜん すうじつ たいふう こんぽん そこそこ こたつ しんせいじ あんこ うしなう しまる じどう そうり てはい ていし おめでとう たんまつ せんげん たおる ぬめり このまま ひいき あまい のらねこ にんそう", @@ -558,7 +489,6 @@ "xprv9s21ZrQH143K3SqP2ve8jwCW5n5AjuWZK7CWUaZQzpsG7j5X9Ub98zhiPd4QDede31kcGZpgDuFW7JKNwK36fQZSbrQwX29QigkJYKeJAG8" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "f30f8c1da665478f49b001d94c5fc452", "ようきゅう そあく いきおい こうつう こもじ はんだん おんしゃ あいさつ へいたく しすう ゆうびんきょく てんぷら", @@ -566,7 +496,6 @@ "xprv9s21ZrQH143K2dSfmQNt3vAGMsz1VM5hbqM5sMt7Fe6tcoXaR1fsqi9RUZzMxibBSvwixVFNzpVEZqimWetonunX1CYfEsHXBJaWu3QvcCs" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "はえる せっさたくま そんみん たいよう へこむ になう にっさん よゆう きあつ だんぼう くねくね けらい そんけい えほうまき しゃうん たいむ きあつ かぶか", @@ -574,7 +503,6 @@ "xprv9s21ZrQH143K36vzxMe8PzriUuZmof7WJFzZPTBXwg5TRporn4BqJmb1cfR6YMnSA3dic3zhgytnMR8VcDYZyUQjcUhUHFh4r69eJijPihq" ], [ - "mnemonic", "メートルガバヴァぱばぐゞちぢ十人十色", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "よゆう かんけい けぶかい へいこう おかず べんごし りえき じゆう はんい ともる かほご きぬごし つみき いきる はかる てふだ しほう ひろう とくてん ほったん こさめ ひつじゅひん せつぞく めんどう", @@ -584,7 +512,6 @@ ], "chinese_simplified": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 在", @@ -592,7 +519,6 @@ "xprv9s21ZrQH143K2LTAgxJMxVMKie6n9HQHMUohP6x2cx1TVBr6dxnL3mnSLRiXjiCM7g2ZF3BHzpdbFuhdeh7ZRrzv2EEjg5Tv7kgKZrqbVLc" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "枪 疫 霉 尝 俩 闹 饿 贤 枪 疫 霉 卿", @@ -600,7 +526,6 @@ "xprv9s21ZrQH143K2t2fMBqtVAVWU3JSpmEbbddwouLX8NoBbcTykD1Tm4s9api6K9zvoKSESUsA7aVxbZRunM5yrjZRNZnZckve98hxUorv2Uv" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "壤 对 据 人 三 谈 我 表 壤 对 据 不", @@ -608,7 +533,6 @@ "xprv9s21ZrQH143K2cgeQUKgCSmaRVXFjEGThqrnNFmH71qG8z3bWqYcbX9zakkRxmDp583tqf3cQzmxtn4C2XqinMNb2HkhXBDYhekCB8AwZWV" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 逻", @@ -616,7 +540,6 @@ "xprv9s21ZrQH143K3Zkkh1w8EbXYQWAS5ekbitA2WVrswJY9uEJzig2BtairT72n98ySwQUAhYBsLW9EBjJ1XUinrSb69Ty4mttMLnaUooJwsJ3" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 动", @@ -624,7 +547,6 @@ "xprv9s21ZrQH143K36LufUjTLqXnTiY6ach28pUYMkJ63swx4FhjPkzqD9YRqDZ452whYcNzKpPC8yfBm1eomL2z3VLC4zcwU71oKvMQ5NnD4h1" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "枪 疫 霉 尝 俩 闹 饿 贤 枪 疫 霉 尝 俩 闹 饿 贤 枪 殿", @@ -632,7 +554,6 @@ "xprv9s21ZrQH143K47jLpKzSgdpMLSKP2ZMLXHHUqYYGKbXNE4k3TA2czvJCx5JAJFNkWKZf2B1AbYoUBpc96YoiwM7yfxyr8gvfNNgL7sFNum6" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "壤 对 据 人 三 谈 我 表 壤 对 据 人 三 谈 我 表 壤 民", @@ -640,7 +561,6 @@ "xprv9s21ZrQH143K4RfeWihCeh1FJL9SobvinRW4z76RL2X1TB6xreXgaMvJGggUgagkaNr7zX47YHEDYdzJmig8SG3Scuet8smspn7HicCtwHa" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 裕", @@ -648,7 +568,6 @@ "xprv9s21ZrQH143K2YiskWzQq8kpFFCoFKKU4L8D6Y593dS2sExuVQ4GjnS57RhibwTWjnD7NTCE7ye4cQbCK6Bw674SHb3xWaQYH3NBLFCGYJb" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 性", @@ -656,7 +575,6 @@ "xprv9s21ZrQH143K25ttGBGbx6h9VBpa9ELbpw35XQqDR8deXRyVP2AbtgJ79Nq2cW8KaDizbwuoHUYR1o4tLPhYvSCTNMft4ZEfiDztmjXKPCj" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "枪 疫 霉 尝 俩 闹 饿 贤 枪 疫 霉 尝 俩 闹 饿 贤 枪 疫 霉 尝 俩 闹 饿 搭", @@ -664,7 +582,6 @@ "xprv9s21ZrQH143K4VNNDqCgnETDkPiihzHpxC9wGE6TBGXaeEd9VkQRHQPotwheeaNFGHGKaPWv5zTqfknzgdWiKFC6DqaqBFKjNSmxas968Vz" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "壤 对 据 人 三 谈 我 表 壤 对 据 人 三 谈 我 表 壤 对 据 人 三 谈 我 五", @@ -672,7 +589,6 @@ "xprv9s21ZrQH143K3bUoGmLq8aXRKzvUhseqrXw1t7XYCirduP5XLJtVxCos3rYLDvW8V7pK3voZ4EWSdeXiKdbWNjxmiPRDfet23Av9VRaR3ej" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 佳", @@ -680,7 +596,6 @@ "xprv9s21ZrQH143K2ghKxX47TRr4GnQh3diJFN5rJfybjxuwr3xP6pafXrBhwXJsw4HwoiPZ1f6fFPR964eoXybV2su498Ant3kYuYKE3CszLsU" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "蒙 台 脱 纪 构 硫 浆 霉 感 仅 鱼 汤", @@ -688,7 +603,6 @@ "xprv9s21ZrQH143K44Xrktko35a7gPGVo91Va79LNer1MzVokcrYKFP6GMLAcuJP3fBSdbRuG2DauFC48H6LmyZLfkUyjpm1R2AxYVbnT2P5tur" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "父 泥 炼 胁 鞋 控 载 政 惨 逐 整 碗 环 惯 案 棒 订 移", @@ -696,7 +610,6 @@ "xprv9s21ZrQH143K3JLu5XeRDQA5RwHh6gUXaQfRf7ihtVguJvd6EFoAzsoyotvNTDZfC6cciies7fhcqaMRTEsZUSbRYqBdaviWRHatRMoHX6s" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "宁 照 违 材 交 养 违 野 悉 偷 梅 设 贵 帝 鲜 仰 圈 首 荷 钩 隙 抓 养 熟", @@ -704,7 +617,6 @@ "xprv9s21ZrQH143K3dE2RQqFbapci6WBj47vZCkLVf4r14QsRZ6Ny2ck6s8tzZQzQaM55Tt4d2tRS9AuFrEJ4yBXsmP8yKeVGXT8E97iRVkDzCj" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "伐 旱 泡 口 线 揭 县 杨 断 芳 额 件", @@ -712,7 +624,6 @@ "xprv9s21ZrQH143K3A2p7cttKM5L39rutYgY4jqZ16z7hpAEdyiT8fr5eKdaHGLMM2ZmsUFNvGcSfyGMp1sz9nVyg3ZXop1hesUbgAvVBzx4rix" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "福 惜 怀 叔 筋 酵 货 科 牙 冒 辈 罩 悬 耕 浇 呵 连 级", @@ -720,7 +631,6 @@ "xprv9s21ZrQH143K4LdjFgCrosa76XBrNQ4imGB7XNc5MhfkASrmAHVNWYLNGY6kNj8foXBLS9aUD8RDubyj3NKWarmXxRQ28AeWVPbLD3a1FEq" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "仪 未 九 茶 队 梯 妇 孤 托 病 泉 贺 产 绘 吹 测 局 碳 征 墨 晶 帮 息 延", @@ -728,7 +638,6 @@ "xprv9s21ZrQH143K2tkCCjLXj2L9Ds9FttWwH6Eqt3uvihwUvpSpTm3RmRtSkapxASEUW5HXE6Qx2H1viBxXbLZVKxyfQ7fyFn6NcDspgJfdPaT" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "济 扶 块 言 穗 定 万 绘 姻 逃 颗 焰", @@ -736,7 +645,6 @@ "xprv9s21ZrQH143K2i53x2geCJi6A2QJpaHpxeGK8oeMxYs1tUrUwU3ddu9jHVucF3ePQ1koQ1TVFHnfP21ScWzp8xKnMinNUSW5itm7PicXWYW" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "虑 铺 目 祸 英 钩 尤 添 醇 嘛 触 独 起 赋 连 剪 邦 中", @@ -744,7 +652,6 @@ "xprv9s21ZrQH143K4V2oh58ZSb1CAbYkwB6ThJmTpRC51uKha9hy51R6RVzzbcEog3n6h4u7FtotS9arBvLofX7A3Apvcaedmeg1jkt7Vkt9TtA" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "而 怕 夏 客 盖 古 松 面 解 谓 鲜 唯 障 烯 共 吴 永 丁 赤 副 醒 分 猛 埔", @@ -752,7 +659,6 @@ "xprv9s21ZrQH143K4LSoFcKBWtmUHjzuH56srzrkpPfGx3i36UXpVUEtGvCuZ3egRTyDkaqRN5Ec1HXvXGSGTXLyAKzCRnTspi1D9NdmQmWqM5x" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "昏 途 所 够 请 乃 风 一 雕 缺 垫 阀", @@ -760,7 +666,6 @@ "xprv9s21ZrQH143K31afj91bWiGw2aC2xHJwrWsMs9MuvEWZETkpWr15ZNF6LFjkHh53iD2bwJYEawvCCvDRaqDsr37fhapgGDkA7UATtwBsZu3" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "瓶 顾 床 圈 倡 励 炭 柄 且 招 价 紧 折 将 乎 硬 且 空", @@ -768,7 +673,6 @@ "xprv9s21ZrQH143K3ji6aQ9QQi4WkFhAqnrzRANJkYkRWkMqbr51mAV6JYUt85oR8Jt3D7DreQdsb9292ips6VKwpitAhLR7rfLdhYz7zgYei2F" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "柄 需 固 姆 色 斥 霍 握 宾 琴 况 团 抵 经 摸 郭 沙 鸣 拖 妙 阳 辈 掉 迁", @@ -778,7 +682,6 @@ ], "chinese_traditional": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 在", @@ -786,7 +689,6 @@ "xprv9s21ZrQH143K2LTAgxJMxVMKie6n9HQHMUohP6x2cx1TVBr6dxnL3mnSLRiXjiCM7g2ZF3BHzpdbFuhdeh7ZRrzv2EEjg5Tv7kgKZrqbVLc" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "槍 疫 黴 嘗 倆 鬧 餓 賢 槍 疫 黴 卿", @@ -794,7 +696,6 @@ "xprv9s21ZrQH143K2HYJ8dR81cQGust8Gm4MeyfC6off5BvCfffAxE33WhiYxB4aLV6meXP6QmoKZkLX8UJgrZPcA4A2EKU4iaPWenb6Wg9kxzd" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "壤 對 據 人 三 談 我 表 壤 對 據 不", @@ -802,7 +703,6 @@ "xprv9s21ZrQH143K4SV7MzxYhSQtxP5gWGCD75QiUsp7z1s7Kuc8b4V4F6wRqKvhdczy3qi2uNeN9Vw4PnKYJtoaFdHFX4qbxweuRDmQqgMjKRJ" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 邏", @@ -810,7 +710,6 @@ "xprv9s21ZrQH143K2BptXPaTm7CCWCs4v3tfG5jGAa9zLqSTKNL1ah8veMWc53hio5grKVriWhKjNKbCA2w6svkL4NC6pkiRwVkbwazVXtjdgEv" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 動", @@ -818,7 +717,6 @@ "xprv9s21ZrQH143K39TvGFp5nfiw3zXib4v4waTbxFYoDNoD4pp4DMBneg9MgSqfK4xL7hK1YjDEa5BWMXKVgTxMiNXNSdT3Wv59pD4PB3LDDKP" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "槍 疫 黴 嘗 倆 鬧 餓 賢 槍 疫 黴 嘗 倆 鬧 餓 賢 槍 殿", @@ -826,7 +724,6 @@ "xprv9s21ZrQH143K2wC9BUJ9F5CsmV7a6PJQkxc9TT8gUrkoTXurPztKKosq5REGzdEzEuKn221vm2A5KnjrDBC1KcLo4VeYGSkkwxXWYrqSrXW" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "壤 對 據 人 三 談 我 表 壤 對 據 人 三 談 我 表 壤 民", @@ -834,7 +731,6 @@ "xprv9s21ZrQH143K2MQFKxX1ReLYY2rNunsfLpU8F5WRVWeLfauPhD5huvXEzxoPvmLhD3QtSj1Z5jnM51q9NrRjYBaHG5XJzfVsjXWYQop9pXz" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 裕", @@ -842,7 +738,6 @@ "xprv9s21ZrQH143K2YiskWzQq8kpFFCoFKKU4L8D6Y593dS2sExuVQ4GjnS57RhibwTWjnD7NTCE7ye4cQbCK6Bw674SHb3xWaQYH3NBLFCGYJb" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 的 性", @@ -850,7 +745,6 @@ "xprv9s21ZrQH143K25ttGBGbx6h9VBpa9ELbpw35XQqDR8deXRyVP2AbtgJ79Nq2cW8KaDizbwuoHUYR1o4tLPhYvSCTNMft4ZEfiDztmjXKPCj" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "槍 疫 黴 嘗 倆 鬧 餓 賢 槍 疫 黴 嘗 倆 鬧 餓 賢 槍 疫 黴 嘗 倆 鬧 餓 搭", @@ -858,7 +752,6 @@ "xprv9s21ZrQH143K4TP9sQD1LnxuSy6WUe1hF7JMPo4qN6TMX5udfEcJh9x4PqbetYoC9c1hpx7RxP6VcgzdPxPCJ91De4R1TgGNVC9AFhxMwkX" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "壤 對 據 人 三 談 我 表 壤 對 據 人 三 談 我 表 壤 對 據 人 三 談 我 五", @@ -866,7 +759,6 @@ "xprv9s21ZrQH143K4bYXrWpQYgiSHDM1iVkNVnyqbpjyZksLS2fmxKCbwQjz3sBFTD1aFY4xWrYdHTyeFYjnYWfKGLc5WCkpokdAZyP9XEGJCsa" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 歇 佳", @@ -874,7 +766,6 @@ "xprv9s21ZrQH143K2ghKxX47TRr4GnQh3diJFN5rJfybjxuwr3xP6pafXrBhwXJsw4HwoiPZ1f6fFPR964eoXybV2su498Ant3kYuYKE3CszLsU" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "蒙 台 脫 紀 構 硫 漿 黴 感 僅 魚 湯", @@ -882,7 +773,6 @@ "xprv9s21ZrQH143K3FtWQPZHP7Gpf5qgbvXqPNo5iCSfkGhWnATeqM5FuQ3YTx4sSciJx1MjVnbM3XQ16N83x5gNwcsVG7PTf1cRDhvyGZ45EY5" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "父 泥 煉 脅 鞋 控 載 政 慘 逐 整 碗 環 慣 案 棒 訂 移", @@ -890,7 +780,6 @@ "xprv9s21ZrQH143K4YANCnajhJxfsFsDEZGitTmP934osTHvUmTEtfSaYk8rmvj914uGUYaJH5ALjDgVyNYW5gRGPdQBFaqoSbGkHXhfdVkNVY2" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "寧 照 違 材 交 養 違 野 悉 偷 梅 設 貴 帝 鮮 仰 圈 首 荷 鉤 隙 抓 養 熟", @@ -898,7 +787,6 @@ "xprv9s21ZrQH143K3aULbWnFhpGS2h19R5JdizbLLLQTDsGmKP5A1sqQop1Ff8Q7NEetRHRNFR8AAsPm1kr5hGU5VLYKURZeiVe9k5hqVmhZ5zF" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "伐 旱 泡 口 線 揭 縣 楊 斷 芳 額 件", @@ -906,7 +794,6 @@ "xprv9s21ZrQH143K2sMUzpWRrPMF1Xx29Yos3Kah6H4E9YaJqDm2yEMXypoKdX1ugkn1Vx3k9Pr2LsKNQnHqoDFP5Jepm2PCkUS1GrQZps1wxkD" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "福 惜 懷 叔 筋 酵 貨 科 牙 冒 輩 罩 懸 耕 澆 呵 連 級", @@ -914,7 +801,6 @@ "xprv9s21ZrQH143K4bLxh3ir6ziqU7t6URBK7uA8Md4tzAd3TAuBNyZREqEoZBevwu8Uw6tfMujFRWrZvCy47nbnKgDhsFaC2hvFJwRdkhnoM1v" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "儀 未 九 茶 隊 梯 婦 孤 托 病 泉 賀 產 繪 吹 測 局 碳 徵 墨 晶 幫 息 延", @@ -922,7 +808,6 @@ "xprv9s21ZrQH143K2LB4bPuHTErkGLt8DV5BbRsS82ySFPdQr57fzBY5D7VadhJHruxFzVcYdEbDqK8QWPSqj6LCiyQgFFurfnWWm1v6N2nGovN" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "濟 扶 塊 言 穗 定 萬 繪 姻 逃 顆 焰", @@ -930,7 +815,6 @@ "xprv9s21ZrQH143K3Kcz7sz3UyDYJhSjUYujBdxFwDHCbqmKWqN3hSf1pjnqoxuAKsQXbnvrxzRBLqPN9BKxHUiYgn1DjhwaStTfZQTCsaTEWxZ" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "慮 鋪 目 禍 英 鉤 尤 添 醇 嘛 觸 獨 起 賦 連 剪 邦 中", @@ -938,7 +822,6 @@ "xprv9s21ZrQH143K2Gmewuzc56mbdKTqPezqWqk7ih9AdnLc9A2865TYtywU9sZ547mKYFKnbVatAuUUGtqgAz1ENkv9FU85jARHkCmtAGLmExn" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "而 怕 夏 客 蓋 古 松 面 解 謂 鮮 唯 障 烯 共 吳 永 丁 赤 副 醒 分 猛 埔", @@ -946,7 +829,6 @@ "xprv9s21ZrQH143K41g7SsRpGA4g25xDiqjkhq8DNbJD7jgSksvt9kakaTzukN4SfVrUM2A9yGVPggP9eFAmuriRSpPLahm4ngaxvNHyQp82cee" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "昏 途 所 夠 請 乃 風 一 雕 缺 墊 閥", @@ -954,7 +836,6 @@ "xprv9s21ZrQH143K3JPEGRnwbdy5xdTvVdXEDGJX8gc385oC3H4veWiCVDrdeeFPWrU7Pz3PNMHcZrbutLY1UGs5dE83U925xKXLUrXXpz2ihKw" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "瓶 顧 床 圈 倡 勵 炭 柄 且 招 價 緊 折 將 乎 硬 且 空", @@ -962,7 +843,6 @@ "xprv9s21ZrQH143K2hh1em7CqtG7uL1bTNG5hfP35X6Y8uwnTDiS9Cm87WNcZvmFHLf3JwoP2W82VzaRejpqr7oPnFLguhVSr5pWnG9YSV4SdeH" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "柄 需 固 姆 色 斥 霍 握 賓 琴 況 團 抵 經 摸 郭 沙 鳴 拖 妙 陽 輩 掉 遷", @@ -972,7 +852,6 @@ ], "french": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abeille", @@ -980,7 +859,6 @@ "xprv9s21ZrQH143K3UKG1D5WeMUjcp9ZYJsVpdeNajJFQcUL5H1hC7t3FhGfzm67XhDLsRUsZ1dAYy48npMysRu1zefMMJodBL3ba2xELTFuZ93" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "implorer visage sonnette voyage véloce pourpre volaille tribunal implorer visage sonnette voyelle", @@ -988,7 +866,6 @@ "xprv9s21ZrQH143K3MCzhsD85FFZ2d8vDN2QdRTN63gbU3qHjZxn7utU1kwYGR5bxQkssS1Tji4Tuw8vpTzDWogXxhbWYDKuZveeRBe5wiNsuFJ" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "indexer acompte bolide abrasif agréable dédale abusif appuyer indexer acompte bolide abolir", @@ -996,7 +873,6 @@ "xprv9s21ZrQH143K36u4b8J8pxUwCCnciUPZF3JjZsq5mPCDEpNWA1j4DnYDJ53NV7b6cmNTM6Je6DG11hJw8Fq1HXKEasrpxDC8WqaEsD5BPGq" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie voter", @@ -1004,7 +880,6 @@ "xprv9s21ZrQH143K2AsqW9AAdu5C4zUaV45MgyzBQAYbEKtKusR83UzLwCZdqDwqJ59ebNryoNuVA5pEiY1eBYqr64UGkwZGezwaceCqxPWia7M" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser adéquat", @@ -1012,7 +887,6 @@ "xprv9s21ZrQH143K2sMmjSZc92pTfN7nRPwzBhSMtVg5oPBTxYN9RXq6eH26k1vGbrYQjeXwJnPpRtv2DbfNJwMmCfwWiCEFLTS54FJb81bjNXU" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "implorer visage sonnette voyage véloce pourpre volaille tribunal implorer visage sonnette voyage véloce pourpre volaille tribunal implorer vinaigre", @@ -1020,7 +894,6 @@ "xprv9s21ZrQH143K2Lq1fbvL5nedyALbSBmmm4EbcVduaPFArtunM6azzNy96pcKbLvVBQcFFDa3Agp54eMhCBH5Ehtbxitv525n2SrhYvALPiD" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "indexer acompte bolide abrasif agréable dédale abusif appuyer indexer acompte bolide abrasif agréable dédale abusif appuyer indexer agencer", @@ -1028,7 +901,6 @@ "xprv9s21ZrQH143K3m5hJrQxzUdU4bDDvLSisrf1Cv5HQNCEzbUokwaVa8X1huTY2JaTPJug14EbopY3gtdfWjmVoo4CHLzuwjf5Jhdjgaqsh9n" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie viande", @@ -1036,7 +908,6 @@ "xprv9s21ZrQH143K2woSZYBmSoRYygWNGUUrkLiy2i4FmReSqyc568kb1siagkBpHFj6MzLbfuh8TaWKDckfnfphrYyKTAG2rk5y4sGv4fjn5gD" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser abaisser anaphore", @@ -1044,7 +915,6 @@ "xprv9s21ZrQH143K2XfGQvurezTsoGJ28nd3588gkEPhsry6w61P3gEWnQh4gsfhpyDbA6cWXedVgueyymyCKAhxj1H1Myb3SLucYeBYWebNEP1" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "implorer visage sonnette voyage véloce pourpre volaille tribunal implorer visage sonnette voyage véloce pourpre volaille tribunal implorer visage sonnette voyage véloce pourpre volaille studieux", @@ -1052,7 +922,6 @@ "xprv9s21ZrQH143K43qySSryByKtU1Df5foSz6kDEHUsR524HZJzxnKrrU3wTdeSvHVvpitC8nAb2kdeVWGREu22KaiaMF3YjEZQdb7htpY6CXP" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "indexer acompte bolide abrasif agréable dédale abusif appuyer indexer acompte bolide abrasif agréable dédale abusif appuyer indexer acompte bolide abrasif agréable dédale abusif axiome", @@ -1060,7 +929,6 @@ "xprv9s21ZrQH143K31JiBbFJEViuVwAuWSD5X8PKzS4d2PoSCxHpBXpicCEMKndL8TURUZ2zeoA4vDGkECeJS9wMhrRcmW6ATmPmmwC3ziuBRdP" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie zoologie valable", @@ -1068,7 +936,6 @@ "xprv9s21ZrQH143K2umcmDhRrUZ8wsZ7ACj6rvFCEuDK1coHWpo1RwYPvy3dpWmvPjstSMm9fm3igm9gjsAesjqAU6Tnejizy919FSmyofhRTyS" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "monument dépenser féroce entasser comédie ferveur optique sonnette codifier discuter dioxyde nerveux", @@ -1076,7 +943,6 @@ "xprv9s21ZrQH143K4RswQfcyMEjx6Kc5tEBR43MNp7XJH5mWushqBryZTc97VNPNVfRop62sGwu7Tg3vsd559P1G8h6M2N9j1Zj1vVn1919uvmb" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "fiasco ivoire mardi révulsif signal enlever envahir anormal vaisseau essayer céleste sagesse engager mener différer ruisseau lutter esprit", @@ -1084,7 +950,6 @@ "xprv9s21ZrQH143K3eSdUPkhpFZamFuu35iaZqRwFWijYkE54fvUKoSNBHkXetNx56yvcJSFoeHT9y4AFuWTcFFzezPuk6D6LqnNscjFnvdGYDt" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "flatteur cultiver oisillon destrier brusque crainte oisillon labourer remède substrat parfumer banquier flèche enclave fémur sombre jongler damier insigne voguer rasage gomme crainte incendie", @@ -1092,7 +957,6 @@ "xprv9s21ZrQH143K3YEnEhMfv1Mwoc91DekvEqXxL85fFtRKtfFk3Jsqu72bUd35jHsTA7aBShvTmhhBrHhqGZ1uVg7RTwzTpnarDUoGU8ZXQ9D" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "prélude routine négation brasier arlequin logique cuivre hiberner cirque moqueur halte barque", @@ -1100,7 +964,6 @@ "xprv9s21ZrQH143K4U7WubDzyDun3RrpuVsFECM9u9tNxjhJhZFCJL5DJvGhKkUAbmmhqpwUV7UvgPPG2QFoDq7jYY6Neb6MnQmQYTo3RF57ZXS" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "froid soluble horde sinistre rouge rocheux exiler causer orbite résineux renfort vaste récolter maison serrure tonique cirer bélier", @@ -1108,7 +971,6 @@ "xprv9s21ZrQH143K2wjyyXXC3Cra6k8WJ3CPEWc1EgwEyUNjLAxGVoegrni9eMik71k4L6wWxLtqcwgD9TzKLLiaSddwLFp4F6hJ4LuDBWqVJcq" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "mouche embryon bison femme bondir renvoi louer social largeur déborder rétablir miracle adresse rivière machine époque culminer indice frégate ouvrage gourmand déposer exulter grappin", @@ -1116,7 +978,6 @@ "xprv9s21ZrQH143K3BFxuNuyFSUgQQ3f4tv6HLktHoVxvMfBKVBow3i9GqeTF9oBbG87rZBX79QTCQqgPbn3ywWc8G4ZiUdhdY3xDAciXLtE9aJ" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "brochure sextuple épisode digérer ruser affecter cantine rivière torse muscle permuter talisman", @@ -1124,7 +985,6 @@ "xprv9s21ZrQH143K2CpRxCahnStujg79zUscDimXKHemoY4A1Kep85cPai2e8wJ4Y5R4uhrG76merXXjSuukqjVrzJMBPsGC8apQqHymDsBPf9e" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "informer poivre capable volcan dénicher voguer offenser ruiner tragique sortir glace enduire allouer serein cirer semaine opportun abriter", @@ -1132,7 +992,6 @@ "xprv9s21ZrQH143K3N7dvQS9PoT9BemrTHWfp4qzUPT7hbGdZ5uMn6RgMwKerbmrrAqjrMGUskpGJaaorTXnbgtidgEbboJVjH18qDMkLFPf36V" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "adverbe fuite jaune épaule imbiber éluder frémir adulte attentif filou fémur idylle muséum mobile bureau loyal hélium jugement péplum encadrer rédiger acier posséder pavillon", @@ -1140,7 +999,6 @@ "xprv9s21ZrQH143K2ZnKtKjoyhEcsuEzLEzq5oC8sGegz59C3vf4T8VjvRN2UQQsHw2ndFj1UMNo1uuVtxKzjmNLvVAd2SURTgkVXKykFc1S8jG" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "ultrason hublot agacer éclore englober ravin caféine abandon séduire farfelu tropical nettoyer", @@ -1148,7 +1006,6 @@ "xprv9s21ZrQH143K4NWbtgfxvJK1Us782vFXDdb2bTK839KWEUZFnQTXXt85hAHXML9xkKyuiaiKgD1n6ytUZdgT8hirdn4SQ4DR4T4MPiNQz3K" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "prétexte grogner instinct jongler sembler paresse papier vaillant chenille louve cynique dissiper inoculer besogne flairer jeunesse chenille cellule", @@ -1156,7 +1013,6 @@ "xprv9s21ZrQH143K4G36f6wnN8JWRYHdbvANd8fF6c1pjb6T11LKxw3Xch5iacc9vyGQDcf51GrF7kknKumq5csscAByQiC1gaY7vFygMghGtJ4" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "vaillant chance dimanche sécable bonus séparer vecteur forcer raideur officier censurer cohésion meuble agiter prison mutation filière rincer novice solitude élargir renfort gronder tornade", @@ -1166,7 +1022,6 @@ ], "spanish": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco abierto", @@ -1174,7 +1029,6 @@ "xprv9s21ZrQH143K49iYfUTNyLe6mVRHvYSg58nfiLkcSREsu5QefrsvQ9KWsMtX7SXsXwvs6J1esWdna2weySpUFZNN6qiXuHcobEMWGLfyaHG" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "ligero vista talar yogur venta queso yacer trozo ligero vista talar zafiro", @@ -1182,7 +1036,6 @@ "xprv9s21ZrQH143K27g7EMkgY2F1fuyqSEKq6n1iJCHuiUX5F3oGESmJSS6DcKW5JZ6qWWJ7x8wS1FCrd1NhRS4xCWDn9Bb1HzBuNpitD7FeYGv" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "lino admitir bolero abrir álbum dejar acelga aprender lino admitir bolero abogado", @@ -1190,7 +1043,6 @@ "xprv9s21ZrQH143K2dG5ptughpsWSbdXdRVg6ZZtF8RehVMaDNM2TJ6NZAtorTDm2EVpt5nwpsgtjgYW3GD6oP8Nk3ZhibRQFRJ4f5JoDrunY1m" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo yodo", @@ -1198,7 +1050,6 @@ "xprv9s21ZrQH143K4TU3oETVCyPLTqmC8C7zqqSR7L8JpMiR68YNhyvfEmXpRh6pP8gPghpFbvNSQCQppPDf55iNnZhT9iza6HRpTvKeLSDNFCg" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco afición", @@ -1206,7 +1057,6 @@ "xprv9s21ZrQH143K3AjqVTqs8gbpkEoSkCVEM6dAGvRm2TJgxTLih4TuPPSp6gheAkXpPRhG63Fb9Cr5MEto2j6hGJ4ZVPa3C1GHXUyPPwMRXCV" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "ligero vista talar yogur venta queso yacer trozo ligero vista talar yogur venta queso yacer trozo ligero violín", @@ -1214,7 +1064,6 @@ "xprv9s21ZrQH143K4PEMCi1dMq3ZwveC5um6cXR3tp4Z6LUGLhz4pmkaDU44UoSTiMQHv5icYPjH5EooZNorbDB7fLMDa531HHrKKnEEqCT5Tfs" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "lino admitir bolero abrir álbum dejar acelga aprender lino admitir bolero abrir álbum dejar acelga aprender lino alacrán", @@ -1222,7 +1071,6 @@ "xprv9s21ZrQH143K2UeG5FGYFmkW7oTy35ZFgQ7qdR5tzBdKxGLCEfVJPPA98e2wUpfD3Eg6GS4833dFVVKafB3RNGMSZtxoWc56Yxo7PaBgYds" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo viejo", @@ -1230,7 +1078,6 @@ "xprv9s21ZrQH143K3zwjASrAazc9EGeoVcQXA3unTmgxG9ZS7nc75inZw19oktj1y3n2Y7yetBatSN3v2UpS9ms3PvmrgQEMC4jox4ZV1ZrW6Qz" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ábaco ancla", @@ -1238,7 +1085,6 @@ "xprv9s21ZrQH143K2J842VWEPWH3ssnSvZYhRCzPoEcifAN4UgETeYkTdvnMUgnuftLyeGttvdvec8F1YJCmQz5mS956jsb2m8yDXZtnxRgiYgX" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "ligero vista talar yogur venta queso yacer trozo ligero vista talar yogur venta queso yacer trozo ligero vista talar yogur venta queso yacer teatro", @@ -1246,7 +1092,6 @@ "xprv9s21ZrQH143K2WBRPum95TFxfz8niK5sbiDpQjyr915SjEJc99BrYoRhPuYvfzFhPwqUNAFtEdw4khqQMK4ge8EnTZZASbv7oy8t6SMzVSM" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "lino admitir bolero abrir álbum dejar acelga aprender lino admitir bolero abrir álbum dejar acelga aprender lino admitir bolero abrir álbum dejar acelga aumento", @@ -1254,7 +1099,6 @@ "xprv9s21ZrQH143K3SQcqhHXxwZ793d4RXPpUQJQm8Bpf799AZPzicBxB87hu4Sm2DvWBqFvmxEjN3bY6EVzUxhJbHKdtV2k6u4c3ZNRFGhZDma" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo zurdo varón", @@ -1262,7 +1106,6 @@ "xprv9s21ZrQH143K4TyBobPSoDLEze5gKjiTZXzaJaND1QHqmrnx6kULMJhGvQkraSHgUsjmisepryPQqTfWyM3ETLjusTsW35KumQ3w3RyusSM" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "obra diadema gorila farmacia colgar gorra pausa talar cocina duda dragón optar", @@ -1270,7 +1113,6 @@ "xprv9s21ZrQH143K3pxsjjkbjzEu1f9qaeGb9wTLZ39rUF4CoP125zApXELXDspSNV1Cn8vjvXKNQymm8iwSRpJr9AZyKvHTVVbg1Tq6kY48iTV" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "gráfico madera muro rutina suelo falso favor añadir variar firma casco semana fácil neón don sección morder fingir", @@ -1278,7 +1120,6 @@ "xprv9s21ZrQH143K3JpnkDoEPYdCo6QEBW4eUfKe1CCweKfHF5DkonVNPQRkDcYEva6pBBfGLeRt56UB6oSnhemWzbSBXCpdefk3hBDWqUAPb2E" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "guion culebra parcela diluir buitre crecer parcela marzo roce tejado picar azafrán guitarra exilio goloso tabla mando curar loco voto reparto insecto crecer lince", @@ -1286,7 +1127,6 @@ "xprv9s21ZrQH143K4XB8BVsQ9TsrC12DWTkizmcY3X6kVqycT1pAVLhx3EHfWow3H27QV4YH8kMLum7nzjSexrAxh8tKZzHRYPPexmAaaM1KEYQ" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "ración sapo opción brinco árbol mismo cueva lamer cigarro obrero júpiter azufre", @@ -1294,7 +1134,6 @@ "xprv9s21ZrQH143K3W9fk6GQj1oNT2gYszJhNBhZjPmkTsR2jmoE89oRHHknYt8WLWREtopcnPs1ZWoJjV3A5QxrW5crBA5s6bWgp2DCfLUDA5Y" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "honor tabique lata sultán sanidad salón gafas carga payaso rostro rojizo vena retrato móvil soplar trabajo cifra balde", @@ -1302,7 +1141,6 @@ "xprv9s21ZrQH143K2ouVUYDQXJpeurwoTTmfvUThuo1vRhuSXrVrKgsxAtaet1U9M5WZDpqaiLAPz17LLSuHmQG4eMMAy48Zt4AMzUwgNnEXY1Q" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "océano eterno bestia golfo bomba ron moda sur médula danza rueda núcleo agrio salmón morir ficha cuidar linterna higiene pensar iris diario ganso jamón", @@ -1310,7 +1148,6 @@ "xprv9s21ZrQH143K3rpBRE8Wy6o6fZ6P6SX9ZrPCATgfgMHBHK4y9vbkj3VW19wRGR6tAeT7td2iB5bvwRXqXZ2FkBCmeCsJD4Uxf363BEuBwtx" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "bucle sótano fibra donar seco aire campo salmón trato odio poco tierra", @@ -1318,7 +1155,6 @@ "xprv9s21ZrQH143K31JznDuVnKRYfF538PE1GSe5W75rLGwpSuDFWaQrW48bSuzvkD7cPWqLHcjxi1AjQYFjzCEVkwpU8sq4XScgZigY4TQrSEk" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "llaga pudor candil yate detalle voto papá saxofón tribu talla infiel exponer altivo sonoro cifra solapa pata abuso", @@ -1326,7 +1162,6 @@ "xprv9s21ZrQH143K3CSbDbXN4ckMcyDHyLwkrQqvXL4xBRATernArEtGvZG8eFhxLbbRBZqaBnRc3ZyrN349dRxUeAozveLohZ5AWRKsDuk6XT1" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "águila hoyo maldad fértil libertad estilo historia agudo asilo grosor goloso leopardo odisea nueve butaca molde lacio mañana plomo exento rey adicto puño piña", @@ -1334,7 +1169,6 @@ "xprv9s21ZrQH143K381uk3B2rYMvPGDjn8oqzxK2tGqoNmB9eN2puxmZtB3BximsnfUd6u3eKP58aVTrUmKW4xA4ckETJwd6YPVa7G8nLkdBknC" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "urbe lección ajuste enero faena reptil caimán abdomen sobre genio túnel óptica", @@ -1342,7 +1176,6 @@ "xprv9s21ZrQH143K3sNRU3fx6SQaMRXAAJPHtmBFpXF5MhZ6AEURc2zE2gmVexqAA6EFyTBUBfxv982cwPLR2fM81SivaJXcN2FdbmgzrFbEdqs" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "rama jeringa logro mando soldado pezuña pésimo vampiro cerrar mojar cupón dueño llover barro guerra mambo cerrar casero", @@ -1350,7 +1183,6 @@ "xprv9s21ZrQH143K2VwsYAPzaKfUBfB8WtQXQux4e5R2cnLhipQ7zQfwWqg2Hozhrh44r1ZtMDzxVDA2PyUqEBtu9o2BidJjQ2psh8QspU8siVK" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "vampiro célula dos simio bono sondeo vencer haz remar papel castor codo nivel alarma rapaz ofensa gripe sagaz otro tabaco esfuerzo rojizo jinete traje", @@ -1360,7 +1192,6 @@ ], "italian": [ [ - "mnemonic", "TREZOR", "00000000000000000000000000000000", "abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abete", @@ -1368,7 +1199,6 @@ "xprv9s21ZrQH143K3ZxfinfrsmnuKNwdvRtypJ1TEs8JuE6MEmAMDwsSZApCyBFopme4iR7RnRt9XKFprfLKs9vooFuFK6h2a2hzHuXTmE9md1a" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "mimosa vita sussurro zinco vero saltare zattera ulisse mimosa vita sussurro zircone", @@ -1376,7 +1206,6 @@ "xprv9s21ZrQH143K3yxi91AAWZvT8797G7kL34h3453QNFSiQybwss1gmx2zYCmbg4tiZdYSEsd7arPWYd5MQh28VBvcEqvXSBRu1zYajyJnzFD" ], [ - "mnemonic", "TREZOR", "80808080808080808080808080808080", "misurare afoso bravura accadere alogeno dottore acrilico arazzo misurare afoso bravura abisso", @@ -1384,7 +1213,6 @@ "xprv9s21ZrQH143K4Hh5BqryXtMu7QLbJC7yDh9kscJ4h3PuxA382w6YyjMMkiFVyfmdYFwfP8sVWR1eLygHmczccbzH7pTGXbeqAy54fNVA13M" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffff", "zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zerbino", @@ -1392,7 +1220,6 @@ "xprv9s21ZrQH143K2hiPzq8SzzER9TQDFYpnYbfg1hE8wUYwcb7JNRyM4aDB14WfoUghRrBKFGffUx5YsTZvPbdCbuVMJG7egUZVsRTJCviSror" ], [ - "mnemonic", "TREZOR", "000000000000000000000000000000000000000000000000", "abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco agitare", @@ -1400,7 +1227,6 @@ "xprv9s21ZrQH143K48ZSAvHY5BjAyPXxL3pREwQPZ9DxPagzRuK8f5TcKnDr3z2MSjB58uC871CjjjsNTaUa9BxEzEwraQutT42co4mfFGusE2B" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "mimosa vita sussurro zinco vero saltare zattera ulisse mimosa vita sussurro zinco vero saltare zattera ulisse mimosa virulento", @@ -1408,7 +1234,6 @@ "xprv9s21ZrQH143K2wPR9TuAQcWLNSM8X9oRjUCC3GN6aGevV1zfm8cwi2JtrzS21GzAaqd2MJDszoka7xiduQrDc666Wk27qYhUTagEfr4E218" ], [ - "mnemonic", "TREZOR", "808080808080808080808080808080808080808080808080", "misurare afoso bravura accadere alogeno dottore acrilico arazzo misurare afoso bravura accadere alogeno dottore acrilico arazzo misurare allievo", @@ -1416,7 +1241,6 @@ "xprv9s21ZrQH143K2EQGrM2arQhKSEhd4DwraP86UrUKsVcLvM2NujY9rPJK78rGUCD4Z3AG8tz8brxcSaDQYDw18jZz8FuT1H6ZdwFyUQVERus" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffff", "zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa vile", @@ -1424,7 +1248,6 @@ "xprv9s21ZrQH143K39Y9dY1q4sf3Bv7dkFfDasdSbWUKNx7GCsMp1JTo8KFDRq5TNkGr1wQYm3QZaALpFhcHWhPV67oVZQFMRFu51yVxeL9KDMF" ], [ - "mnemonic", "TREZOR", "0000000000000000000000000000000000000000000000000000000000000000", "abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco abaco angelo", @@ -1432,7 +1255,6 @@ "xprv9s21ZrQH143K2b5TRb8ReAEzasjVej3ttSzyy5YRu91SdQKP4XUZtgeUipuJx6YoArxkiRSBU5eP2wu6dmgLhgBQJ8Bx5UXmwFudc423DdN" ], [ - "mnemonic", "TREZOR", "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f", "mimosa vita sussurro zinco vero saltare zattera ulisse mimosa vita sussurro zinco vero saltare zattera ulisse mimosa vita sussurro zinco vero saltare zattera tarpare", @@ -1440,7 +1262,6 @@ "xprv9s21ZrQH143K2dys2Z5k2tZoxJuBENLaf3cTEpb7JUeXDp9i63vbPMqVNqHqx5bGJ5tdNug3JFWJCC4amzYLoFRi3YS55MiHnnUN6w1V57h" ], [ - "mnemonic", "TREZOR", "8080808080808080808080808080808080808080808080808080808080808080", "misurare afoso bravura accadere alogeno dottore acrilico arazzo misurare afoso bravura accadere alogeno dottore acrilico arazzo misurare afoso bravura accadere alogeno dottore acrilico baco", @@ -1448,7 +1269,6 @@ "xprv9s21ZrQH143K2mWU418GviWbPrYTveuukEHsYJRn8aUxV5PrE4XacaDX74amiRkH3m3Qmnz7YPRRXkF33z5472Trb39RksWRmcJitkT5uJx" ], [ - "mnemonic", "TREZOR", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa zuppa vedetta", @@ -1456,7 +1276,6 @@ "xprv9s21ZrQH143K2VqjZNjnyCMUrTw6XhLt2BsaPVpHD8MKpKq5mq9S5SLyMSv58y7nCofNGZSgQQpky6aujCURjVuAM9jCcN6xjzbeRQYYACi" ], [ - "mnemonic", "TREZOR", "9e885d952ad362caeb4efe34a8e91bd2", "pesista educare imballo formica curvo imbevuto raddoppio sussurro croce eppure epilogo poligono", @@ -1464,7 +1283,6 @@ "xprv9s21ZrQH143K2bsiFmYu4jzf5fjcHrrEarDgY3NYhmUEU5bxz3eS3NwS924WYnioF6rf6Fij6XQdmCNjcCJwqdFJ1AKKLMxa4obLnbdFgA6" ], [ - "mnemonic", "TREZOR", "6610b25967cdcca9d59875f5cb50b0ea75433311869e930b", "immolato mummia oviparo sigla stirpe fonetico fosso appetito vasca galoppo cigno solubile foderato pargolo enduro sociale ormeggio galateo", @@ -1472,7 +1290,6 @@ "xprv9s21ZrQH143K4RNJpMYxxAuHtA77jzNEAjh3MznXe6FejAGGUPHTDUFL3z6LB1FioxHnMirHNcHyV4QVsXs8rZACW8YSJcNo3Wqjg7dNoUC" ], [ - "mnemonic", "TREZOR", "68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c", "infatti dire pudica elica camola deposito pudica nobile servire taverna restauro baritono inflitto flacone ilare suonare nastrare dito montato vulcano scrutinio lisca deposito mirtillo", @@ -1480,7 +1297,6 @@ "xprv9s21ZrQH143K2ZBg22DZJyspAmZcVMa1efjpsz89Hmcsu7dPZ39sH5RCCNr2kBRNFQUUmcwsNUTyZ6UGk7zjZKgCdXrmxg8gJ7FBCEeE5Au" ], [ - "mnemonic", "TREZOR", "c0ba5a8e914111210f2bd131f3d5e08d", "sarto smottato podismo burlone aria omissione dipolo marmo coricato peso malto basso", @@ -1488,7 +1304,6 @@ "xprv9s21ZrQH143K2FR5gEkuFMhmYGVyUKiSrZspfn52HonhhbvwWrn5fL7aST1yxtAfd8cQSyWVGH9TamV4SPvyKRZbSV2U7ZTurX1Zoe86ngE" ], [ - "mnemonic", "TREZOR", "6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3", "italia sultano meccanico strappo smeraldo sipario gommone chimera raffica sforzato sfamato vendemmia segnalato oscurare staffa trio cordata benda", @@ -1496,7 +1311,6 @@ "xprv9s21ZrQH143K3QTUdUYC375Cvtyea83NqatsgA5z3BMp95Fbd7QfQRvzqgjuCMU9zhSgiVtAYuDoR1GK9gQRP8juxnFR2Hd4v3mNgfMySGq" ], [ - "mnemonic", "TREZOR", "9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863", "piacere feudo bisonte ignorato brevetto sfida onorevole stufo nulla docente sfuso perbene albo sinusoide orologio fulmine diradare mitezza iride rata londra egoismo gravoso luce", @@ -1504,7 +1318,6 @@ "xprv9s21ZrQH143K32TYshJvJnEHVnwukKyvaQauzBPx42JYyGT1FfyUvjT5iEfYuaETkYiAUJE434hs5Qkh7FRSqK7kwy5GwjsfS4S5txFKwbL" ], [ - "mnemonic", "TREZOR", "23db8160a31d3e0dca3688ed941adbf3", "calmo statuto fucsia energia sodale aliante cedibile sinusoide trovare pila rinnovo tiro", @@ -1512,7 +1325,6 @@ "xprv9s21ZrQH143K2h5d8kmFvaQT4xHzXrAVwmwAMyF1p7jBg2QoE8RGGFWe1NyqcNPhy18CJ6UKcvHTXkijihhLE18yrpec1DxggywYDVWGiUo" ], [ - "mnemonic", "TREZOR", "8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0", "modulo rubizzo cefalo zavorra economia vulcano prudente soccorso tuta svedese limitare fluente amico srotolato cordata sportivo querela accusato", @@ -1520,7 +1332,6 @@ "xprv9s21ZrQH143K4AwqRHE1Swki4WW3ok7NF5cCs57wYAEhcaDhw9oVh1xwSbCeofP9GMZkTmZo6kSjj5Xh36tuuPebZhDBQRcgRnzLaSgrpL7" ], [ - "mnemonic", "TREZOR", "066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad", "alcolico lacrima muto frigo michele fessura irrigato alce ateismo incendio ilare metallo pilifero pergamena canotto opposto manovra nemmeno rimorchio fisico selettivo aforisma sabotato riciclato", @@ -1528,7 +1339,6 @@ "xprv9s21ZrQH143K416VC54NFDGXsQeXLSAf2JaUD8jQR4SDqAFq2S3BdcSRW66avfcoRK5FsPPCuBKaShrskgoGchxdAeBzVMPFHrJkCwAWgiE" ], [ - "mnemonic", "TREZOR", "f30f8c1da665478f49b001d94c5fc452", "utopia melodia allegro evoluto folata scuola carisma abbaglio spillato guanto unificato pollice", @@ -1536,7 +1346,6 @@ "xprv9s21ZrQH143K3u8cCFUJiaxUCKdGZ9Z2u76hUbKNMoCy51gq982aahsMbN5ArmhR1VHFJSMKLsFLkTsSX2gwjrEfj31QsDqCh3nE6FmcV4e" ], [ - "mnemonic", "TREZOR", "c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05", "satira lusinga mordere nastrare sposo responso replica varcato colza opinione distanza erario monetario bici india narice colza cilindro", @@ -1544,7 +1353,6 @@ "xprv9s21ZrQH143K2gMABxA98Be2P18eaj1zxU5qV6sCiMT42cuvLQ3dM2VBnEAvpFwWEDtDcbSkteNAF8nUuCyBETqpAeKmqV6niTPFEECGcLx" ], [ - "mnemonic", "TREZOR", "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", "varcato codice enzima spessore brillante squillo vento insieme scoprire prugna circa cruciale peccato allusivo savio pilota inarcare simulato precluso sugo fegato sfamato lusso trono", @@ -1553,4 +1361,4 @@ ] ] } -} \ No newline at end of file +} diff --git a/geth/account/accounts.go b/geth/account/accounts.go index 5ab85be60..4d6daa0ce 100644 --- a/geth/account/accounts.go +++ b/geth/account/accounts.go @@ -51,14 +51,18 @@ func NewManager(geth GethServiceProvider) *Manager { // sub-account derivations) func (m *Manager) CreateAccount(password string) (address, pubKey, mnemonic string, err error) { // generate mnemonic phrase - mn := extkeys.NewMnemonic(extkeys.Salt) + mn := extkeys.NewMnemonic() mnemonic, err = mn.MnemonicPhrase(extkeys.EntropyStrength128, extkeys.EnglishLanguage) if err != nil { return "", "", "", fmt.Errorf("can not create mnemonic seed: %v", err) } - // generate extended master key (see BIP32) - extKey, err := extkeys.NewMaster(mn.MnemonicSeed(mnemonic, password), []byte(extkeys.Salt)) + // Generate extended master key (see BIP32) + // We call extkeys.NewMaster with a seed generated with the 12 mnemonic words + // but without using the optional password as an extra entropy as described in BIP39. + // Future ideas/iterations in Status can add an an advanced options + // for expert users, to be able to add a passphrase to the generation of the seed. + extKey, err := extkeys.NewMaster(mn.MnemonicSeed(mnemonic, "")) if err != nil { return "", "", "", fmt.Errorf("can not create master extended key: %v", err) } @@ -136,8 +140,8 @@ func (m *Manager) CreateChildAccount(parentAddress, password string) (address, p // Once master key is re-generated, it is inserted into keystore (if not already there). func (m *Manager) RecoverAccount(password, mnemonic string) (address, pubKey string, err error) { // re-create extended key (see BIP32) - mn := extkeys.NewMnemonic(extkeys.Salt) - extKey, err := extkeys.NewMaster(mn.MnemonicSeed(mnemonic, password), []byte(extkeys.Salt)) + mn := extkeys.NewMnemonic() + extKey, err := extkeys.NewMaster(mn.MnemonicSeed(mnemonic, "")) if err != nil { return "", "", ErrInvalidMasterKeyCreated }