diff --git a/tools/ndnsec-dsk-gen.hpp b/tools/ndnsec-dsk-gen.hpp
index 5288520..5c4f7f0 100644
--- a/tools/ndnsec-dsk-gen.hpp
+++ b/tools/ndnsec-dsk-gen.hpp
@@ -34,126 +34,151 @@
 
   std::string identityName;
   char keyType = 'r';
-  int keySize = 2048;
 
-  po::options_description description("General Usage\n  ndnsec dsk-gen [-h] identity\nGeneral options");
+  po::options_description description("General Usage\n"
+                                      "  ndnsec dsk-gen [-h] [-t keyType] identity\n"
+                                      "General options");
   description.add_options()
     ("help,h", "produce help message")
-    ("identity,i", po::value<std::string>(&identityName), "identity name, for example, /ndn/ucla.edu/alice")
-    // ("type,t", po::value<char>(&keyType)->default_value('r'), "optional, key type, r for RSA key (default)")
-    // ("size,s", po::value<int>(&keySize)->default_value(2048), "optional, key size, 2048 (default)")
+    ("identity,i", po::value<std::string>(&identityName),
+     "identity name, for example, /ndn/ucla.edu/alice")
+    ("type,t", po::value<char>(&keyType)->default_value('r'),
+     "optional, key type, r for RSA key (default), e for ECDSA key.")
+    // ("size,s", po::value<int>(&keySize)->default_value(2048),
+    //  "optional, key size, 2048 (default)")
     ;
 
   po::positional_options_description p;
   p.add("identity", 1);
 
   po::variables_map vm;
-  try
-    {
-      po::store(po::command_line_parser(argc, argv).options(description).positional(p).run(),
-                vm);
-      po::notify(vm);
-    }
-  catch (const std::exception& e)
-    {
-      std::cerr << "ERROR: " << e.what() << std::endl;
-      std::cerr << description << std::endl;
-      return 1;
-    }
+  try {
+    po::store(po::command_line_parser(argc, argv).options(description).positional(p).run(), vm);
+    po::notify(vm);
+  }
+  catch (const std::exception& e) {
+    std::cerr << "ERROR: " << e.what() << std::endl;
+    std::cerr << description << std::endl;
+    return 1;
+  }
 
-  if (vm.count("help") != 0)
-    {
-      std::cerr << description << std::endl;
-      return 0;
-    }
+  if (vm.count("help") != 0) {
+    std::cerr << description << std::endl;
+    return 0;
+  }
 
-  if (vm.count("identity") == 0)
-    {
-      std::cerr << "identity must be specified" << std::endl;
-      std::cerr << description << std::endl;
-      return 1;
-    }
+  if (vm.count("identity") == 0) {
+    std::cerr << "identity must be specified" << std::endl;
+    std::cerr << description << std::endl;
+    return 1;
+  }
 
   shared_ptr<IdentityCertificate> kskCert;
   Name signingCertName;
 
   KeyChain keyChain;
 
