diff --git a/src/encoding/block.cpp b/src/encoding/block.cpp
index 37b2e6f..3451ffd 100644
--- a/src/encoding/block.cpp
+++ b/src/encoding/block.cpp
@@ -70,7 +70,8 @@
 }
 
 Block::Block(const ConstBufferPtr &buffer,
-             const Buffer::const_iterator &begin, const Buffer::const_iterator &end)
+             const Buffer::const_iterator &begin, const Buffer::const_iterator &end,
+             bool verifyLength/* = true*/)
   : m_buffer(buffer)
   , m_begin(begin)
   , m_end(end)
@@ -80,10 +81,13 @@
   m_value_end   = m_end;
 
   m_type = Tlv::readType(m_value_begin, m_value_end);
-  uint64_t length = Tlv::readVarNumber(m_value_begin, m_value_end);
-  if (length != static_cast<uint64_t>(m_value_end - m_value_begin))
+  if (verifyLength)
     {
-      throw Tlv::Error("TLV length doesn't match buffer length");
+      uint64_t length = Tlv::readVarNumber(m_value_begin, m_value_end);
+      if (length != static_cast<uint64_t>(m_value_end - m_value_begin))
+        {
+          throw Tlv::Error("TLV length doesn't match buffer length");
+        }
     }
 }
 
diff --git a/src/encoding/block.hpp b/src/encoding/block.hpp
index 895df49..52ed7e7 100644
--- a/src/encoding/block.hpp
+++ b/src/encoding/block.hpp
@@ -56,7 +56,8 @@
    * This version will automatically detect type and position of the value within the block
    */
   Block(const ConstBufferPtr &buffer,
-        const Buffer::const_iterator &begin, const Buffer::const_iterator &end);
+        const Buffer::const_iterator &begin, const Buffer::const_iterator &end,
+        bool verifyLength = true);
   
   /**
    * @brief A helper version of a constructor to create Block from the raw buffer (type and value-length parsing)
diff --git a/src/encoding/encoding-buffer.hpp b/src/encoding/encoding-buffer.hpp
index 1659c52..b46225b 100644
--- a/src/encoding/encoding-buffer.hpp
+++ b/src/encoding/encoding-buffer.hpp
@@ -85,8 +85,15 @@
   inline const uint8_t*
   buf () const;
 
+  /**
+   * @brief Create Block from the underlying EncodingBuffer
+   *
+   * @param verifyLength If this parameter set to true, Block's constructor
+   *                     will be requested to verify consistency of the encoded
+   *                     length in the Block, otherwise ignored
+   */
   inline Block
-  block () const;
+  block (bool verifyLength = true) const;
 
   inline void
   resize (size_t sz, bool addInFront);
@@ -218,10 +225,11 @@
 }
 
 inline Block
-EncodingImpl<encoding::Buffer>::block () const
+EncodingImpl<encoding::Buffer>::block (bool verifyLength/* = true*/) const
 {
   return Block(m_buffer,
-               m_begin, m_end);
+               m_begin, m_end,
+               verifyLength);
 }
 
 inline void
