Adding Encryptor class to encrypt content and place in Data packets.

Change-Id: Ie77fd51b58091bbbb182ab9197a58a55b183654c
Refs: #3014
diff --git a/tests/unit-tests/encrypted-content.t.cpp b/tests/unit-tests/encrypted-content.t.cpp
index 878d0e9..d462c93 100644
--- a/tests/unit-tests/encrypted-content.t.cpp
+++ b/tests/unit-tests/encrypted-content.t.cpp
@@ -39,7 +39,7 @@
       0x08, 0x07,
         0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, // 'locator'
   0x83, 0x01, // EncryptedAlgorithm
-    0x00,
+    0x03,
   0x85, 0x0a, // InitialVector
     0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
   0x84, 0x07, // EncryptedPayload
@@ -57,7 +57,7 @@
       0x08, 0x07,
         0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, // 'locator'
   0x83, 0x01, // EncryptedAlgorithm
-    0x00,
+    0x03,
   0x84, 0x07, // EncryptedPayload
     0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74
 };
@@ -74,28 +74,29 @@
 {
   EncryptedContent content;
   BOOST_CHECK_EQUAL(content.getAlgorithmType(), -1);
-  BOOST_CHECK_EQUAL(content.getPayload() == nullptr, true);
-  BOOST_CHECK_EQUAL(content.getInitialVector() == nullptr, true);
+  BOOST_CHECK_EQUAL((content.getPayload()).size(), 0);
+  BOOST_CHECK_EQUAL((content.getInitialVector()).size(), 0);
   BOOST_CHECK_EQUAL(content.hasKeyLocator(), false);
   BOOST_CHECK_THROW(content.getKeyLocator(), EncryptedContent::Error);
 
-  ConstBufferPtr payload = make_shared<Buffer>(message, sizeof(message));
-  ConstBufferPtr initialVector = make_shared<Buffer>(iv, sizeof(iv));
+  Buffer payload(message, sizeof(message));
+  //Buffer initialVector(iv, sizeof(iv));
 
   KeyLocator keyLocator("test/key/locator");
-  EncryptedContent sha256RsaContent(tlv::AlgorithmSha256WithRsa, keyLocator, payload, initialVector);
-  ConstBufferPtr contentPayload = sha256RsaContent.getPayload();
-  ConstBufferPtr contentInitialVector = sha256RsaContent.getInitialVector();
+  EncryptedContent sha256RsaContent(tlv::AlgorithmRsaOaep, keyLocator,
+                                    message, sizeof(message), iv, sizeof(iv));
+  const Buffer& contentPayload = sha256RsaContent.getPayload();
+  const Buffer& contentInitialVector = sha256RsaContent.getInitialVector();
 
-  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmSha256WithRsa);
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload->begin(),
-                                contentPayload->end(),
-                                payload->begin(),
-                                payload->end());
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVector->begin(),
-                                contentInitialVector->end(),
-                                initialVector->begin(),
-                                initialVector->end());
+  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmRsaOaep);
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload.begin(),
+                                contentPayload.end(),
+                                payload.begin(),
+                                payload.end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVector.begin(),
+                                contentInitialVector.end(),
+                                iv,
+                                iv + sizeof(iv));
   BOOST_CHECK_EQUAL(sha256RsaContent.hasKeyLocator(), true);
   BOOST_CHECK_NO_THROW(sha256RsaContent.getKeyLocator());
   BOOST_CHECK_EQUAL(sha256RsaContent.getKeyLocator().getName(), Name("test/key/locator"));
@@ -109,30 +110,32 @@
                                 encoded.wire() + encoded.size());
 
   sha256RsaContent = EncryptedContent(encryptedBlock);
-  contentPayload = sha256RsaContent.getPayload();
-  contentInitialVector = sha256RsaContent.getInitialVector();
+  const Buffer& contentPayloadBlock = sha256RsaContent.getPayload();
+  const Buffer& contentInitialVectorBlock = sha256RsaContent.getInitialVector();
 