-  Name defaultCertName = keyChain.getDefaultCertificateNameForIdentity(identityName);
-  bool isDefaultDsk = false;
-  if (defaultCertName.get(-3).toUri().substr(0,4) == "dsk-")
-    isDefaultDsk = true;
-
-  if (isDefaultDsk)
-    {
-      shared_ptr<IdentityCertificate> dskCert = keyChain.getCertificate(defaultCertName);
-      SignatureSha256WithRsa sha256sig(dskCert->getSignature());
-
-      Name keyLocatorName = sha256sig.getKeyLocator().getName(); // will throw exception if keylocator is absent or it is not a name
-
-      Name kskName = IdentityCertificate::certificateNameToPublicKeyName(keyLocatorName);
-      Name kskCertName = keyChain.getDefaultCertificateNameForKey(kskName);
-      signingCertName = kskCertName;
-      kskCert = keyChain.getCertificate(kskCertName);
+  try {
+    Name defaultCertName = keyChain.getDefaultCertificateNameForIdentity(identityName);
+    bool isDefaultDsk = false;
+    std::string keyUsageTag = defaultCertName.get(-3).toUri().substr(0,4);
+    if (keyUsageTag == "ksk-")
+      isDefaultDsk = false;
+    else if (keyUsageTag == "dsk-")
+      isDefaultDsk = true;
+    else {
+      std::cerr << "ERROR: Unknown key usage tag: " << keyUsageTag << std::endl;
+      return 1;
     }
-  else
-    {
+
+    if (isDefaultDsk) {
+      shared_ptr<IdentityCertificate> dskCert = keyChain.getCertificate(defaultCertName);
+
+      if (static_cast<bool>(dskCert)) {
+        SignatureSha256WithRsa sha256sig(dskCert->getSignature());
+
+        Name keyLocatorName = sha256sig.getKeyLocator().getName();
+
+        Name kskName = IdentityCertificate::certificateNameToPublicKeyName(keyLocatorName);
+        Name kskCertName = keyChain.getDefaultCertificateNameForKey(kskName);
+        signingCertName = kskCertName;
+        kskCert = keyChain.getCertificate(kskCertName);
+      }
+      else {
+        std::cerr << "ERROR: The default certificate is missing." << std::endl;
+        return 1;
+      }
+    }
+    else {
       signingCertName = defaultCertName;
       kskCert = keyChain.getCertificate(defaultCertName);
     }
 
-  if (!static_cast<bool>(kskCert))
-    {
-      std::cerr << "ERROR: no KSK certificate." << std::endl;
+    if (!static_cast<bool>(kskCert)) {
+      std::cerr << "ERROR: KSK certificate is missing." << std::endl;
       return 1;
     }
 
-  Name newKeyName;
-  switch (keyType)
-    {
+    Name newKeyName;
+    switch (keyType) {
     case 'r':
       {
-        newKeyName = keyChain.generateRsaKeyPair(Name(identityName), false, keySize);
-        if (0 == newKeyName.size())
-          {
-            std::cerr << "fail to generate key!" << std::endl;
-            return 1;
-          }
+        RsaKeyParams params;
+        newKeyName = keyChain.generateRsaKeyPair(Name(identityName), false, params.getKeySize());
+        if (0 == newKeyName.size()) {
+          std::cerr << "ERROR: Fail to generate RSA key!" << std::endl;
+          return 1;
+        }
+        break;
+      }
+    case 'e':
+      {
+        EcdsaKeyParams params;
+        newKeyName = keyChain.generateEcdsaKeyPair(Name(identityName), false, params.getKeySize());
+        if (0 == newKeyName.size()) {
+          std::cerr << "ERROR: Fail to generate ECDSA key!" << std::endl;
+          return 1;
+        }
         break;
       }
     default:
-      std::cerr << "Unrecongized key type" << "\n";
+      std::cerr << "ERROR: Unrecongized key type" << "\n";
       std::cerr << description << std::endl;
       return 1;
     }
 
-  Name certName = newKeyName.getPrefix(-1);
-  certName.append("KEY")
-    .append(newKeyName.get(-1))
-    .append("ID-CERT")
-    .appendVersion();
+    Name certName = newKeyName.getPrefix(-1);
+    certName.append("KEY")
+      .append(newKeyName.get(-1))
+      .append("ID-CERT")
+      .appendVersion();
 
-  shared_ptr<IdentityCertificate> certificate = make_shared<IdentityCertificate>();
-  certificate->setName(certName);
-  certificate->setNotBefore(kskCert->getNotBefore());
-  certificate->setNotAfter(kskCert->getNotAfter());
+    shared_ptr<IdentityCertificate> certificate =
+      keyChain.prepareUnsignedIdentityCertificate(newKeyName,
+                                                  Name(identityName),
+                                                  kskCert->getNotBefore(),
+                                                  kskCert->getNotAfter(),
+                                                  kskCert->getSubjectDescriptionList());
 
-  certificate->setPublicKeyInfo(*keyChain.getPublicKey(newKeyName));
+    if (static_cast<bool>(certificate))
+      certificate->encode();
+    else {
+      std::cerr << "ERROR: Cannot format the certificate of the requested dsk." << "\n";
+      return 1;
+    }
 
-  const std::vector<CertificateSubjectDescription>& subList =
-    kskCert->getSubjectDescriptionList();
+    keyChain.sign(*certificate, signingCertName);
 
-  for (std::vector<CertificateSubjectDescription>::const_iterator it = subList.begin();
-       it != subList.end(); it++)
-    certificate->addSubjectDescription(*it);
+    keyChain.addCertificateAsIdentityDefault(*certificate);
 
-  certificate->encode();
-
-  keyChain.sign(*certificate, signingCertName);
-
-  keyChain.addCertificateAsIdentityDefault(*certificate);
-
-  return 0;
+    std::cerr << "OK: dsk certificate with name [" << certificate->getName() <<
+      "] has been successfully installed\n";
+    return 0;
+  }
+  catch (std::runtime_error& e) {
+    std::cerr << "ERROR: other runtime errors: " << e.what() << "\n";
+    return 1;
+  }
 }
 
 #endif //NDNSEC_DSK_GEN_HPP
