diff --git a/tests/unit-tests/security/v1/sec-tpm-file.t.cpp b/tests/unit-tests/security/v1/sec-tpm-file.t.cpp
index 79e3645..54518d8 100644
--- a/tests/unit-tests/security/v1/sec-tpm-file.t.cpp
+++ b/tests/unit-tests/security/v1/sec-tpm-file.t.cpp
@@ -252,7 +252,7 @@
 
   Name keyName("/TestSecTpmFile/EcdsaSigning/ksk-" +
                boost::lexical_cast<std::string>(time::toUnixTimestamp(time::system_clock::now())));
-  EcdsaKeyParams params;
+  EcKeyParams params;
   BOOST_CHECK_NO_THROW(tpm.generateKeyPairInTpm(keyName, params));
 
   Data data("/TestSecTpmFile/EcdsaSigning/Data/1");
@@ -293,7 +293,7 @@
 }
 
 
-BOOST_AUTO_TEST_CASE(ImportExportEcdsaKey)
+BOOST_AUTO_TEST_CASE(ImportExportEcKey)
 {
   using namespace CryptoPP;
 
@@ -309,7 +309,7 @@
 
   SecTpmFile tpm;
 
-  Name keyName("/TestSecTpmFile/ImportExportEcdsaKey/ksk-" +
+  Name keyName("/TestSecTpmFile/ImportExportEcKey/ksk-" +
                boost::lexical_cast<std::string>(time::toUnixTimestamp(time::system_clock::now())));
 
   BOOST_REQUIRE_EQUAL(tpm.doesKeyExistInTpm(keyName, KeyClass::PRIVATE), false);
@@ -336,16 +336,16 @@
     {
       using namespace CryptoPP;
 
-      ECDSA<ECP, SHA256>::PublicKey ecdsaPublicKey;
+      ECDSA<ECP, SHA256>::PublicKey ecPublicKey;
       ByteQueue queue;
       queue.Put(reinterpret_cast<const byte*>(publicKey->get().buf()), publicKey->get().size());
-      ecdsaPublicKey.Load(queue);
+      ecPublicKey.Load(queue);
 
       uint8_t buffer[64];
       size_t usedSize = DSAConvertSignatureFormat(buffer, 64, DSA_P1363,
                                                   sigBlock.value(), sigBlock.value_size(), DSA_DER);
 
-      ECDSA<ECP, SHA256>::Verifier verifier(ecdsaPublicKey);
+      ECDSA<ECP, SHA256>::Verifier verifier(ecPublicKey);
       bool isVerified = verifier.VerifyMessage(content, sizeof(content),
                                                buffer, usedSize);
 
@@ -379,17 +379,17 @@
     {
       using namespace CryptoPP;
 
-      ECDSA<ECP, SHA256>::PublicKey ecdsaPublicKey;
+      ECDSA<ECP, SHA256>::PublicKey ecPublicKey;
       ByteQueue queue;
       queue.Put(reinterpret_cast<const byte*>(publicKey->get().buf()), publicKey->get().size());
-      ecdsaPublicKey.Load(queue);
+      ecPublicKey.Load(queue);
 
       uint8_t buffer[64];
       size_t usedSize = DSAConvertSignatureFormat(buffer, 64, DSA_P1363,
                                                   sigBlock2.value(), sigBlock2.value_size(),
                                                   DSA_DER);
 
-      ECDSA<ECP, SHA256>::Verifier verifier(ecdsaPublicKey);
+      ECDSA<ECP, SHA256>::Verifier verifier(ecPublicKey);
       bool isVerified = verifier.VerifyMessage(content2, sizeof(content2),
                                                buffer, usedSize);
 
