PLCnext API Documentation 23.6.0.37
Asn1Time.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Commons/Logging.h"
9#include "Arp/System/Commons/Security/Internal/OpenSslBio.hpp"
10#include <map>
11#include <vector>
12
13#include <openssl/x509.h>
14
15using namespace Arp::System::Commons::Security::Internal;
16
17namespace Arp { namespace System { namespace Commons { namespace Security
18{
19
21class Asn1Time : private Loggable<Asn1Time>
22{
23public: // typedefs
24
25public: // construction/destruction
27 Asn1Time(void);
29 Asn1Time(const Asn1Time& arg);
31 Asn1Time(const ASN1_TIME* arg);
33 ~Asn1Time(void);
34
35public: // operators
37 Asn1Time& operator=(const Asn1Time& arg);
38 Asn1Time& operator=(const ASN1_TIME* arg);
39 operator ASN1_TIME*() const;
40 operator DateTime() const;
41
42public: // static operations
50 static DateTime Asn1TimeToDateTime(const ASN1_TIME* pTime);
51
59 static String Asn1TimeToIso8601String(const ASN1_TIME* pTime);
60
61public: // setter/getter operations
68
73 bool Set(const DateTime& time);
74
75public: // operations
80 DateTime ToDateTime(void) const;
81
86 String ToString(void) const;
87
92 String ToIso8601String(void) const;
93
94protected: // operations
95
96private: // static methods
97 static String DateTimeToTrimmedGeneralizedTime(const DateTime time);
98 bool GeneralizedTimeFitsForUtcTime(String timeStr);
99
100private: // methods
101
102protected: // fields
103 ASN1_TIME* internalAsn1Time;
104
105private: // fields
106
107private: // static fields
108
109};
110
112// inline methods of class Asn1Time
113
114inline Asn1Time::Asn1Time(const Asn1Time& arg)
115 : internalAsn1Time(nullptr)
116{
117 *this = arg.internalAsn1Time;
118}
119
120inline Asn1Time::Asn1Time(const ASN1_TIME* arg)
121 : internalAsn1Time(nullptr)
122{
123 *this = arg;
124}
125
127{
128 *this = arg.internalAsn1Time;
129 return *this;
130}
131
132inline Asn1Time::operator ASN1_TIME*() const
133{
134 return this->internalAsn1Time;
135}
136
137inline Asn1Time::operator DateTime() const
138{
139 return Asn1TimeToDateTime(this->internalAsn1Time);
140}
141
143{
144 return Asn1TimeToDateTime(this->internalAsn1Time);
145}
146
148{
149 return Asn1TimeToIso8601String(this->internalAsn1Time);
150}
151
152}}}} // end of namespace Arp::System::Commons::Security
The class contains date and time informations.
Definition: DateTime.hpp:46
Helper class to handle ASN1Time objects in x.509 Certificates
Definition: Asn1Time.hpp:22
static String Asn1TimeToIso8601String(const ASN1_TIME *pTime)
Converst an OpenSSL ASN1_TIME object to an ISO8601 formated String DateTime
DateTime ToDateTime(void) const
Converts this object to DataTime DateTime
Definition: Asn1Time.hpp:142
Asn1Time(void)
Constructs an empty Asn1Time instance.
String GetTypeAsString(void) const
Return the type of the Internal ASN1_TIME object as String
String ToIso8601String(void) const
Converts this object to an ISO8601 formated String DateTime
Definition: Asn1Time.hpp:147
String ToString(void) const
Converts this object to String DateTime
static DateTime Asn1TimeToDateTime(const ASN1_TIME *pTime)
Converst an OpenSSL ASN1_TIME object to DataTime DateTime
bool Set(const DateTime &time)
Sets this Ans1Time from a DateTime
~Asn1Time(void)
Destructs this instance and frees all resources.
Asn1Time & operator=(const Asn1Time &arg)
Assignment operator.
Definition: Asn1Time.hpp:126
Root namespace for the PLCnext API