aboutsummaryrefslogtreecommitdiff
path: root/src/hotstuff_keygen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hotstuff_keygen.cpp')
-rw-r--r--src/hotstuff_keygen.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/hotstuff_keygen.cpp b/src/hotstuff_keygen.cpp
new file mode 100644
index 0000000..7a7e615
--- /dev/null
+++ b/src/hotstuff_keygen.cpp
@@ -0,0 +1,33 @@
+#include <error.h>
+#include "salticidae/util.h"
+#include "crypto.h"
+
+using salticidae::Config;
+using hotstuff::privkey_bt;
+using hotstuff::pubkey_bt;
+
+int main(int argc, char **argv) {
+ Config config("hotstuff.conf");
+ privkey_bt priv_key;
+ auto opt_n = Config::OptValInt::create(1);
+ auto opt_algo = Config::OptValStr::create("secp256k1");
+ config.add_opt("num", opt_n, Config::SET_VAL);
+ config.add_opt("algo", opt_algo, Config::SET_VAL);
+ config.parse(argc, argv);
+ auto &algo = opt_algo->get();
+ if (algo == "secp256k1")
+ priv_key = new hotstuff::PrivKeySecp256k1();
+ else
+ error(1, 0, "algo not supported");
+ int n = opt_n->get();
+ if (n < 1)
+ error(1, 0, "n must be >0");
+ while (n--)
+ {
+ priv_key->from_rand();
+ pubkey_bt pub_key = priv_key->get_pubkey();
+ printf("pub:%s sec:%s\n", get_hex(*pub_key).c_str(),
+ get_hex(*priv_key).c_str());
+ }
+ return 0;
+}