make: Global change: Move all public headers to include folder. Change source to including public headers using #include <ndn-cpp/*>. Split some header files to minimize exposing C .h files.
diff --git a/include/ndn-cpp/sha256-with-rsa-signature.hpp b/include/ndn-cpp/sha256-with-rsa-signature.hpp
new file mode 100644
index 0000000..25eb6ae
--- /dev/null
+++ b/include/ndn-cpp/sha256-with-rsa-signature.hpp
@@ -0,0 +1,132 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Jeff Thompson <jefft0@remap.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_SHA256_WITH_RSA_SIGNATURE_HPP
+#define NDN_SHA256_WITH_RSA_SIGNATURE_HPP
+
+#include "data.hpp"
+#include "key.hpp"
+#include "publisher-public-key-digest.hpp"
+
+namespace ndn {
+
+/**
+ * A Sha256WithRsaSignature extends Signature and holds the signature bits and other info representing a
+ * SHA256-with-RSA signature in a data packet.
+ */
+class Sha256WithRsaSignature : public Signature {
+public:
+ /**
+ * Return a pointer to a new Sha256WithRsaSignature which is a copy of this signature.
+ */
+ virtual ptr_lib::shared_ptr<Signature>
+ clone() const;
+
+ /**
+ * Set the signatureStruct to point to the values in this signature object, without copying any memory.
+ * WARNING: The resulting pointers in signatureStruct are invalid after a further use of this object which could reallocate memory.
+ * @param signatureStruct a C ndn_Signature struct where the name components array is already allocated.
+ */
+ virtual void
+ get(struct ndn_Signature& signatureStruct) const;
+
+ /**
+ * Clear this signature, and set the values by copying from the ndn_Signature struct.
+ * @param signatureStruct a C ndn_Signature struct
+ */
+ virtual void
+ set(const struct ndn_Signature& signatureStruct);
+
+ const Blob&
+ getDigestAlgorithm() const { return digestAlgorithm_; }
+
+ const Blob&
+ getWitness() const { return witness_; }
+
+ const Blob&
+ getSignature() const { return signature_; }
+
+ const PublisherPublicKeyDigest&
+ getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_; }
+
+ PublisherPublicKeyDigest&
+ getPublisherPublicKeyDigest() { return publisherPublicKeyDigest_; }
+
+ const KeyLocator&
+ getKeyLocator() const { return keyLocator_; }
+
+ KeyLocator&
+ getKeyLocator() { return keyLocator_; }
+
+ void
+ setDigestAlgorithm(const std::vector<uint8_t>& digestAlgorithm) { digestAlgorithm_ = digestAlgorithm; }
+
+ void
+ setDigestAlgorithm(const uint8_t *digestAlgorithm, size_t digestAlgorithmLength)
+ {
+ digestAlgorithm_ = Blob(digestAlgorithm, digestAlgorithmLength);
+ }
+
+ void
+ setWitness(const std::vector<uint8_t>& witness) { witness_ = witness; }
+
+ void
+ setWitness(const uint8_t *witness, size_t witnessLength)
+ {
+ witness_ = Blob(witness, witnessLength);
+ }
+
+ void
+ setSignature(const std::vector<uint8_t>& signature) { signature_ = signature; }
+
+ void
+ setSignature(const uint8_t *signature, size_t signatureLength)
+ {
+ signature_ = Blob(signature, signatureLength);
+ }
+
+ /**
+ * Set signature to point to an existing byte array. IMPORTANT: After calling this,
+ * if you keep a pointer to the array then you must treat the array as immutable and promise not to change it.
+ * @param signature A pointer to a vector with the byte array. This takes another reference and does not copy the bytes.
+ */
+ void
+ setSignature(const ptr_lib::shared_ptr<std::vector<uint8_t> > &signature) { signature_ = signature; }
+
+ void
+ setSignature(const ptr_lib::shared_ptr<const std::vector<uint8_t> > &signature) { signature_ = signature; }
+
+ void
+ setPublisherPublicKeyDigest(const PublisherPublicKeyDigest& publisherPublicKeyDigest) { publisherPublicKeyDigest_ = publisherPublicKeyDigest; }
+
+ void
+ setKeyLocator(const KeyLocator& keyLocator) { keyLocator_ = keyLocator; }
+
+ /**
+ * Clear all the fields.
+ */
+ void
+ clear()
+ {
+ digestAlgorithm_.reset();
+ witness_.reset();
+ signature_.reset();
+ publisherPublicKeyDigest_.clear();
+ keyLocator_.clear();
+ }
+
+private:
+ Blob digestAlgorithm_; /**< if empty, the default is 2.16.840.1.101.3.4.2.1 (sha-256) */
+ Blob witness_;
+ Blob signature_;
+ PublisherPublicKeyDigest publisherPublicKeyDigest_;
+ KeyLocator keyLocator_;
+};
+
+}
+
+#endif