-  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmSha256WithRsa);
+  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmRsaOaep);
   BOOST_CHECK_EQUAL(sha256RsaContent.hasKeyLocator(), true);
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload->begin(),
-                                contentPayload->end(),
-                                payload->begin(),
-                                payload->end());
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVector->begin(),
-                                contentInitialVector->end(),
-                                initialVector->begin(),
-                                initialVector->end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayloadBlock.begin(),
+                                contentPayloadBlock.end(),
+                                payload.begin(),
+                                payload.end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVectorBlock.begin(),
+                                contentInitialVectorBlock.end(),
+                                iv,
+                                iv + sizeof(iv));
   BOOST_CHECK_NO_THROW(sha256RsaContent.getKeyLocator());
   BOOST_CHECK_EQUAL(sha256RsaContent.getKeyLocator().getName(), Name("test/key/locator"));
 
-  sha256RsaContent = EncryptedContent(tlv::AlgorithmSha256WithRsa, keyLocator, payload);
+  sha256RsaContent = EncryptedContent(tlv::AlgorithmRsaOaep, keyLocator,
+                                      message, sizeof(message));
+  const Buffer& contentPayloadRecovered = sha256RsaContent.getPayload();
 
-  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmSha256WithRsa);
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload->begin(),
-                                contentPayload->end(),
-                                payload->begin(),
-                                payload->end());
-  BOOST_CHECK_EQUAL(sha256RsaContent.getInitialVector() == nullptr, true);
+  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmRsaOaep);
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayloadRecovered.begin(),
+                                contentPayloadRecovered.end(),
+                                payload.begin(),
+                                payload.end());
+  BOOST_CHECK_EQUAL((sha256RsaContent.getInitialVector()).size(), 0);
   BOOST_CHECK_EQUAL(sha256RsaContent.hasKeyLocator(), true);
   BOOST_CHECK_NO_THROW(sha256RsaContent.getKeyLocator());
   BOOST_CHECK_EQUAL(sha256RsaContent.getKeyLocator().getName(), Name("test/key/locator"));
@@ -146,15 +149,15 @@
                                 encodedNoIV.wire() + encodedNoIV.size());
 
   sha256RsaContent = EncryptedContent(encryptedBlock);
-  contentPayload = sha256RsaContent.getPayload();
+  const Buffer& contentPayloadNoIV = sha256RsaContent.getPayload();
 
-  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmSha256WithRsa);
+  BOOST_CHECK_EQUAL(sha256RsaContent.getAlgorithmType(), tlv::AlgorithmRsaOaep);
   BOOST_CHECK_EQUAL(sha256RsaContent.hasKeyLocator(), true);
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload->begin(),
-                                contentPayload->end(),
-                                payload->begin(),
-                                payload->end());
-  BOOST_CHECK_EQUAL(sha256RsaContent.getInitialVector() == nullptr, true);
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayloadNoIV.begin(),
+                                contentPayloadNoIV.end(),
+                                payload.begin(),
+                                payload.end());
+  BOOST_CHECK_EQUAL((sha256RsaContent.getInitialVector()).size(), 0);
   BOOST_CHECK_NO_THROW(sha256RsaContent.getKeyLocator());
   BOOST_CHECK_EQUAL(sha256RsaContent.getKeyLocator().getName(), Name("test/key/locator"));
 
@@ -173,7 +176,7 @@
           0x08, 0x07,
             0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
       0x83, 0x01, // EncryptedAlgorithm
-        0x00,
+        0x03,
       0x85, 0x0a, // InitialVector
         0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
       0x84, 0x07, // EncryptedPayload
@@ -193,7 +196,7 @@
           0x08, 0x07,
             0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
       0x83, 0x01, // EncryptedAlgorithm
-        0x00,
+        0x03,
       0x85, 0x0a, // InitialVector
         0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
       0x84, 0x07, // EncryptedPayload
@@ -213,7 +216,7 @@
           0x08, 0x07,
             0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
       0x1d, 0x01, // Wrong EncryptedAlgorithm (0x83, 0x01)
-        0x00,
+        0x03,
       0x85, 0x0a, // InitialVector
         0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
       0x84, 0x07, // EncryptedPayload
@@ -233,7 +236,7 @@
           0x08, 0x07,
             0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, // 'locator'
       0x83, 0x01, // EncryptedAlgorithm
