File indexing completed on 2024-04-06 12:01:51
0001 #include "CondCore/Utilities/interface/Utilities.h"
0002 #include "CondCore/CondDB/interface/DecodingKey.h"
0003 #include "CondCore/CondDB/interface/Cipher.h"
0004 #include "CondCore/CondDB/interface/Auth.h"
0005 #include "CondCore/CondDB/interface/Exception.h"
0006
0007 #include <boost/program_options.hpp>
0008 #include <fstream>
0009 #include <iostream>
0010 #include <stdexcept>
0011
0012 namespace cond {
0013 class KeyMgrUtilities : public Utilities {
0014 public:
0015 KeyMgrUtilities();
0016 ~KeyMgrUtilities() override;
0017 int execute() override;
0018 };
0019 }
0020
0021 cond::KeyMgrUtilities::KeyMgrUtilities() : Utilities("cmscond_key_mgr") {
0022 addOption<std::string>("create", "c", "creating from input file data");
0023 addOption<std::string>("read", "r", "read data from input file");
0024 addOption<bool>("generate", "g", "generate a new key when not specified");
0025 addOption<bool>("dump_template", "d", "dump an input file template");
0026 }
0027
0028 cond::KeyMgrUtilities::~KeyMgrUtilities() {}
0029
0030 int cond::KeyMgrUtilities::execute() {
0031 std::string inFile("");
0032 if (hasOptionValue("create")) {
0033 inFile = getOptionValue<std::string>("create");
0034 size_t keySize = 0;
0035 if (hasOptionValue("generate"))
0036 keySize = auth::COND_AUTHENTICATION_KEY_SIZE;
0037 if (!inFile.empty()) {
0038 auth::DecodingKey key;
0039 key.init(auth::DecodingKey::FILE_NAME, auth::COND_KEY, false);
0040 key.createFromInputFile(inFile, keySize);
0041 if (hasDebug())
0042 key.list(std::cout);
0043 key.flush();
0044 return 0;
0045 }
0046 return 1;
0047 }
0048
0049 if (hasOptionValue("read")) {
0050 inFile = getOptionValue<std::string>("read");
0051 if (!inFile.empty()) {
0052 auth::DecodingKey key;
0053 key.init(inFile, auth::COND_KEY);
0054 key.list(std::cout);
0055 return 0;
0056 }
0057 return 1;
0058 }
0059
0060 if (hasOptionValue("dump_template")) {
0061 std::cout << auth::DecodingKey::templateFile() << std::endl;
0062 return 0;
0063 }
0064
0065 return 1;
0066 }
0067
0068 int main(int argc, char** argv) {
0069 cond::KeyMgrUtilities utilities;
0070 return utilities.run(argc, argv);
0071 }