Adding optional initial vector to EncryptedContent

Refs: #3013

Change-Id: I1c6fea3552796d13525d33e3a9d385156e2d463e
diff --git a/src/encrypted-content.hpp b/src/encrypted-content.hpp
index 2d0203e..c31d705 100644
--- a/src/encrypted-content.hpp
+++ b/src/encrypted-content.hpp
@@ -26,7 +26,8 @@
 public:
   EncryptedContent();
 
-  EncryptedContent(tlv::AlgorithmTypeValue type, const KeyLocator& keyLocator, const ConstBufferPtr& payload);
+  EncryptedContent(tlv::AlgorithmTypeValue type, const KeyLocator& keyLocator,
+                   ConstBufferPtr payload, ConstBufferPtr iv = nullptr);
 
   explicit
   EncryptedContent(const Block& block);
@@ -53,9 +54,15 @@
   getKeyLocator() const;
 
   void
-  setPayload(const ConstBufferPtr& payload);
+  setInitialVector(ConstBufferPtr iv);
 
-  const ConstBufferPtr
+  ConstBufferPtr
+  getInitialVector() const;
+
+  void
+  setPayload(ConstBufferPtr payload);
+
+  ConstBufferPtr
   getPayload() const;
 
   template<encoding::Tag TAG>
@@ -82,6 +89,7 @@
   bool m_hasKeyLocator;
   KeyLocator m_keyLocator;
   ConstBufferPtr m_payload;
+  ConstBufferPtr m_iv;
 
   mutable Block m_wire;
 };