mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 18:53:23 -03:00
[Qt] prepare paymentservertests for new unit tests
- add a second PaymentRequest Test CA certificate to paymentrequestdata.h (serial number f0:da:97:e4:38:d7:64:16) as caCert2_BASE64 - rename existing Test CA certificate to caCert1_BASE64 - rename existing payment request data to know they belong to caCert1_BASE64 - update comments to reflect the changes and add a missing comment to one of the payment requests
This commit is contained in:
parent
c5380a9045
commit
080da96c7c
2 changed files with 57 additions and 23 deletions
|
@ -6,16 +6,16 @@
|
||||||
// Data for paymentservertests.cpp
|
// Data for paymentservertests.cpp
|
||||||
//
|
//
|
||||||
|
|
||||||
// Base64/DER-encoded fake certificate authority certificate.
|
// Base64/DER-encoded fake certificate authority certificates.
|
||||||
// Convert pem to base64/der with:
|
// Convert pem to base64/der with:
|
||||||
// cat file.pem | openssl x509 -inform PEM -outform DER | openssl enc -base64
|
// openssl x509 -in cert.pem -inform PEM -outform DER | openssl enc -base64
|
||||||
//
|
|
||||||
// Serial Number: 10302349811211485352 (0x8ef94c91b112c0a8)
|
// Serial Number: 10302349811211485352 (0x8ef94c91b112c0a8)
|
||||||
// Issuer: CN=PaymentRequest Test CA
|
// Issuer: CN=PaymentRequest Test CA
|
||||||
// Subject: CN=PaymentRequest Test CA
|
// Subject: CN=PaymentRequest Test CA
|
||||||
// Not Valid After : Dec 8 16:37:24 2022 GMT
|
// Not Valid After : Dec 8 16:37:24 2022 GMT
|
||||||
//
|
//
|
||||||
const char* caCert_BASE64 =
|
const char* caCert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
MIIB0DCCATmgAwIBAgIJAI75TJGxEsCoMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNV\
|
MIIB0DCCATmgAwIBAgIJAI75TJGxEsCoMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNV\
|
||||||
BAMTFlBheW1lbnRSZXF1ZXN0IFRlc3QgQ0EwHhcNMTIxMjEwMTYzNzI0WhcNMjIx\
|
BAMTFlBheW1lbnRSZXF1ZXN0IFRlc3QgQ0EwHhcNMTIxMjEwMTYzNzI0WhcNMjIx\
|
||||||
|
@ -29,11 +29,36 @@ RtQcf0AJ9olzUMY4syehxbzUJP6aeXhZEYiMvdvcv9D55clq6+WLLlNT3jBgAaVn\
|
||||||
p3waRjPD4bUX3nv+ojz5s4puw7Qq5QUZlhGsMzPvwDGCmZkL\
|
p3waRjPD4bUX3nv+ojz5s4puw7Qq5QUZlhGsMzPvwDGCmZkL\
|
||||||
";
|
";
|
||||||
|
|
||||||
|
// Serial Number: f0:da:97:e4:38:d7:64:16
|
||||||
|
// Issuer: CN=PaymentRequest Test CA
|
||||||
|
// Subject: CN=PaymentRequest Test CA
|
||||||
|
// Not Valid After : Jan 8 18:21:06 2025 GMT
|
||||||
|
//
|
||||||
|
const char* caCert2_BASE64 =
|
||||||
|
"\
|
||||||
|
MIIC1TCCAb2gAwIBAgIJAPDal+Q412QWMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNV\
|
||||||
|
BAMMFlBheW1lbnRSZXF1ZXN0IFRlc3QgQ0EwHhcNMTUwMTExMTgyMTA2WhcNMjUw\
|
||||||
|
MTA4MTgyMTA2WjAhMR8wHQYDVQQDDBZQYXltZW50UmVxdWVzdCBUZXN0IENBMIIB\
|
||||||
|
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1S9wVLfTplJuT/1OaaBgl/Mb\
|
||||||
|
I392v8S9kHbzYz7B4OTMslaO7piz0v3SO3TKMh0dswjiRdHrIgpO7XdIUQiU/ugg\
|
||||||
|
xDw0kuNehfz1ycaGedlFFtFHTNXqLyIUF3dlwHhQwaomM6RXoJmxLny5BhYHEcmk\
|
||||||
|
yWwr3Cdjd9gAZpblugVJB9C1e40uyL8ao4PHdLzOqO27iSe6riP8SwwisJZEbMaz\
|
||||||
|
AZpgNEEMbIXPJEFvm5HTRXSMtQCOTSZYMFF0M2yrtmlECnz7hWP19b9bcoDzZQB4\
|
||||||
|
ylIsFG/7q2jV7MC/e2STZv+niJiHL08RUdoFpAgzaxMgqj63C7B55HgNDNHJYQID\
|
||||||
|
AQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBGejPxLxj9\
|
||||||
|
+crv6gUeEBMZPiUx7pUgcI22Wm5yymP96B4fwI3Y0DBehq20d76vbWGPN17Z6pH3\
|
||||||
|
ge7PVY1SYqXtS6hXTo4olCm/BZADli+2Bs2xCiaa+Ltve4ufVej+bKJXN/YnrhvO\
|
||||||
|
Kq+klQkuuHywU+GJV/NQeBqToIrSOBgi477NgLFCCCmmx2QWsxHoCFGfuRCBVseT\
|
||||||
|
z2k/tMuALCDXGeZBRPTsGHu1y4cj84swAeoDK5QSQcI+Ub7GKc+zkoj02sdDLiMo\
|
||||||
|
3wokYPcIy47oclhmb4xubHc+y7nF610yZBoC/zgbhbawnZ65hDDWkdQ/SVAnWZD7\
|
||||||
|
9PFfmNnYPTQH\
|
||||||
|
";
|
||||||
|
|
||||||
//
|
//
|
||||||
// This payment request validates directly against the
|
// This payment request validates directly against the
|
||||||
// above certificate authority.
|
// caCert1 certificate authority.
|
||||||
//
|
//
|
||||||
const char* paymentrequest1_BASE64 =
|
const char* paymentrequest1_cert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
||||||
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMjEyMTAx\
|
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMjEyMTAx\
|
||||||
|
@ -55,7 +80,7 @@ SiWVbw0tX/68iSQEGGfh9n6ee/8Myb3ICdw=\
|
||||||
//
|
//
|
||||||
// Signed, but expired, merchant cert in the request
|
// Signed, but expired, merchant cert in the request
|
||||||
//
|
//
|
||||||
const char* paymentrequest2_BASE64 =
|
const char* paymentrequest2_cert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
Egt4NTA5K3NoYTI1NhrsAwrpAzCCAeUwggFOoAMCAQICAQMwDQYJKoZIhvcNAQEL\
|
Egt4NTA5K3NoYTI1NhrsAwrpAzCCAeUwggFOoAMCAQICAQMwDQYJKoZIhvcNAQEL\
|
||||||
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzAyMjMy\
|
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzAyMjMy\
|
||||||
|
@ -75,9 +100,9 @@ tejrSPOBNSJ3Mi/q5u2Yl4gJZY2b\
|
||||||
";
|
";
|
||||||
|
|
||||||
//
|
//
|
||||||
// 10-long chain, all intermediates valid
|
// 10-long certificate chain, all intermediates valid
|
||||||
//
|
//
|
||||||
const char* paymentrequest3_BASE64 =
|
const char* paymentrequest3_cert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
Egt4NTA5K3NoYTI1Nhq8JAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
Egt4NTA5K3NoYTI1Nhq8JAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
||||||
BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\
|
BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\
|
||||||
|
@ -184,9 +209,9 @@ chhR/aHOuEMTxmc12K4rNlgYtHCsxLP9zd+6u0cva3TucZ6EzS8PKEib/+r12/52\
|
||||||
";
|
";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Long chain, with an invalid (expired) cert in the middle
|
// Long certificate chain, with an expired certificate in the middle
|
||||||
//
|
//
|
||||||
const char* paymentrequest4_BASE64 =
|
const char* paymentrequest4_cert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
Egt4NTA5K3NoYTI1NhqeJAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
Egt4NTA5K3NoYTI1NhqeJAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
||||||
BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\
|
BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\
|
||||||
|
@ -291,7 +316,10 @@ HXQjsfdR58qZQS9CS5DAtRUf0R8+43/wijO/hb49VNaNXmY+/cPHMkahP2aV3tZi\
|
||||||
FAyZblLik9A7ZvF+UsjeFQiHB5wzWQvbqk5wQ4yabHIXoYv/E0q+eQ==\
|
FAyZblLik9A7ZvF+UsjeFQiHB5wzWQvbqk5wQ4yabHIXoYv/E0q+eQ==\
|
||||||
";
|
";
|
||||||
|
|
||||||
const char* paymentrequest5_BASE64 =
|
//
|
||||||
|
// Validly signed, but by a CA not in our root CA list
|
||||||
|
//
|
||||||
|
const char* paymentrequest5_cert1_BASE64 =
|
||||||
"\
|
"\
|
||||||
Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\
|
||||||
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzA0MTkx\
|
BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzA0MTkx\
|
||||||
|
|
|
@ -65,38 +65,44 @@ void PaymentServerTests::paymentServerTests()
|
||||||
OptionsModel optionsModel;
|
OptionsModel optionsModel;
|
||||||
PaymentServer* server = new PaymentServer(NULL, false);
|
PaymentServer* server = new PaymentServer(NULL, false);
|
||||||
X509_STORE* caStore = X509_STORE_new();
|
X509_STORE* caStore = X509_STORE_new();
|
||||||
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert_BASE64));
|
X509_STORE_add_cert(caStore, parse_b64der_cert(caCert1_BASE64));
|
||||||
PaymentServer::LoadRootCAs(caStore);
|
PaymentServer::LoadRootCAs(caStore);
|
||||||
server->setOptionsModel(&optionsModel);
|
server->setOptionsModel(&optionsModel);
|
||||||
server->uiReady();
|
server->uiReady();
|
||||||
|
|
||||||
// Now feed PaymentRequests to server, and observe signals it produces:
|
std::vector<unsigned char> data;
|
||||||
std::vector<unsigned char> data = DecodeBase64(paymentrequest1_BASE64);
|
SendCoinsRecipient r;
|
||||||
SendCoinsRecipient r = handleRequest(server, data);
|
|
||||||
QString merchant;
|
QString merchant;
|
||||||
|
|
||||||
|
// Now feed PaymentRequests to server, and observe signals it produces
|
||||||
|
|
||||||
|
// This payment request validates directly against the
|
||||||
|
// caCert1 certificate authority:
|
||||||
|
data = DecodeBase64(paymentrequest1_cert1_BASE64);
|
||||||
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString("testmerchant.org"));
|
QCOMPARE(merchant, QString("testmerchant.org"));
|
||||||
|
|
||||||
// Version of the above, with an expired certificate:
|
// Signed, but expired, merchant cert in the request:
|
||||||
data = DecodeBase64(paymentrequest2_BASE64);
|
data = DecodeBase64(paymentrequest2_cert1_BASE64);
|
||||||
r = handleRequest(server, data);
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString(""));
|
QCOMPARE(merchant, QString(""));
|
||||||
|
|
||||||
// Long certificate chain:
|
// 10-long certificate chain, all intermediates valid:
|
||||||
data = DecodeBase64(paymentrequest3_BASE64);
|
data = DecodeBase64(paymentrequest3_cert1_BASE64);
|
||||||
r = handleRequest(server, data);
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString("testmerchant8.org"));
|
QCOMPARE(merchant, QString("testmerchant8.org"));
|
||||||
|
|
||||||
// Long certificate chain, with an expired certificate in the middle:
|
// Long certificate chain, with an expired certificate in the middle:
|
||||||
data = DecodeBase64(paymentrequest4_BASE64);
|
data = DecodeBase64(paymentrequest4_cert1_BASE64);
|
||||||
r = handleRequest(server, data);
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString(""));
|
QCOMPARE(merchant, QString(""));
|
||||||
|
|
||||||
// Validly signed, but by a CA not in our root CA list:
|
// Validly signed, but by a CA not in our root CA list:
|
||||||
data = DecodeBase64(paymentrequest5_BASE64);
|
data = DecodeBase64(paymentrequest5_cert1_BASE64);
|
||||||
r = handleRequest(server, data);
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString(""));
|
QCOMPARE(merchant, QString(""));
|
||||||
|
@ -104,7 +110,7 @@ void PaymentServerTests::paymentServerTests()
|
||||||
// Try again with no root CA's, verifiedMerchant should be empty:
|
// Try again with no root CA's, verifiedMerchant should be empty:
|
||||||
caStore = X509_STORE_new();
|
caStore = X509_STORE_new();
|
||||||
PaymentServer::LoadRootCAs(caStore);
|
PaymentServer::LoadRootCAs(caStore);
|
||||||
data = DecodeBase64(paymentrequest1_BASE64);
|
data = DecodeBase64(paymentrequest1_cert1_BASE64);
|
||||||
r = handleRequest(server, data);
|
r = handleRequest(server, data);
|
||||||
r.paymentRequest.getMerchant(caStore, merchant);
|
r.paymentRequest.getMerchant(caStore, merchant);
|
||||||
QCOMPARE(merchant, QString(""));
|
QCOMPARE(merchant, QString(""));
|
||||||
|
|
Loading…
Add table
Reference in a new issue