mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00
Fix numThreads using getAEAD instead of decryptMnemonic (#1859)
* Fix num threads using getAEAD instead of decryptMnemonic * Use d.NumThread to init bruteforce for num threads in getAEAD Co-authored-by: Ori Newman <>
This commit is contained in:
parent
32e8e539ac
commit
dced1a9376
@ -314,11 +314,7 @@ func (d *File) numThreads(password []byte) (uint8, error) {
|
||||
return defaultNumThreads, nil
|
||||
}
|
||||
|
||||
if d.NumThreads != 0 {
|
||||
return d.NumThreads, nil
|
||||
}
|
||||
|
||||
numThreads, err := d.detectNumThreads(password, d.EncryptedMnemonics[0].salt)
|
||||
numThreads, err := d.detectNumThreads(password, d.EncryptedMnemonics[0])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@ -332,30 +328,33 @@ func (d *File) numThreads(password []byte) (uint8, error) {
|
||||
return numThreads, nil
|
||||
}
|
||||
|
||||
func (d *File) detectNumThreads(password, salt []byte) (uint8, error) {
|
||||
numCPU := uint8(runtime.NumCPU())
|
||||
_, err := getAEAD(numCPU, password, salt)
|
||||
func (d *File) detectNumThreads(password []byte, encryptedMnemonic *EncryptedMnemonic) (uint8, error) {
|
||||
firstGuessNumThreads := d.NumThreads
|
||||
if d.NumThreads == 0 {
|
||||
firstGuessNumThreads = uint8(runtime.NumCPU())
|
||||
}
|
||||
_, err := decryptMnemonic(firstGuessNumThreads, encryptedMnemonic, password)
|
||||
if err != nil {
|
||||
if !strings.Contains(err.Error(), "message authentication failed") {
|
||||
return 0, err
|
||||
}
|
||||
} else {
|
||||
return numCPU, nil
|
||||
return firstGuessNumThreads, nil
|
||||
}
|
||||
|
||||
for i := uint8(1); ; i++ {
|
||||
if i == numCPU {
|
||||
for numThreadsGuess := uint8(1); ; numThreadsGuess++ {
|
||||
if numThreadsGuess == firstGuessNumThreads {
|
||||
continue
|
||||
}
|
||||
|
||||
_, err := getAEAD(i, password, salt)
|
||||
_, err := decryptMnemonic(numThreadsGuess, encryptedMnemonic, password)
|
||||
if err != nil {
|
||||
const maxTries = 32
|
||||
if i > maxTries || !strings.Contains(err.Error(), "message authentication failed") {
|
||||
if numThreadsGuess == maxTries || !strings.Contains(err.Error(), "message authentication failed") {
|
||||
return 0, err
|
||||
}
|
||||
} else {
|
||||
return i, nil
|
||||
return numThreadsGuess, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user