diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-04-04 08:39:22 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-04-04 08:39:22 -0700 |
commit | b48a70db2e2639bef81941b17c4f3268c41d2a9f (patch) | |
tree | c0b58909b46c43d9733cbbd425f2864b86670bcf /node/Revocation.hpp | |
parent | cd050b3423ede9c21e53db3a47cdad7ccf5bcb65 (diff) | |
parent | eddbc7e757f26e59d6eeab7e31e31eb6c47dcf20 (diff) | |
download | infinitytier-b48a70db2e2639bef81941b17c4f3268c41d2a9f.tar.gz infinitytier-b48a70db2e2639bef81941b17c4f3268c41d2a9f.zip |
Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev
Diffstat (limited to 'node/Revocation.hpp')
-rw-r--r-- | node/Revocation.hpp | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/node/Revocation.hpp b/node/Revocation.hpp index 8b9ce6dd..e5e013bd 100644 --- a/node/Revocation.hpp +++ b/node/Revocation.hpp @@ -26,6 +26,7 @@ #include "Constants.hpp" #include "../include/ZeroTierOne.h" +#include "Credential.hpp" #include "Address.hpp" #include "C25519.hpp" #include "Utils.hpp" @@ -44,20 +45,10 @@ class RuntimeEnvironment; /** * Revocation certificate to instantaneously revoke a COM, capability, or tag */ -class Revocation +class Revocation : public Credential { public: - /** - * Credential type being revoked - */ - enum CredentialType - { - CREDENTIAL_TYPE_NULL = 0, - CREDENTIAL_TYPE_COM = 1, // CertificateOfMembership - CREDENTIAL_TYPE_CAPABILITY = 2, - CREDENTIAL_TYPE_TAG = 3, - CREDENTIAL_TYPE_COO = 4 // CertificateOfOwnership - }; + static inline Credential::Type credentialType() { return Credential::CREDENTIAL_TYPE_REVOCATION; } Revocation() { @@ -73,23 +64,23 @@ public: * @param tgt Target node whose credential(s) are being revoked * @param ct Credential type being revoked */ - Revocation(const uint64_t i,const uint64_t nwid,const uint64_t cid,const uint64_t thr,const uint64_t fl,const Address &tgt,const CredentialType ct) : + Revocation(const uint32_t i,const uint64_t nwid,const uint32_t cid,const uint64_t thr,const uint64_t fl,const Address &tgt,const Credential::Type ct) : _id(i), - _networkId(nwid), _credentialId(cid), + _networkId(nwid), _threshold(thr), _flags(fl), _target(tgt), _signedBy(), _type(ct) {} - inline uint64_t id() const { return _id; } + inline uint32_t id() const { return _id; } + inline uint32_t credentialId() const { return _credentialId; } inline uint64_t networkId() const { return _networkId; } - inline uint64_t credentialId() const { return _credentialId; } inline uint64_t threshold() const { return _threshold; } inline const Address &target() const { return _target; } inline const Address &signer() const { return _signedBy; } - inline CredentialType type() const { return _type; } + inline Credential::Type type() const { return _type; } inline bool fastPropagate() const { return ((_flags & ZT_REVOCATION_FLAG_FAST_PROPAGATE) != 0); } @@ -123,8 +114,10 @@ public: { if (forSign) b.append((uint64_t)0x7f7f7f7f7f7f7f7fULL); + b.append((uint32_t)0); // 4 unused bytes, currently set to 0 b.append(_id); b.append(_networkId); + b.append((uint32_t)0); // 4 unused bytes, currently set to 0 b.append(_credentialId); b.append(_threshold); b.append(_flags); @@ -151,14 +144,16 @@ public: unsigned int p = startAt; - _id = b.template at<uint64_t>(p); p += 8; + p += 4; // 4 bytes, currently unused + _id = b.template at<uint32_t>(p); p += 4; _networkId = b.template at<uint64_t>(p); p += 8; - _credentialId = b.template at<uint64_t>(p); p += 8; + p += 4; // 4 bytes, currently unused + _credentialId = b.template at<uint32_t>(p); p += 4; _threshold = b.template at<uint64_t>(p); p += 8; _flags = b.template at<uint64_t>(p); p += 8; _target.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; - _type = (CredentialType)b[p++]; + _type = (Credential::Type)b[p++]; if (b[p++] == 1) { if (b.template at<uint16_t>(p) == ZT_C25519_SIGNATURE_LEN) { @@ -178,14 +173,14 @@ public: } private: - uint64_t _id; + uint32_t _id; + uint32_t _credentialId; uint64_t _networkId; - uint64_t _credentialId; uint64_t _threshold; uint64_t _flags; Address _target; Address _signedBy; - CredentialType _type; + Credential::Type _type; C25519::Signature _signature; }; |