security: Adding supports to signed interest
refs: #1161
Change-Id: I042381b171d44417f296397d872cd639935a89e9
diff --git a/src/encoding/block.cpp b/src/encoding/block.cpp
index f881c8e..bad73a2 100644
--- a/src/encoding/block.cpp
+++ b/src/encoding/block.cpp
@@ -245,4 +245,27 @@
Tlv::readVarNumber(m_value_begin, m_value_end);
}
+Block
+Block::blockFromValue() const
+{
+ if (value_size()==0)
+ throw Error("Underlying value buffer is empty");
+
+ Buffer::const_iterator begin = value_begin(),
+ end = value_end();
+
+ Buffer::const_iterator element_begin = begin;
+
+ uint32_t type = Tlv::readType(begin, end);
+ uint64_t length = Tlv::readVarNumber(begin, end);
+
+ if (end-begin != length)
+ throw Tlv::Error("TLV length mismatches buffer length");
+
+ return Block(m_buffer,
+ type,
+ element_begin, end,
+ begin, end);
+}
+
} // namespace ndn
diff --git a/src/encoding/block.hpp b/src/encoding/block.hpp
index a764dd1..9c2777d 100644
--- a/src/encoding/block.hpp
+++ b/src/encoding/block.hpp
@@ -184,6 +184,9 @@
inline size_t
value_size() const;
+ Block
+ blockFromValue() const;
+
protected:
ConstBufferPtr m_buffer;