Skip to content

Commit

Permalink
Clean up some old stuff.
Browse files Browse the repository at this point in the history
  • Loading branch information
adamierymenko committed Jan 27, 2018
1 parent 5f5302e commit f3dfd63
Show file tree
Hide file tree
Showing 14 changed files with 101 additions and 236 deletions.
117 changes: 0 additions & 117 deletions node/Array.hpp

This file was deleted.

31 changes: 6 additions & 25 deletions node/C25519.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
#ifndef ZT_C25519_HPP
#define ZT_C25519_HPP

#include "Array.hpp"
#include "Utils.hpp"

namespace ZeroTier {
Expand All @@ -42,36 +41,18 @@ namespace ZeroTier {
class C25519
{
public:
/**
* Public key (both crypto and signing)
*/
typedef Array<unsigned char,ZT_C25519_PUBLIC_KEY_LEN> Public; // crypto key, signing key (both 32 bytes)

/**
* Private key (both crypto and signing)
*/
typedef Array<unsigned char,ZT_C25519_PRIVATE_KEY_LEN> Private; // crypto key, signing key (both 32 bytes)

/**
* Message signature
*/
typedef Array<unsigned char,ZT_C25519_SIGNATURE_LEN> Signature;

/**
* Public/private key pair
*/
typedef struct {
Public pub;
Private priv;
} Pair;
struct Public { uint8_t data[ZT_C25519_PUBLIC_KEY_LEN]; };
struct Private { uint8_t data[ZT_C25519_PRIVATE_KEY_LEN]; };
struct Signature { uint8_t data[ZT_C25519_SIGNATURE_LEN]; };
struct Pair { Public pub; Private priv; };

/**
* Generate a C25519 elliptic curve key pair
*/
static inline Pair generate()
{
Pair kp;
Utils::getSecureRandom(kp.priv.data,(unsigned int)kp.priv.size());
Utils::getSecureRandom(kp.priv.data,ZT_C25519_PRIVATE_KEY_LEN);
_calcPubDH(kp);
_calcPubED(kp);
return kp;
Expand All @@ -95,7 +76,7 @@ class C25519
{
Pair kp;
void *const priv = (void *)kp.priv.data;
Utils::getSecureRandom(priv,(unsigned int)kp.priv.size());
Utils::getSecureRandom(priv,ZT_C25519_PRIVATE_KEY_LEN);
_calcPubED(kp); // do Ed25519 key -- bytes 32-63 of pub and priv
do {
++(((uint64_t *)priv)[1]);
Expand Down
6 changes: 3 additions & 3 deletions node/CertificateOfMembership.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ std::string CertificateOfMembership::toString() const

if (_signedBy) {
s.push_back(':');
s.append(Utils::hex(_signature.data,(unsigned int)_signature.size(),tmp));
s.append(Utils::hex(_signature.data,ZT_C25519_SIGNATURE_LEN,tmp));
}

return s;
Expand All @@ -94,7 +94,7 @@ void CertificateOfMembership::fromString(const char *s)
{
_qualifierCount = 0;
_signedBy.zero();
memset(_signature.data,0,_signature.size());
memset(_signature.data,0,ZT_C25519_SIGNATURE_LEN);

if (!*s)
return;
Expand Down Expand Up @@ -145,7 +145,7 @@ void CertificateOfMembership::fromString(const char *s)
colonAt = 0;
while ((s[colonAt])&&(s[colonAt] != ':')) ++colonAt;
if (colonAt) {
if (Utils::unhex(s,colonAt,_signature.data,(unsigned int)_signature.size()) != _signature.size())
if (Utils::unhex(s,colonAt,_signature.data,ZT_C25519_SIGNATURE_LEN) != ZT_C25519_SIGNATURE_LEN)
_signedBy.zero();
} else {
_signedBy.zero();
Expand Down
10 changes: 5 additions & 5 deletions node/CertificateOfMembership.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ class CertificateOfMembership : public Credential
_qualifiers[2].value = issuedTo.toInt();
_qualifiers[2].maxDelta = 0xffffffffffffffffULL;
_qualifierCount = 3;
memset(_signature.data,0,_signature.size());
memset(_signature.data,0,ZT_C25519_SIGNATURE_LEN);
}

inline CertificateOfMembership &operator=(const CertificateOfMembership &c)
Expand Down Expand Up @@ -293,7 +293,7 @@ class CertificateOfMembership : public Credential
}
_signedBy.appendTo(b);
if (_signedBy)
b.append(_signature.data,(unsigned int)_signature.size());
b.append(_signature.data,ZT_C25519_SIGNATURE_LEN);
}

template<unsigned int C>
Expand Down Expand Up @@ -329,8 +329,8 @@ class CertificateOfMembership : public Credential
p += ZT_ADDRESS_LENGTH;

if (_signedBy) {
ZT_FAST_MEMCPY(_signature.data,b.field(p,(unsigned int)_signature.size()),_signature.size());
p += (unsigned int)_signature.size();
ZT_FAST_MEMCPY(_signature.data,b.field(p,ZT_C25519_SIGNATURE_LEN),ZT_C25519_SIGNATURE_LEN);
p += ZT_C25519_SIGNATURE_LEN;
}

return (p - startAt);
Expand All @@ -348,7 +348,7 @@ class CertificateOfMembership : public Credential
if ((a.id != b.id)||(a.value != b.value)||(a.maxDelta != b.maxDelta))
return false;
}
return (_signature == c._signature);
return (memcmp(_signature.data,c._signature.data,ZT_C25519_SIGNATURE_LEN) == 0);
}
inline bool operator!=(const CertificateOfMembership &c) const { return (!(*this == c)); }

Expand Down
8 changes: 4 additions & 4 deletions node/Identity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ struct _Identity_generate_cond
_Identity_generate_cond(unsigned char *sb,char *gm) : digest(sb),genmem(gm) {}
inline bool operator()(const C25519::Pair &kp) const
{
_computeMemoryHardHash(kp.pub.data,(unsigned int)kp.pub.size(),digest,genmem);
_computeMemoryHardHash(kp.pub.data,ZT_C25519_PUBLIC_KEY_LEN,digest,genmem);
return (digest[0] < ZT_IDENTITY_GEN_HASHCASH_FIRST_BYTE_LESS_THAN);
}
unsigned char *digest;
Expand Down Expand Up @@ -120,7 +120,7 @@ bool Identity::locallyValidate() const

unsigned char digest[64];
char *genmem = new char[ZT_IDENTITY_GEN_MEMORY];
_computeMemoryHardHash(_publicKey.data,(unsigned int)_publicKey.size(),digest,genmem);
_computeMemoryHardHash(_publicKey.data,ZT_C25519_PUBLIC_KEY_LEN,digest,genmem);
delete [] genmem;

unsigned char addrb[5];
Expand Down Expand Up @@ -187,14 +187,14 @@ bool Identity::fromString(const char *str)
}
break;
case 2:
if (Utils::unhex(f,_publicKey.data,(unsigned int)_publicKey.size()) != _publicKey.size()) {
if (Utils::unhex(f,_publicKey.data,ZT_C25519_PUBLIC_KEY_LEN) != ZT_C25519_PUBLIC_KEY_LEN) {
_address.zero();
return false;
}
break;
case 3:
_privateKey = new C25519::Private();
if (Utils::unhex(f,_privateKey->data,(unsigned int)_privateKey->size()) != _privateKey->size()) {
if (Utils::unhex(f,_privateKey->data,ZT_C25519_PRIVATE_KEY_LEN) != ZT_C25519_PRIVATE_KEY_LEN) {
_address.zero();
return false;
}
Expand Down
14 changes: 7 additions & 7 deletions node/Identity.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,10 @@ class Identity
{
_address.appendTo(b);
b.append((uint8_t)0); // C25519/Ed25519 identity type
b.append(_publicKey.data,(unsigned int)_publicKey.size());
b.append(_publicKey.data,ZT_C25519_PUBLIC_KEY_LEN);
if ((_privateKey)&&(includePrivate)) {
b.append((unsigned char)_privateKey->size());
b.append(_privateKey->data,(unsigned int)_privateKey->size());
b.append((unsigned char)ZT_C25519_PRIVATE_KEY_LEN);
b.append(_privateKey->data,ZT_C25519_PRIVATE_KEY_LEN);
} else b.append((unsigned char)0);
}

Expand Down Expand Up @@ -248,8 +248,8 @@ class Identity
if (b[p++] != 0)
throw ZT_EXCEPTION_INVALID_SERIALIZED_DATA_INVALID_TYPE;

ZT_FAST_MEMCPY(_publicKey.data,b.field(p,(unsigned int)_publicKey.size()),(unsigned int)_publicKey.size());
p += (unsigned int)_publicKey.size();
ZT_FAST_MEMCPY(_publicKey.data,b.field(p,ZT_C25519_PUBLIC_KEY_LEN),ZT_C25519_PUBLIC_KEY_LEN);
p += ZT_C25519_PUBLIC_KEY_LEN;

unsigned int privateKeyLength = (unsigned int)b[p++];
if (privateKeyLength) {
Expand Down Expand Up @@ -306,8 +306,8 @@ class Identity
*/
inline operator bool() const { return (_address); }

inline bool operator==(const Identity &id) const { return ((_address == id._address)&&(_publicKey == id._publicKey)); }
inline bool operator<(const Identity &id) const { return ((_address < id._address)||((_address == id._address)&&(_publicKey < id._publicKey))); }
inline bool operator==(const Identity &id) const { return ((_address == id._address)&&(memcmp(_publicKey.data,id._publicKey.data,ZT_C25519_PUBLIC_KEY_LEN) == 0)); }
inline bool operator<(const Identity &id) const { return ((_address < id._address)||((_address == id._address)&&(memcmp(_publicKey.data,id._publicKey.data,ZT_C25519_PUBLIC_KEY_LEN) < 0))); }
inline bool operator!=(const Identity &id) const { return !(*this == id); }
inline bool operator>(const Identity &id) const { return (id < *this); }
inline bool operator<=(const Identity &id) const { return !(id < *this); }
Expand Down
Loading

0 comments on commit f3dfd63

Please sign in to comment.