security: Add ECDSA signature signing and validation

Change-Id: I2f193e9d643498a68579ae59a7f524ff446dcb9e
Refs: #1660
diff --git a/src/security/sec-public-info-sqlite3.cpp b/src/security/sec-public-info-sqlite3.cpp
index a690bef..7e86773 100644
--- a/src/security/sec-public-info-sqlite3.cpp
+++ b/src/security/sec-public-info-sqlite3.cpp
@@ -27,6 +27,7 @@
 #include "sec-public-info-sqlite3.hpp"
 #include "identity-certificate.hpp"
 #include "signature-sha256-with-rsa.hpp"
+#include "signature-sha256-with-ecdsa.hpp"
 #include "../data.hpp"
 
 #include <sqlite3.h>
@@ -479,10 +480,27 @@
     {
       // this will throw an exception if the signature is not the standard one
       // or there is no key locator present
-      SignatureSha256WithRsa signature(certificate.getSignature());
-      std::string signerName = signature.getKeyLocator().getName().toUri();
+      switch (certificate.getSignature().getType())
+        {
+        case Tlv::SignatureSha256WithRsa:
+          {
+            SignatureSha256WithRsa signature(certificate.getSignature());
+            std::string signerName = signature.getKeyLocator().getName().toUri();
 
-      sqlite3_bind_text(statement, 2, signerName, SQLITE_STATIC);
+            sqlite3_bind_text(statement, 2, signerName, SQLITE_STATIC);
+            break;
+          }
+        case Tlv::SignatureSha256WithEcdsa:
+          {
+            SignatureSha256WithEcdsa signature(certificate.getSignature());
+            std::string signerName = signature.getKeyLocator().getName().toUri();
+
+            sqlite3_bind_text(statement, 2, signerName, SQLITE_STATIC);
+            break;
+          }
+        default:
+          return;
+        }
     }
   catch (std::runtime_error& e)
     {