forked from cawka/ndn.cxx
diff --git a/ndn-cpp/fields/signature-sha256-with-rsa.h b/ndn-cpp/fields/signature-sha256-with-rsa.h
new file mode 100644
index 0000000..be6766b
--- /dev/null
+++ b/ndn-cpp/fields/signature-sha256-with-rsa.h
@@ -0,0 +1,172 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ * Alexander Afanasyev
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef NDN_SIGNATURE_SHA256_WITH_RSA_H
+#define NDN_SIGNATURE_SHA256_WITH_RSA_H
+
+#include "signature.h"
+
+#include "ndn-cpp/fields/blob.h"
+#include "ndn-cpp/fields/key-locator.h"
+
+#include <string>
+
+namespace ndn {
+
+namespace signature {
+
+/**
+ * @brief Class providing operations to work with SHA256withRSA (OID: "2.16.840.1.101.3.4.2.1")
+ */
+class Sha256WithRsa : public virtual Signature
+{
+public:
+ /**
+ * @brief Virtual destructor
+ */
+ virtual
+ ~Sha256WithRsa ();
+
+ /**
+ * @brief Get OID of the signature algorithm
+ */
+ inline const std::string &
+ getDigestAlgorithm () const;
+
+ /**
+ * @brief Get reference to signature bits
+ */
+ inline Blob &
+ getSignatureBits ();
+
+ /**
+ * @brief Get const reference to signature bits
+ */
+ inline const Blob &
+ getSignatureBits () const;
+
+ /**
+ * @brief Set signature bits
+ */
+ inline void
+ setSignatureBits (const Blob &signatureBits);
+
+ /**
+ * @brief Get reference to publisher key digest bits
+ */
+ inline Blob &
+ getPublisherKeyDigest ();
+
+ /**
+ * @brief Get const reference to publisher key digest bits
+ */
+ inline const Blob &
+ getPublisherKeyDigest () const;
+
+ /**
+ * @brief Set publisher key digest bits
+ */
+ inline void
+ setPublisherKeyDigest (const Blob &publisherKeyDigest);
+
+ /**
+ * @brief Get reference to key locator object
+ */
+ inline KeyLocator &
+ getKeyLocator ();
+
+ /**
+ * @brief Get const reference to key locator object
+ */
+ inline const KeyLocator &
+ getKeyLocator () const;
+
+ /**
+ * @brief Set key locator object
+ */
+ inline void
+ setKeyLocator (const KeyLocator &keyLocator);
+
+ // from Signature
+ virtual void
+ doubleDispatch (std::ostream &os, wire::Base &wire, void *userData) const;
+
+private:
+ static const std::string s_oid;
+
+ Blob m_signatureBits;
+ Blob m_publisherKeyDigest;
+ KeyLocator m_keyLocator;
+};
+
+const std::string &
+Sha256WithRsa::getDigestAlgorithm () const
+{
+ return s_oid;
+}
+
+inline Blob &
+Sha256WithRsa::getSignatureBits ()
+{
+ return m_signatureBits;
+}
+
+inline const Blob &
+Sha256WithRsa::getSignatureBits () const
+{
+ return m_signatureBits;
+}
+
+inline void
+Sha256WithRsa::setSignatureBits (const Blob &signatureBits)
+{
+ m_signatureBits = signatureBits;
+}
+
+inline Blob &
+Sha256WithRsa::getPublisherKeyDigest ()
+{
+ return m_publisherKeyDigest;
+}
+
+inline const Blob &
+Sha256WithRsa::getPublisherKeyDigest () const
+{
+ return m_publisherKeyDigest;
+}
+
+inline void
+Sha256WithRsa::setPublisherKeyDigest (const Blob &publisherKeyDigest)
+{
+ m_publisherKeyDigest = publisherKeyDigest;
+}
+
+inline KeyLocator &
+Sha256WithRsa::getKeyLocator ()
+{
+ return m_keyLocator;
+}
+
+inline const KeyLocator &
+Sha256WithRsa::getKeyLocator () const
+{
+ return m_keyLocator;
+}
+
+inline void
+Sha256WithRsa::setKeyLocator (const KeyLocator &keyLocator)
+{
+ m_keyLocator = keyLocator;
+}
+
+} // signature
+} // ndn
+
+#endif // NDN_EXCLUDE_H