diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-09 08:32:42 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-08-09 08:32:42 -0700 |
commit | 2ba93436077b4f4901db81687df2e03d7ce6c8c5 (patch) | |
tree | 00578811c1765fc38fe263c26de4af893bdc3820 /node/Tag.hpp | |
parent | 51cf49a24fa5e953de0192006c624675090483f5 (diff) | |
download | infinitytier-2ba93436077b4f4901db81687df2e03d7ce6c8c5.tar.gz infinitytier-2ba93436077b4f4901db81687df2e03d7ce6c8c5.zip |
Encode and decode of tags and capabilities in NetworkConfig.
Diffstat (limited to 'node/Tag.hpp')
-rw-r--r-- | node/Tag.hpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/node/Tag.hpp b/node/Tag.hpp index b4bc63c4..bb019474 100644 --- a/node/Tag.hpp +++ b/node/Tag.hpp @@ -117,11 +117,14 @@ public: { if (forSign) b.append((uint64_t)0x7f7f7f7f7f7f7f7fULL); + // These are the same between Tag and Capability b.append(_nwid); b.append(_ts); b.append(_expiration); b.append(_id); + b.append(_value); + _issuedTo.appendTo(b); _signedBy.appendTo(b); if (!forSign) { @@ -129,6 +132,7 @@ public: b.append((uint16_t)ZT_C25519_SIGNATURE_LEN); // length of signature b.append(_signature.data,ZT_C25519_SIGNATURE_LEN); } + b.append((uint16_t)0); // length of additional fields, currently 0 if (forSign) b.append((uint64_t)0x7f7f7f7f7f7f7f7fULL); @@ -139,11 +143,14 @@ public: { unsigned int p = startAt; + // These are the same between Tag and Capability _nwid = b.template at<uint64_t>(p); p += 8; _ts = b.template at<uint64_t>(p); p += 8; _expiration = b.template at<uint64_t>(p); p += 8; _id = b.template at<uint32_t>(p); p += 4; + _value = b.template at<uint32_t>(p); p += 4; + _issuedTo.setTo(b.field(p,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); p += ZT_ADDRESS_LENGTH; _signedBy.setTo(b.field(p,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); p += ZT_ADDRESS_LENGTH; if (b[p++] != 1) |