check error when creating directory

Change-Id: Iccff91eea9c3a5ab7b84a24688d80d3ea6fdec5e
diff --git a/tools/dhtnet_crtmgr/main.cpp b/tools/dhtnet_crtmgr/main.cpp
index a44d68c..6b69707 100644
--- a/tools/dhtnet_crtmgr/main.cpp
+++ b/tools/dhtnet_crtmgr/main.cpp
@@ -269,7 +269,13 @@
             folder = input_folder;
         }
         folder = std::filesystem::absolute(folder);
-        std::filesystem::create_directories(folder);
+
+        std::error_code e;
+        std::filesystem::create_directories(folder, e);
+        if (e) {
+            fmt::print(stderr, "Error: Could not create directory {}. {}\n", folder, e.message());
+            return EXIT_FAILURE;
+        }
 
         if (usage == "client") {
             // Use existing CA or generate new CA
@@ -288,11 +294,19 @@
                 }
             } else {
                 ca = dhtnet::generateIdentity(folder, "ca");
+                if (!ca.first || !ca.second) {
+                    fmt::print(stderr, "Error: Could not generate CA.\n");
+                    return EXIT_FAILURE;
+                }
                 fmt::print("Generated CA in {}: {} {}\n", folder, "ca", ca.second->getId());
             }
 
             // Generate client certificate
             auto id = dhtnet::generateIdentity(folder, "certificate", ca);
+            if (!id.first || !id.second) {
+                fmt::print(stderr, "Error: Could not generate certificate.\n");
+                return EXIT_FAILURE;
+            }
             fmt::print("Generated certificate in {}: {} {}\n", folder, "certificate", id.second->getId());
 
             // Create configuration file with generated keys
@@ -321,7 +335,7 @@
             return EXIT_SUCCESS;
         } else {
             // Create configuration file with generated keys
-            std::filesystem::path yaml_config{folder / "config.yml"};
+            std::filesystem::path yaml_config{folder / "dnc.yaml"};
             std::string overwrite = "";
             if (std::filesystem::exists(yaml_config)) {
                 do {
@@ -336,7 +350,7 @@
                 overwrite = "yes"; // File doesn't exist, create it
             }
             if (overwrite == "yes") {
-                if (create_yaml_config(yaml_config, folder / "certificate.crt", folder / "certificate.pem", true) != 0) {
+                if (create_yaml_config(yaml_config, folder / "id" / "id-server.crt", folder / "id" / "id-server.pem", false) != 0) {
                     return EXIT_FAILURE;
                 }
             }
@@ -350,10 +364,18 @@
         // create CA  with name ca-server
         std::filesystem::path path_ca = params.id / "CA";
         auto ca = dhtnet::generateIdentity(path_ca, "ca-server");
+        if (!ca.first || !ca.second) {
+            fmt::print(stderr, "Error: Could not generate CA.\n");
+            return EXIT_FAILURE;
+        }
         fmt::print("Generated CA in {}: {} {}\n", path_ca, "ca-server", ca.second->getId());
         // create identity with name id-server
         std::filesystem::path path_id = params.id / "id";
         auto identity = dhtnet::generateIdentity(path_id, "id-server", ca);
+        if (!identity.first || !identity.second) {
+            fmt::print(stderr, "Error: Could not generate certificate.\n");
+            return EXIT_FAILURE;
+        }
         fmt::print("Generated certificate in {}: {} {}\n", path_id,"id-server", identity.second->getId());
         return EXIT_SUCCESS;
     }
@@ -361,18 +383,34 @@
     if (params.ca.empty() || params.privatekey.empty()) {
         if (params.name.empty()) {
             auto ca = dhtnet::generateIdentity(params.id, "ca");
+            if (!ca.first || !ca.second) {
+                fmt::print(stderr, "Error: Could not generate CA.\n");
+                return EXIT_FAILURE;
+            }
             fmt::print("Generated certificate in {}: {} {}\n", params.id, "ca", ca.second->getId());
         }else{
             auto ca = dhtnet::generateIdentity(params.id, params.name);
+            if (!ca.first || !ca.second) {
+                fmt::print(stderr, "Error: Could not generate CA.\n");
+                return EXIT_FAILURE;
+            }
             fmt::print("Generated certificate in {}: {} {}\n", params.id, params.name, ca.second->getId());
         }
     }else{
         auto ca = dhtnet::loadIdentity(params.privatekey, params.ca);
         if (params.name.empty()) {
             auto id = dhtnet::generateIdentity(params.id, "certificate", ca);
+            if (!id.first || !id.second) {
+                fmt::print(stderr, "Error: Could not generate certificate.\n");
+                return EXIT_FAILURE;
+            }
             fmt::print("Generated certificate in {}: {} {}\n", params.id, "certificate", id.second->getId());
         }else{
             auto id = dhtnet::generateIdentity(params.id, params.name, ca);
+            if (!id.first || !id.second) {
+                fmt::print(stderr, "Error: Could not generate certificate.\n");
+                return EXIT_FAILURE;
+            }
             fmt::print("Generated certificate in {}: {} {}\n", params.id, params.name, id.second->getId());
         }
     }