[Qt] add BIP70 DoS protection test
- this test required to make readPaymentRequestFromFile() public in order to be able to is it in paymentservertests.cpp
This commit is contained in:
parent
31f84944a5
commit
4333e26c8e
2 changed files with 18 additions and 1 deletions
|
@ -52,6 +52,9 @@ QT_END_NAMESPACE
|
||||||
|
|
||||||
class CWallet;
|
class CWallet;
|
||||||
|
|
||||||
|
// BIP70 max payment request size in bytes (DoS protection)
|
||||||
|
extern const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE;
|
||||||
|
|
||||||
class PaymentServer : public QObject
|
class PaymentServer : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -85,6 +88,9 @@ public:
|
||||||
// OptionsModel is used for getting proxy settings and display unit
|
// OptionsModel is used for getting proxy settings and display unit
|
||||||
void setOptionsModel(OptionsModel *optionsModel);
|
void setOptionsModel(OptionsModel *optionsModel);
|
||||||
|
|
||||||
|
// This is now public, because we use it in paymentservertests.cpp
|
||||||
|
static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
// Fired when a valid payment request is received
|
// Fired when a valid payment request is received
|
||||||
void receivedPaymentRequest(SendCoinsRecipient);
|
void receivedPaymentRequest(SendCoinsRecipient);
|
||||||
|
@ -118,7 +124,6 @@ protected:
|
||||||
bool eventFilter(QObject *object, QEvent *event);
|
bool eventFilter(QObject *object, QEvent *event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request);
|
|
||||||
bool processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient);
|
bool processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient);
|
||||||
void fetchRequest(const QUrl& url);
|
void fetchRequest(const QUrl& url);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "optionsmodel.h"
|
#include "optionsmodel.h"
|
||||||
#include "paymentrequestdata.h"
|
#include "paymentrequestdata.h"
|
||||||
|
|
||||||
|
#include "random.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "utilstrencodings.h"
|
#include "utilstrencodings.h"
|
||||||
|
|
||||||
|
@ -108,6 +109,17 @@ void PaymentServerTests::paymentServerTests()
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString(""));
|
QCOMPARE(merchant, QString(""));
|
||||||
|
|
||||||
|
// Just get some random data big enough to trigger BIP70 DoS protection
|
||||||
|
unsigned char randData[BIP70_MAX_PAYMENTREQUEST_SIZE + 1];
|
||||||
|
GetRandBytes(randData, sizeof(randData));
|
||||||
|
// Write data to a temp file:
|
||||||
|
QTemporaryFile tempFile;
|
||||||
|
tempFile.open();
|
||||||
|
tempFile.write((const char*)randData, sizeof(randData));
|
||||||
|
tempFile.close();
|
||||||
|
// Trigger BIP70 DoS protection
|
||||||
|
QCOMPARE(PaymentServer::readPaymentRequestFromFile(tempFile.fileName(), r.paymentRequest), false);
|
||||||
|
|
||||||
delete server;
|
delete server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue