diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-05-06 00:15:21 +0000 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-05-06 00:15:21 +0000 |
| commit | 08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d (patch) | |
| tree | 2bc67a271f4af826dcee64ddeb1e9c3aefc2b5a7 | |
| parent | 0ba0c6d04d69f50292dd18e913a447ee70d92db7 (diff) | |
| download | infinitytier-08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d.tar.gz infinitytier-08da4b8c7bfb70ceb2708c312e5ab94fa5bef29d.zip | |
Add mkcom functionality to zerotier-idtool for use by new NodeJS netconf-master code.
| -rw-r--r-- | main.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -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; |
