In WireFormat encodeData and decodeData, added args for signedFieldsBeginOffset and signedFieldsEndOffset.
diff --git a/ndn-cpp/encoding/wire-format.hpp b/ndn-cpp/encoding/wire-format.hpp
index c229131..e0ffdf0 100644
--- a/ndn-cpp/encoding/wire-format.hpp
+++ b/ndn-cpp/encoding/wire-format.hpp
@@ -19,8 +19,52 @@
virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeInterest(const Interest &interest);
virtual void decodeInterest(Interest &interest, const unsigned char *input, unsigned int inputLength);
- virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeData(const Data &data);
- virtual void decodeData(Data &data, const unsigned char *input, unsigned int inputLength);
+ /**
+ * Encode data and return the encoding. Your derived class should override.
+ * @param data The Data object to 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 call encodeData(const Data &data) to ignore this returned value.
+ * @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 call encodeData(const Data &data) to ignore this returned value.
+ * @return A shared_ptr with the vector<unsigned char> containing the encoding.
+ * @throw logic_error for unimplemented if the derived class does not override.
+ */
+ virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeData
+ (const Data &data, unsigned int *signedFieldsBeginOffset, unsigned int *signedFieldsEndOffset);
+
+ /**
+ * Encode data and return the encoding.
+ * @param data The Data object to encode.
+ * @return A shared_ptr with the vector<unsigned char> containing the encoding.
+ * @throw logic_error for unimplemented if the derived class does not override.
+ */
+ ptr_lib::shared_ptr<std::vector<unsigned char> > encodeData(const Data &data)
+ {
+ unsigned int dummyBeginOffset, dummyEndOffset;
+ return encodeData(data, &dummyBeginOffset, &dummyEndOffset);
+ }
+
+ /**
+ * Decode input as a data packet and set the fields in the data object. Your derived class should override.
+ * @param data The Data object whose fields are updated.
+ * @param input A pointer to the input buffer to decode.
+ * @param inputLength The number of bytes in input.
+ * @param signedFieldsBeginOffset Return the offset in the input buffer of the beginning of the fields which are signed.
+ * If you are not decoding in order to verify, you can call
+ * decodeData(Data &data, const unsigned char *input, unsigned int inputLength) to ignore this returned value.
+ * @param signedFieldsEndOffset Return the offset in the input buffer of the end of the fields which are signed.
+ * If you are not decoding in order to verify, you can call
+ * decodeData(Data &data, const unsigned char *input, unsigned int inputLength) to ignore this returned value.
+ * @throw logic_error for unimplemented if the derived class does not override.
+ */
+ virtual void decodeData
+ (Data &data, const unsigned char *input, unsigned int inputLength, unsigned int *signedFieldsBeginOffset, unsigned int *signedFieldsEndOffset);
+
+ void decodeData(Data &data, const unsigned char *input, unsigned int inputLength)
+ {
+ unsigned int dummyBeginOffset, dummyEndOffset;
+ decodeData(data, input, inputLength, &dummyBeginOffset, &dummyEndOffset);
+ }
/**
* Set the static default WireFormat used by default encoding and decoding methods.