Adding passPhrase to function's signature

This commit is contained in:
castroi 2023-05-15 21:26:41 +03:00
parent 5388c974b5
commit e251311fa4
4 changed files with 18 additions and 7 deletions

View File

@ -33,10 +33,11 @@ func dumpUnencryptedData(conf *dumpUnencryptedDataConfig) error {
return err return err
} }
passPhrase = []byte(GetPassword("Enter passphrase (press 'ENTER' to skip):"))
mnemonicPublicKeys := make(map[string]struct{}) mnemonicPublicKeys := make(map[string]struct{})
for i, mnemonic := range mnemonics { for i, mnemonic := range mnemonics {
fmt.Printf("Mnemonic #%d:\n%s\n\n", i+1, mnemonic) fmt.Printf("Mnemonic #%d:\n%s\n\n", i+1, mnemonic)
publicKey, err := libkaspawallet.MasterPublicKeyFromMnemonic(conf.NetParams(), mnemonic, len(keysFile.ExtendedPublicKeys) > 1) publicKey, err := libkaspawallet.MasterPublicKeyFromMnemonic(conf.NetParams(), mnemonic, passPhrase, len(keysFile.ExtendedPublicKeys) > 1)
if err != nil { if err != nil {
return err return err
} }

View File

@ -59,13 +59,22 @@ func encryptedMnemonicExtendedPublicKeyPairs(params *dagconfig.Params, mnemonics
if subtle.ConstantTimeCompare(password, confirmPassword) != 1 { if subtle.ConstantTimeCompare(password, confirmPassword) != 1 {
return nil, nil, errors.New("Passwords are not identical") return nil, nil, errors.New("Passwords are not identical")
} }
passPhrase = []byte(GetPassword("Enter passphrase (press 'ENTER' to skip):"))
if len(passPhrase) == 0 {
confirmPassPhrase := []byte(GetPassword("Confirm passphrase:"))
if subtle.ConstantTimeCompare(passPhrase, confirmPassPhrase) != 1 {
return nil, nil, errors.New("PassPhrase are not identical")
}
}
} }
encryptedPrivateKeys = make([]*EncryptedMnemonic, 0, len(mnemonics)) encryptedPrivateKeys = make([]*EncryptedMnemonic, 0, len(mnemonics))
extendedPublicKeys = make([]string, 0, len(mnemonics)) extendedPublicKeys = make([]string, 0, len(mnemonics))
for _, mnemonic := range mnemonics { for _, mnemonic := range mnemonics {
extendedPublicKey, err := libkaspawallet.MasterPublicKeyFromMnemonic(params, mnemonic, isMultisig) extendedPublicKey, err := libkaspawallet.MasterPublicKeyFromMnemonic(params, mnemonic, passPhrase, isMultisig)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }

View File

@ -38,7 +38,7 @@ func defaultPath(isMultisig bool) string {
// MasterPublicKeyFromMnemonic returns the master public key with the correct derivation for the given mnemonic. // MasterPublicKeyFromMnemonic returns the master public key with the correct derivation for the given mnemonic.
func MasterPublicKeyFromMnemonic(params *dagconfig.Params, mnemonic string, passPhrase string, isMultisig bool) (string, error) { func MasterPublicKeyFromMnemonic(params *dagconfig.Params, mnemonic string, passPhrase string, isMultisig bool) (string, error) {
path := defaultPath(isMultisig) path := defaultPath(isMultisig)
extendedKey, err := extendedKeyFromMnemonicAndPath(mnemonic, path, params) extendedKey, err := extendedKeyFromMnemonicAndPath(mnemonic, path, passPhrase, params)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -52,7 +52,7 @@ func MasterPublicKeyFromMnemonic(params *dagconfig.Params, mnemonic string, pass
} }
func extendedKeyFromMnemonicAndPath(mnemonic string, path string, passPhrase string, params *dagconfig.Params) (*bip32.ExtendedKey, error) { func extendedKeyFromMnemonicAndPath(mnemonic string, path string, passPhrase string, params *dagconfig.Params) (*bip32.ExtendedKey, error) {
seed := bip39.NewSeed(mnemonic, "") seed := bip39.NewSeed(mnemonic, passPhrase)
version, err := versionFromParams(params) version, err := versionFromParams(params)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -60,11 +60,12 @@ func sign(params *dagconfig.Params, mnemonic string, partiallySignedTransaction
partiallySignedTransaction.Tx.Inputs[i].SigOpCount = byte(len(partiallySignedInput.PubKeySignaturePairs)) partiallySignedTransaction.Tx.Inputs[i].SigOpCount = byte(len(partiallySignedInput.PubKeySignaturePairs))
} }
passPhrase = []byte(GetPassword("Enter passphrase (press 'ENTER' to skip):"))
signed := false signed := false
for i, partiallySignedInput := range partiallySignedTransaction.PartiallySignedInputs { for i, partiallySignedInput := range partiallySignedTransaction.PartiallySignedInputs {
isMultisig := len(partiallySignedInput.PubKeySignaturePairs) > 1 isMultisig := len(partiallySignedInput.PubKeySignaturePairs) > 1
path := defaultPath(isMultisig) path := defaultPath(isMultisig)
extendedKey, err := extendedKeyFromMnemonicAndPath(mnemonic, path, params) extendedKey, err := extendedKeyFromMnemonicAndPath(mnemonic, path, passPhrase, params)
if err != nil { if err != nil {
return err return err
} }