diff --git a/ndn-cpp/c/encoding/binary-xml-data.c b/ndn-cpp/c/encoding/binary-xml-data.c
index 4533fd0..b2d391a 100644
--- a/ndn-cpp/c/encoding/binary-xml-data.c
+++ b/ndn-cpp/c/encoding/binary-xml-data.c
@@ -129,7 +129,8 @@
   return NDN_ERROR_success;
 }
 
-ndn_Error ndn_encodeBinaryXmlData(struct ndn_Data *data, struct ndn_BinaryXmlEncoder *encoder)
+ndn_Error ndn_encodeBinaryXmlData
+  (struct ndn_Data *data, unsigned int *signedFieldsBeginOffset, unsigned int *signedFieldsEndOffset, struct ndn_BinaryXmlEncoder *encoder)
 {
   ndn_Error error;
   if ((error = ndn_BinaryXmlEncoder_writeElementStartDTag(encoder, ndn_BinaryXml_DTag_ContentObject)))
@@ -137,17 +138,21 @@
   
   if ((error = encodeSignature(&data->signature, encoder)))
     return NDN_ERROR_success;
+  
+  *signedFieldsBeginOffset = encoder->offset;
 
   if ((error = ndn_encodeBinaryXmlName(&data->name, encoder)))
     return error;
-
+  
   if ((error = encodeSignedInfo(&data->signedInfo, encoder)))
     return NDN_ERROR_success;
 
   if ((error = ndn_BinaryXmlEncoder_writeBlobDTagElement
       (encoder, ndn_BinaryXml_DTag_Content, data->content, data->contentLength)))
     return error;
-  
+
+  *signedFieldsEndOffset = encoder->offset;
+
   if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
     return error;
   
diff --git a/ndn-cpp/c/encoding/binary-xml-data.h b/ndn-cpp/c/encoding/binary-xml-data.h
index 32c0cfb..df77d69 100644
--- a/ndn-cpp/c/encoding/binary-xml-data.h
+++ b/ndn-cpp/c/encoding/binary-xml-data.h
@@ -15,7 +15,18 @@
 extern "C" {
 #endif
 
-ndn_Error ndn_encodeBinaryXmlData(struct ndn_Data *data, struct ndn_BinaryXmlEncoder *encoder);
+/**
+ * Encode the data as binary XML.
+ * @param data Pointer to the data object the encode.
+ * @param signedFieldsBeginOffset Return the offset in the encoding of the beginning of the fields which are signed.
+ * If you are not encoding in order to sign, you can ignore this.
+ * @param signedFieldsEndOffset Return the offset in the encoding of the end of the fields which are signed.
+ * If you are not encoding in order to sign, you can ignore this.
+ * @param encoder Pointer to the encoder object which receives the encoding. 
+ * @return 
+ */
+ndn_Error ndn_encodeBinaryXmlData
+  (struct ndn_Data *data, unsigned int *signedFieldsBeginOffset, unsigned int *signedFieldsEndOffset, struct ndn_BinaryXmlEncoder *encoder);
 
 ndn_Error ndn_decodeBinaryXmlData(struct ndn_Data *data, struct ndn_BinaryXmlDecoder *decoder);
 
diff --git a/ndn-cpp/encoding/binary-xml-wire-format.cpp b/ndn-cpp/encoding/binary-xml-wire-format.cpp
index 7556777..3ef731c 100644
--- a/ndn-cpp/encoding/binary-xml-wire-format.cpp
+++ b/ndn-cpp/encoding/binary-xml-wire-format.cpp
@@ -33,7 +33,9 @@
   interest.get(interestStruct);
 
   BinaryXmlEncoder encoder;
-  ndn_encodeBinaryXmlInterest(&interestStruct, &encoder);
+  ndn_Error error;
+  if ((error = ndn_encodeBinaryXmlInterest(&interestStruct, &encoder)))
+    throw std::runtime_error(ndn_getErrorString(error));
      
   return encoder.getOutput();
 }
@@ -64,7 +66,10 @@
   data.get(dataStruct);
 
   BinaryXmlEncoder encoder;
-  ndn_encodeBinaryXmlData(&dataStruct, &encoder);
+  unsigned int dummyBeginOffset, dummyEndOffset;
+  ndn_Error error;
+  if ((error = ndn_encodeBinaryXmlData(&dataStruct, &dummyBeginOffset, &dummyEndOffset, &encoder)))
+    throw std::runtime_error(ndn_getErrorString(error));
      
   return encoder.getOutput();
 }
