-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsolvedialog.cpp
103 lines (91 loc) · 3.17 KB
/
solvedialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "solvedialog.h"
#include "ui_solvedialog.h"
SolveDialog::SolveDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SolveDialog)
{
ui->setupUi(this);
}
SolveDialog::~SolveDialog()
{
delete ui;
}
void SolveDialog::setPrefPrivPub(QString prefixValue, QString privatekeyValue, QString publickeyValue) {
prefix = prefixValue;
ui->lblSolution->setText("Solution for '" + prefix + "' :");
privatekey = privatekeyValue;
publickey = publickeyValue;
solveOk = false;
}
void SolveDialog::on_btnAdd_released()
{
QString finalAddress = "";
QString multipliedAddress = "";
QString addedAddress = "";
bool solutionAdded = true;
solveOk = false;
if (!privatekey.isEmpty()) {
bc.setPrivateKey(privatekey);
bc.mergeWithPrivateKey(ui->txtSolution->toPlainText());
addedAddress = bc.getBitcoinAddress();
} else if (!publickey.isEmpty()) {
bc.setPublicKey(publickey);
bc.mergeWithPublicKey(ui->txtSolution->toPlainText());
addedAddress = bc.getBitcoinAddress();
}
if (!addedAddress.startsWith(prefix)) {
solutionAdded = false;
if (!privatekey.isEmpty()) {
bc.setPrivateKey(privatekey);
bc.mergeWithPrivateKey(ui->txtSolution->toPlainText(), true);
multipliedAddress = bc.getBitcoinAddress();
if (multipliedAddress.startsWith(prefix))
finalAddress = multipliedAddress;
} else if (!publickey.isEmpty()) {
bc.setPublicKey(publickey);
bc.mergeWithPublicKey(ui->txtSolution->toPlainText(), true);
multipliedAddress = bc.getBitcoinAddress();
if (multipliedAddress.startsWith(prefix))
finalAddress = multipliedAddress;
}
} else
finalAddress = addedAddress;
if (finalAddress.isEmpty())
QMessageBox::critical(this, tr("Error"), tr("Solution is wrong!"));
else {
QString finalPrivateKey = bc.getPrivateKey();
QString finalPublicKey = bc.getPublicKey();
QMessageBox::information(this,
tr("Success"),
tr("Solution was correct!") +
tr("\n\n- Solution Type: ") +
(solutionAdded?tr("Additive"):tr("Multiplicative")) +
tr("\n- Bitcoin Address: ") +
finalAddress +
tr("\n- Final Private key: ") +
(finalPrivateKey.isEmpty()?tr("Unknown"):finalPrivateKey) +
tr("\n- Final Public key: ") +
finalPublicKey);
solveOk = true;
privatekey = finalPrivateKey;
publickey = finalPublicKey;
this->hide();
}
}
QString SolveDialog::getPrivateKey() {
if (solveOk)
return privatekey;
else
return "";
}
QString SolveDialog::getPublicKey() {
if (solveOk)
return publickey;
else
return "";
}
void SolveDialog::on_txtSolution_textChanged()
{
if (!bc.isHex(ui->txtSolution->toPlainText()))
ui->txtSolution->setPlainText("");
}