-        0x00,
+        0x03,
       0x1f, 0x0a, // InitialVector (0x84, 0x0a)
         0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
       0x84, 0x07, // EncryptedPayload
@@ -253,7 +256,7 @@
           0x08, 0x07,
             0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, // 'locator'
       0x83, 0x01, // EncryptedAlgorithm
-        0x00,
+        0x03,
       0x85, 0x0a, // InitialVector
         0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x62, 0x69, 0x74, 0x73,
       0x21, 0x07, // EncryptedPayload (0x85, 0x07)
@@ -273,15 +276,15 @@
 {
   EncryptedContent content;
   BOOST_CHECK_EQUAL(content.getAlgorithmType(), -1);
-  BOOST_CHECK_EQUAL(content.getPayload() == nullptr, true);
-  BOOST_CHECK_EQUAL(content.getInitialVector() == nullptr, true);
+  BOOST_CHECK_EQUAL((content.getPayload()).size(), 0);
+  BOOST_CHECK_EQUAL((content.getInitialVector()).size(), 0);
   BOOST_CHECK_EQUAL(content.hasKeyLocator(), false);
   BOOST_CHECK_THROW(content.getKeyLocator(), EncryptedContent::Error);
 
-  content.setAlgorithmType(tlv::AlgorithmSha256WithRsa);
-  BOOST_CHECK_EQUAL(content.getAlgorithmType(), tlv::AlgorithmSha256WithRsa);
-  BOOST_CHECK_EQUAL(content.getPayload() == nullptr, true);
-  BOOST_CHECK_EQUAL(content.getInitialVector() == nullptr, true);
+  content.setAlgorithmType(tlv::AlgorithmRsaOaep);
+  BOOST_CHECK_EQUAL(content.getAlgorithmType(), tlv::AlgorithmRsaOaep);
+  BOOST_CHECK_EQUAL((content.getPayload()).size(), 0);
+  BOOST_CHECK_EQUAL(content.getInitialVector().size(), 0);
   BOOST_CHECK_EQUAL(content.hasKeyLocator(), false);
 
   KeyLocator keyLocator("/test/key/locator");
@@ -289,26 +292,24 @@
   BOOST_CHECK_EQUAL(content.hasKeyLocator(), true);
   BOOST_CHECK_NO_THROW(content.getKeyLocator());
   BOOST_CHECK_EQUAL(content.getKeyLocator().getName(), Name("/test/key/locator"));
-  BOOST_CHECK_EQUAL(content.getPayload() == nullptr, true);
-  BOOST_CHECK_EQUAL(content.getInitialVector() == nullptr, true);
+  BOOST_CHECK_EQUAL((content.getPayload()).size(), 0);
+  BOOST_CHECK_EQUAL((content.getInitialVector()).size(), 0);
 
-  ConstBufferPtr payload = make_shared<Buffer>(message, sizeof(message));
-  content.setPayload(payload);
+  content.setPayload(message, sizeof(message));
 
-  ConstBufferPtr contentPayload = content.getPayload();
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload->begin(),
-                                contentPayload->end(),
-                                payload->begin(),
-                                payload->end());
+  const Buffer& contentPayload = content.getPayload();
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentPayload.begin(),
+                                contentPayload.end(),
+                                message,
+                                message + sizeof(message));
 
-  ConstBufferPtr initialVector = make_shared<Buffer>(iv, sizeof(iv));
-  content.setInitialVector(initialVector);
+  content.setInitialVector(iv, sizeof(iv));
 
-  ConstBufferPtr contentInitialVector = content.getInitialVector();
-  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVector->begin(),
-                                contentInitialVector->end(),
-                                initialVector->begin(),
-                                initialVector->end());
+  const Buffer& contentInitialVector = content.getInitialVector();
+  BOOST_CHECK_EQUAL_COLLECTIONS(contentInitialVector.begin(),
+                                contentInitialVector.end(),
+                                iv,
+                                iv + sizeof(iv));
 
   const Block& encoded = content.wireEncode();
   Block contentBlock(encrypted, sizeof(encrypted));