summaryrefslogtreecommitdiff
path: root/node/Tag.hpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-08-09 08:32:42 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-08-09 08:32:42 -0700
commit2ba93436077b4f4901db81687df2e03d7ce6c8c5 (patch)
tree00578811c1765fc38fe263c26de4af893bdc3820 /node/Tag.hpp
parent51cf49a24fa5e953de0192006c624675090483f5 (diff)
downloadinfinitytier-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.hpp7
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)