diff --git a/model/wire/ccnb/wire-ccnb.cc b/model/wire/ccnb/wire-ccnb.cc
index e3a9ef1..7b92408 100644
--- a/model/wire/ccnb/wire-ccnb.cc
+++ b/model/wire/ccnb/wire-ccnb.cc
@@ -15,7 +15,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu> 
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
  */
 
 #include "wire-ccnb.h"
@@ -92,7 +92,7 @@
   os << number;
   return EstimateBlockHeader (os.str ().size ()) + os.str ().size ();
 }
-  
+
 size_t
 Ccnb::AppendCloser (Buffer::Iterator &start)
 {
@@ -110,7 +110,7 @@
   intmax_t ts = time.ToInteger (Time::S) >> 4;
   for (;  required_bytes < 7 && ts != 0; ts >>= 8) // not more than 6 bytes?
      required_bytes++;
-  
+
   size_t len = AppendBlockHeader(start, required_bytes, CcnbParser::CCN_BLOB);
 
   // write part with seconds
@@ -123,7 +123,7 @@
        (((time.ToInteger (Time::NS) % 1000000000) / 5 * 8 + 195312) / 390625);
   for (int i = required_bytes - 2; i < required_bytes; i++)
     start.WriteU8 ( ts >> (8 * (required_bytes - 1 - i)) );
-  
+
   return len + required_bytes;
 }
 
@@ -158,6 +158,35 @@
 }
 
 size_t
+Ccnb::AppendTaggedBlobWithPadding (Buffer::Iterator &start, uint32_t dtag,
+                                   uint32_t length,
+                                   const uint8_t *data, size_t size)
+{
+  if (size > length)
+    {
+      // no padding required
+      return AppendTaggedBlob (start, dtag, data, size);
+    }
+
+
+  size_t written = AppendBlockHeader (start, dtag, CcnbParser::CCN_DTAG);
+
+  /* 2 */
+  if (length>0)
+    {
+      written += AppendBlockHeader (start, length, CcnbParser::CCN_BLOB);
+      start.Write (data, size);
+      start.WriteU8 (0, length - size);
+      written += length;
+      /* size */
+    }
+  written += AppendCloser (start);
+  /* 1 */
+
+  return written;
+}
+
+size_t
 Ccnb::EstimateTaggedBlob (uint32_t dtag, size_t size)
 {
   if (size>0)
