diff --git a/builds/node/node_darwin-amd64 b/builds/node/node_darwin-amd64 index 083f1fb..ef990e6 100755 Binary files a/builds/node/node_darwin-amd64 and b/builds/node/node_darwin-amd64 differ diff --git a/builds/node/node_darwin-arm64 b/builds/node/node_darwin-arm64 index b000901..1995637 100755 Binary files a/builds/node/node_darwin-arm64 and b/builds/node/node_darwin-arm64 differ diff --git a/builds/node/node_linux-386 b/builds/node/node_linux-386 index 214867a..d1cdac5 100755 Binary files a/builds/node/node_linux-386 and b/builds/node/node_linux-386 differ diff --git a/builds/node/node_linux-amd64 b/builds/node/node_linux-amd64 index 4afa4a6..4595571 100755 Binary files a/builds/node/node_linux-amd64 and b/builds/node/node_linux-amd64 differ diff --git a/builds/node/node_linux-arm b/builds/node/node_linux-arm index cfb34b1..7e1fdad 100755 Binary files a/builds/node/node_linux-arm and b/builds/node/node_linux-arm differ diff --git a/builds/node/node_linux-arm64 b/builds/node/node_linux-arm64 index ca1fa1e..e33d71c 100755 Binary files a/builds/node/node_linux-arm64 and b/builds/node/node_linux-arm64 differ diff --git a/builds/node/node_windows-386 b/builds/node/node_windows-386 index 5d908c9..3972835 100755 Binary files a/builds/node/node_windows-386 and b/builds/node/node_windows-386 differ diff --git a/builds/node/node_windows-amd64 b/builds/node/node_windows-amd64 index f60b5bd..2e85dcc 100755 Binary files a/builds/node/node_windows-amd64 and b/builds/node/node_windows-amd64 differ diff --git a/builds/node/node_windows-arm b/builds/node/node_windows-arm index 5dc80bc..fc3b676 100755 Binary files a/builds/node/node_windows-arm and b/builds/node/node_windows-arm differ diff --git a/builds/node/node_windows-arm64 b/builds/node/node_windows-arm64 index e6c3eb9..3ccbb9d 100755 Binary files a/builds/node/node_windows-arm64 and b/builds/node/node_windows-arm64 differ diff --git a/cmdline.go b/cmdline.go index 35496dc..80e25c7 100644 --- a/cmdline.go +++ b/cmdline.go @@ -69,8 +69,17 @@ func RunCmd(input string) { if err != nil { panic(err) } - mnemonic := GetMnemonic(privateKey) - fmt.Println("Mnemonic: " + mnemonic) + mnemonic0 := GetMnemonic(*privateKey.X) + mnemonic1 := GetMnemonic(*privateKey.PublicKey.Y) + mnemonic2 := GetMnemonic(*privateKey.PublicKey.Parameters.P) + mnemonic3 := GetMnemonic(*privateKey.PublicKey.Parameters.Q) + mnemonic4 := GetMnemonic(*privateKey.PublicKey.Parameters.G) + fmt.Println("Mnemonic:") + fmt.Println("Part 0: " + mnemonic0) + fmt.Println("Part 1: " + mnemonic1) + fmt.Println("Part 2: " + mnemonic2) + fmt.Println("Part 3: " + mnemonic3) + fmt.Println("Part 4: " + mnemonic4) fmt.Println("Write down the mnemonic and keep it safe, or better yet memorize it. It is the ONLY WAY to recover your private key.") } else if action == "encrypt" { // Ask the user for a password diff --git a/mnemonic.go b/mnemonic.go index 37741da..0b56b64 100644 --- a/mnemonic.go +++ b/mnemonic.go @@ -9,8 +9,6 @@ You should have received a copy of the GNU General Public License along with thi package main import ( - "crypto/dsa" - "fmt" "math/big" "strings" ) @@ -129,19 +127,18 @@ var words = map[string]string{ "9!": "banana", } -func GetMnemonic(key dsa.PrivateKey) string { +func GetMnemonic(source big.Int) string { // Get each group of 2 digits from the key and convert it to a word. // Convert the key to a string. - keyString := key.X.String() + sourceString := source.String() // Split the string into groups of 2 digits. var groups []string - if len(keyString)%2 != 0 { - keyString = keyString + "!" + if len(sourceString)%2 != 0 { + sourceString += "!" } - for i := 0; i < len(keyString); i += 2 { - groups = append(groups, keyString[i:i+2]) + for i := 0; i < len(sourceString); i += 2 { + groups = append(groups, sourceString[i:i+2]) } - fmt.Println(groups) // Convert each group of 2 digits to a word. var mnemonic string @@ -149,11 +146,10 @@ func GetMnemonic(key dsa.PrivateKey) string { mnemonic += words[group] + " " } - fmt.Println(mnemonic) return mnemonic } -func RestoreMnemonic(mnemonic string) dsa.PrivateKey { +func RestoreMnemonic(mnemonic string) big.Int { // Split the mnemonic into words. mnemonicWords := strings.Split(mnemonic, " ") // Convert each word to a group of 2 digits. @@ -172,10 +168,7 @@ func RestoreMnemonic(mnemonic string) dsa.PrivateKey { keyString = keyString[:len(keyString)-1] } // Convert the string to a big.Int. - key := dsa.PrivateKey{ - PublicKey: dsa.PublicKey{}, - X: big.NewInt(0), - } - key.X.SetString(keyString, 10) - return key + var restored big.Int + restored.SetString(keyString, 10) + return restored }