security: improve pretty-printing of certificates

Change-Id: Ib81a39bab35f3537df086d47d185907daaa1f426
diff --git a/tests/unit/security/transform/public-key.t.cpp b/tests/unit/security/transform/public-key.t.cpp
index c888482..e844293 100644
--- a/tests/unit/security/transform/public-key.t.cpp
+++ b/tests/unit/security/transform/public-key.t.cpp
@@ -43,7 +43,9 @@
 
 struct RsaKeyTestData
 {
-  const std::string publicKeyPkcs8 =
+  static constexpr KeyType type = KeyType::RSA;
+  static constexpr size_t size = 2048;
+  const std::string pkcs8Base64 =
       "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw0WM1/WhAxyLtEqsiAJg\n"
       "WDZWuzkYpeYVdeeZcqRZzzfRgBQTsNozS5t4HnwTZhwwXbH7k3QN0kRTV826Xobw\n"
       "s3iigohnM9yTK+KKiayPhIAm/+5HGT6SgFJhYhqo1/upWdueojil6RP4/AgavHho\n"
@@ -52,10 +54,14 @@
       "9rH58ynaAix0tcR/nBMRLUX+e3rURHg6UbSjJbdb9qmKM1fTGHKUzL/5pMG6uBU0\n"
       "ywIDAQAB\n";
 };
+constexpr KeyType RsaKeyTestData::type;
+constexpr size_t RsaKeyTestData::size;
 
 struct EcKeyTestData
 {
-  const std::string publicKeyPkcs8 =
+  static constexpr KeyType type = KeyType::EC;
+  static constexpr size_t size = 256;
+  const std::string pkcs8Base64 =
       "MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAA\n"
       "AAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA////\n"
       "///////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSd\n"
@@ -64,23 +70,28 @@
       "//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABGhuFibgwLdEJBDOLdvSg1Hc\n"
       "5EJTDxq6ls5FoYLfThp8HOjuwGSz0qw8ocMqyku1y0V5peQ4rEPd0bwcpZd9svA=\n";
 };
+constexpr KeyType EcKeyTestData::type;
+constexpr size_t EcKeyTestData::size;
 
 using KeyTestDataSets = boost::mpl::vector<RsaKeyTestData, EcKeyTestData>;
 
-BOOST_AUTO_TEST_CASE_TEMPLATE(SaveLoad, T, KeyTestDataSets)
+BOOST_AUTO_TEST_CASE_TEMPLATE(LoadAndSave, T, KeyTestDataSets)
 {
   T dataSet;
 
-  auto pKeyPkcs8Base64 = make_span(reinterpret_cast<const uint8_t*>(dataSet.publicKeyPkcs8.data()),
-                                   dataSet.publicKeyPkcs8.size());
+  auto pKeyPkcs8Base64 = make_span(reinterpret_cast<const uint8_t*>(dataSet.pkcs8Base64.data()),
+                                   dataSet.pkcs8Base64.size());
   OBufferStream os;
   bufferSource(pKeyPkcs8Base64) >> base64Decode() >> streamSink(os);
   auto pKeyPkcs8 = os.buf();
 
+  // Load
   PublicKey pKey1;
   BOOST_CHECK_NO_THROW(pKey1.loadPkcs8Base64(pKeyPkcs8Base64));
+  BOOST_TEST(pKey1.getKeyType() == T::type);
+  BOOST_TEST(pKey1.getKeySize() == T::size);
 
-  std::stringstream ss2(dataSet.publicKeyPkcs8);
+  std::stringstream ss2(dataSet.pkcs8Base64);
   PublicKey pKey2;
   BOOST_CHECK_NO_THROW(pKey2.loadPkcs8Base64(ss2));
 
@@ -92,15 +103,14 @@
   PublicKey pKey4;
   BOOST_CHECK_NO_THROW(pKey4.loadPkcs8(ss4));
 
+  // Save
   OBufferStream os5;
   BOOST_REQUIRE_NO_THROW(pKey1.savePkcs8Base64(os5));
-  BOOST_CHECK_EQUAL_COLLECTIONS(pKeyPkcs8Base64.begin(), pKeyPkcs8Base64.end(),
-                                os5.buf()->begin(), os5.buf()->end());
+  BOOST_TEST(*os5.buf() == pKeyPkcs8Base64, boost::test_tools::per_element());
 
   OBufferStream os6;
   BOOST_REQUIRE_NO_THROW(pKey1.savePkcs8(os6));
-  BOOST_CHECK_EQUAL_COLLECTIONS(pKeyPkcs8->begin(), pKeyPkcs8->end(),
-                                os6.buf()->begin(), os6.buf()->end());
+  BOOST_TEST(*os6.buf() == *pKeyPkcs8, boost::test_tools::per_element());
 }
 
 // NOTE: We cannot test RSA encryption by comparing the computed ciphertext to
@@ -113,9 +123,8 @@
   EcKeyTestData dataSet;
 
   PublicKey pKey;
-  pKey.loadPkcs8Base64({reinterpret_cast<const uint8_t*>(dataSet.publicKeyPkcs8.data()),
-                        dataSet.publicKeyPkcs8.size()});
-  BOOST_CHECK_EQUAL(pKey.getKeyType(), KeyType::EC);
+  pKey.loadPkcs8Base64({reinterpret_cast<const uint8_t*>(dataSet.pkcs8Base64.data()),
+                        dataSet.pkcs8Base64.size()});
 
   OBufferStream os;
   bufferSource("Y2lhbyFob2xhIWhlbGxvIQ==") >> base64Decode() >> streamSink(os);