summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-05-06 00:15:21 +0000
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-05-06 00:15:21 +0000
commit08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d (patch)
tree2bc67a271f4af826dcee64ddeb1e9c3aefc2b5a7
parent0ba0c6d04d69f50292dd18e913a447ee70d92db7 (diff)
downloadinfinitytier-08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d.tar.gz
infinitytier-08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d.zip
Add mkcom functionality to zerotier-idtool for use by new NodeJS netconf-master code.
-rw-r--r--main.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index 2d93b49e..a0c06f61 100644
--- a/main.cpp
+++ b/main.cpp
@@ -62,6 +62,7 @@
#include "node/C25519.hpp"
#include "node/Identity.hpp"
#include "node/Thread.hpp"
+#include "node/CertificateOfMembership.hpp"
using namespace ZeroTier;
@@ -314,6 +315,34 @@ static int main(int argc,char **argv)
fprintf(stderr,"%s signature check FAILED"ZT_EOL_S,argv[3]);
return 1;
}
+ } else if (!strcmp(argv[1],"mkcom")) {
+ if (argc < 3) {
+ printHelp(stdout,argv[0]);
+ return 1;
+ }
+
+ Identity id = getIdFromArg(argv[2]);
+ if ((!id)||(!id.hasPrivate())) {
+ fprintf(stderr,"Identity argument invalid, does not include private key, or file unreadable: %s"ZT_EOL_S,argv[2]);
+ return 1;
+ }
+
+ CertificateOfMembership com;
+ for(int a=3;a<argc;++a) {
+ std::vector<std::string> params(Utils::split(argv[a],",","",""));
+ if (params.size() == 3) {
+ uint64_t qId = Utils::hexStrToU64(params[0].c_str());
+ uint64_t qValue = Utils::hexStrToU64(params[1].c_str());
+ uint64_t qMaxDelta = Utils::hexStrToU64(params[2].c_str());
+ com.setQualifier(qId,qValue,qMaxDelta);
+ }
+ }
+ if (!com.sign(id)) {
+ fprintf(stderr,"Signature of certificate of membership failed."ZT_EOL_S);
+ return 1;
+ }
+
+ printf("%s",com.toString().c_str());
} else {
printHelp(stdout,argv[0]);
return 1;