ECIES: add ECIES-KEM. This version supports HKDF and ECDH with NIST curves.

Change-Id: I5af3215e96bb015049574aa18327cd7f7499dbd3
diff --git a/hkdf_test.cpp b/hkdf_test.cpp
index f65a617..8cf1e8d 100644
--- a/hkdf_test.cpp
+++ b/hkdf_test.cpp
@@ -65,20 +65,19 @@
 };
 
 TEST(HkdfTest, Hkdf) {
-    for (size_t i = 0; i < 3; i++) {
-        const HkdfTest& test(kHkdfTests[i]);
+    for (auto& test : kHkdfTests) {
         const string key = hex2str(test.key_hex);
         const string salt = hex2str(test.salt_hex);
         const string info = hex2str(test.info_hex);
         const string expected = hex2str(test.output_hex);
-        keymaster_error_t error;
         // We set the key_length to the length of the expected output and then take
         // the result.
-        Rfc5869HmacSha256Kdf hkdf(reinterpret_cast<const uint8_t*>(key.data()), key.size(),
-                                  reinterpret_cast<const uint8_t*>(salt.data()), salt.size(),
-                                  reinterpret_cast<const uint8_t*>(info.data()), info.size(),
-                                  expected.size(), &error);
-        ASSERT_EQ(error, KM_ERROR_OK);
+        Rfc5869Sha256Kdf hkdf;
+        ASSERT_TRUE(hkdf.Init(reinterpret_cast<const uint8_t*>(key.data()), key.size(),
+                              reinterpret_cast<const uint8_t*>(salt.data()), salt.size(),
+                              reinterpret_cast<const uint8_t*>(info.data()), info.size(),
+                              expected.size()));
+
         Buffer secret_key;
         bool result = hkdf.secret_key(&secret_key);
         ASSERT_TRUE(result);