aboutsummaryrefslogtreecommitdiff
path: root/src/qt/paymentrequestplus.h
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-07-22 16:50:39 +1000
committerGavin Andresen <gavinandresen@gmail.com>2013-08-22 16:18:25 +1000
commita41d5fe01947f2f878c055670986a165af800f9a (patch)
tree40eeada1ebc180f8e3669a7d164104686dc0c618 /src/qt/paymentrequestplus.h
parent47d0534368fbf0e3fb2cad7d05d60501d29f62aa (diff)
Payment Protocol: X509-validated payment requests
Add support for a Payment Protocol to Bitcoin-Qt. Payment messages are protocol-buffer encoded and communicated over http(s), so this adds a dependency on the Google protocol buffer library, and requires Qt with OpenSSL support.
Diffstat (limited to 'src/qt/paymentrequestplus.h')
-rw-r--r--src/qt/paymentrequestplus.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/qt/paymentrequestplus.h b/src/qt/paymentrequestplus.h
new file mode 100644
index 0000000000..846d256aca
--- /dev/null
+++ b/src/qt/paymentrequestplus.h
@@ -0,0 +1,41 @@
+#ifndef PAYMENTREQUESTPLUS_H
+#define PAYMENTREQUESTPLUS_H
+
+#include <QByteArray>
+#include <QList>
+#include <QString>
+
+#include "base58.h"
+#include "paymentrequest.pb.h"
+
+//
+// Wraps dumb protocol buffer paymentRequest
+// with extra methods
+//
+
+class PaymentRequestPlus
+{
+public:
+ PaymentRequestPlus() { }
+
+ bool parse(const QByteArray& data);
+ bool SerializeToString(string* output) const;
+
+ bool IsInitialized() const;
+ QString getPKIType() const;
+ // Returns true if merchant's identity is authenticated, and
+ // returns human-readable merchant identity in merchant
+ bool getMerchant(X509_STORE* certStore, QString& merchant) const;
+
+ // Returns list of outputs, amount
+ QList<std::pair<CScript,qint64> > getPayTo() const;
+
+ const payments::PaymentDetails& getDetails() const { return details; }
+
+private:
+ payments::PaymentRequest paymentRequest;
+ payments::PaymentDetails details;
+};
+
+#endif // PAYMENTREQUESTPLUS_H
+