8#include "Arp/System/Core/AppDomainSingleton.hxx"
9#include "Arp/System/Commons/Logging.h"
10#include "Arp/System/Commons/Io/Path.hpp"
11#include "Arp/System/Commons/Security/KeyPair.hpp"
12#include "Arp/System/Commons/Security/Certificate.hpp"
13#include "Arp/System/Commons/Security/SecurityListType.hpp"
14#include "Arp/System/Commons/Security/ItemInfo.hpp"
15#include "Arp/System/Commons/Security/KeyPairType.hpp"
16#include "Arp/System/Commons/Security/SecurityConfigurationError.hpp"
19#include <openssl/evp.h>
21namespace Arp {
namespace System {
namespace Commons {
namespace Security
29 enum KeyMustExist :
bool
31 IgnoreMissingKey =
false,
32 RequireKeyExists =
true
59 bool HasCertificate(
void);
63 KeyPairType GetKeyType(
void);
77 SecurityConfigurationError
SetKeyPair(
const std::vector<byte>& pemData);
109 SecurityConfigurationError
ListContent(SecurityListType type, std::vector<ItemInfo>& result);
114 SecurityConfigurationError
AddElement(SecurityListType type,
const std::vector<byte>& pemData);
132 bool VerifyCertMatchesWithPrivateKey(
void);
139 void loadKeyPair(KeyMustExist requireKeyExists);
140 bool LoadSoftwareKeyPair();
141 bool LoadHardwareKeyPair();
142 void loadCertWithChain(
const String& file);
143 void listIssuerList(std::vector<ItemInfo>& result);
144 void listIdentityCert(std::vector<ItemInfo>& result);
151 std::shared_ptr<KeyPair> keyPair;
153 std::vector<Certificate> issuers;
157 static const String CertificateFileName;
158 static const String KeyFileName;
159 static const String TpmKeyFileName;
160 static const String DirectorySeparator;
168 return Io::Path::GetFileName(this->storePath);
173 return this->storePath + DirectorySeparator + CertificateFileName;
178 return this->storePath + DirectorySeparator + KeyFileName;
183 return this->storePath + DirectorySeparator + TpmKeyFileName;
186inline KeyPairType IdentityStore::GetKeyType(
void)
188 return this->keyPair->GetKeyType();
Definition: Loggable.hxx:19
Class to handle x.509 certificates
Definition: Certificate.hpp:26
Class with represents a Identity (Certificate with Chain and private Key) and is able to initialze an...
Definition: IdentityStore.hpp:27
void CreateAllDirectories(void)
summary>list all elements in the list referenced by ListType
const std::shared_ptr< KeyPair > & GetKeyPair(void)
summary>Returns the type of the key pair
String GetName(void) const
Returns the name of the IdentityStore
Definition: IdentityStore.hpp:166
SecurityConfigurationError GenerateKeyPair(KeyPairType type)
SecurityConfigurationError DeleteElement(SecurityListType type, const String &identifier)
summary>Generate a new KeyPair for this IdentityStore
SecurityConfigurationError SetKeyPair(const std::vector< byte > &pemData)
IdentityStore(const IdentityStore &arg)=delete
Copy constructor.
SecurityConfigurationError AddElement(SecurityListType type, const std::vector< byte > &pemData)
summary>delete an elements from the list referenced by ListType, identified by identifier
std::vector< byte > GetPemCertificateWithChain(void)
std::vector< byte > GetDerCertificateWithChain(void)
summary>get the issuer certificates in PEM format
void InitSslContext(SSL_CTX *pSslCtx) const
Initializes a OpenSSL SSL_:CTX Structure with the private key and certificate
String GetFullTpmKeyFileName(void) const
summary>checks if a certificate is available for this IdentityStore
Definition: IdentityStore.hpp:181
std::vector< byte > GetPemCertificate(void)
std::vector< byte > GetPublicKey(void)
SecurityConfigurationError SetCertificate(const std::vector< byte > &pemData)
std::vector< byte > GenerateCSR()
String GetFullCertificateFileName(void) const
summary>Returns the absolute path to the key file
Definition: IdentityStore.hpp:171
IdentityStore & operator=(const IdentityStore &arg)=delete
Assignment operator.
std::vector< std::vector< byte > > GetIssuerPemCertificates(void)
summary>creates all needed directories inside the folder of this IdentityStore
SecurityConfigurationError ListContent(SecurityListType type, std::vector< ItemInfo > &result)
summary>add an element into the list referenced by ListType
std::vector< byte > GetDerCertificate(void)
~IdentityStore(void)=default
Destructs this instance and frees all resources.
IdentityStore(const String &basePath, const String &name, KeyMustExist requireKeyExists=RequireKeyExists)
Constructs an IdentityStore instance.
String GetFullKeyFileName(void) const
summary>Returns the absolute path to the tpm key file
Definition: IdentityStore.hpp:176
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API