| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /* * Copyright (c)2019 ZeroTier, Inc. * * Use of this software is governed by the Business Source License included * in the LICENSE.TXT file in the project's root directory. * * Change Date: 2023-01-01 * * On the date above, in accordance with the Business Source License, use * of this software will be governed by version 2.0 of the Apache License. *//****/#ifndef ZT_CREDENTIAL_HPP#define ZT_CREDENTIAL_HPP#include <string>#include <memory>#include <stdexcept>#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <string.h>#include "Constants.hpp"namespace ZeroTier {class Capability;class Revocation;class Tag;class CertificateOfMembership;class CertificateOfOwnership;class RuntimeEnvironment;/** * Base class for credentials */class Credential{public:	/**	 * Do not change type code IDs -- these are used in Revocation objects and elsewhere	 */	enum Type	{		CREDENTIAL_TYPE_NULL = 0,		CREDENTIAL_TYPE_COM = 1,        // CertificateOfMembership		CREDENTIAL_TYPE_CAPABILITY = 2,		CREDENTIAL_TYPE_TAG = 3,		CREDENTIAL_TYPE_COO = 4,        // CertificateOfOwnership		CREDENTIAL_TYPE_REVOCATION = 6	};	/**	 * Result of verify() operations	 */	enum VerifyResult	{		VERIFY_OK = 0,		VERIFY_BAD_SIGNATURE = 1,		VERIFY_NEED_IDENTITY = 2	};protected:	VerifyResult _verify(const RuntimeEnvironment *const RR,void *tPtr,const CertificateOfMembership &credential) const;	VerifyResult _verify(const RuntimeEnvironment *const RR,void *tPtr,const Revocation &credential) const;	VerifyResult _verify(const RuntimeEnvironment *const RR,void *tPtr,const Tag &credential) const;	VerifyResult _verify(const RuntimeEnvironment *const RR,void *tPtr,const CertificateOfOwnership &credential) const;	VerifyResult _verify(const RuntimeEnvironment *const RR,void *tPtr,const Capability &credential) const;};} // namespace ZeroTier#endif
 |