forked from cawka/ndn.cxx
diff --git a/ndn-cpp/fields/signed-blob.h b/ndn-cpp/fields/signed-blob.h
new file mode 100644
index 0000000..2686977
--- /dev/null
+++ b/ndn-cpp/fields/signed-blob.h
@@ -0,0 +1,98 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ * Alexander Afanasyev
+ * Zhenkai Zhu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ * Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef NDN_SIGNED_BLOB_H
+#define NDN_SIGNED_BLOB_H
+
+#include "blob.h"
+
+namespace ndn {
+
+/**
+ * @brief Class representing a blob, which has a signed portion (e.g., bytes of DATA packet)
+ */
+class SignedBlob : public Blob
+{
+public:
+ /**
+ * @brief Set signed portion of the blob
+ * @param offset An offset from the beginning of the blob
+ * @param size Size of the signed portion of the blob
+ */
+ inline void
+ setSignedPortion (size_t offset, size_t size);
+
+ /**
+ * @brief Get begin iterator to a signed portion of the blob
+ */
+ inline const_iterator
+ signed_begin () const;
+
+ /**
+ * @brief Get end iterator of a signed portion of the blob
+ */
+ inline const_iterator
+ signed_end () const;
+
+ /**
+ * @brief Get pointer to a first byte of the signed blob
+ */
+ inline const char*
+ signed_buf () const;
+
+ /**
+ * @brief Get size of the signed blob
+ */
+ inline size_t
+ signed_size () const;
+
+private:
+ const_iterator m_signedBegin;
+ const_iterator m_signedEnd;
+};
+
+
+inline void
+SignedBlob::setSignedPortion (size_t offset, size_t size)
+{
+ m_signedBegin = begin () + offset;
+ m_signedEnd = begin () + offset + size;
+}
+
+inline SignedBlob::const_iterator
+SignedBlob::signed_begin () const
+{
+ return m_signedBegin;
+}
+
+inline SignedBlob::const_iterator
+SignedBlob::signed_end () const
+{
+ return m_signedEnd;
+}
+
+inline const char*
+SignedBlob::signed_buf () const
+{
+ return &*m_signedBegin;
+}
+
+inline size_t
+SignedBlob::signed_size () const
+{
+ return m_signedEnd - m_signedBegin;
+}
+
+
+} // ndn
+
+#endif // NDN_SIGNED_BLOB_H