64 constexpr
operator Value()
const
70 explicit operator bool()
const =
delete;
85 static std::unique_ptr<Asn1Record> decodeAsn1Data(
const std::string& rawData,
86 std::vector<uint8_t>& rawDataBytes);
97 static std::unique_ptr<X509BasicConstraintsDataDecoder>
create(
const std::string& rawData);
108 return m_PathLenConstraint;
113 : m_IsCA(
isCA), m_PathLenConstraint(pathLenConstraint)
115 static constexpr
int isCAOffset = 0;
116 static constexpr
int pathLenConstraintOffset = 1;
119 int m_PathLenConstraint = 0;
130 static std::unique_ptr<X509SubjectKeyIdentifierDataDecoder>
create(
const std::string& rawData);
135 return m_KeyIdentifier;
140 : m_KeyIdentifier(keyIdentifier)
142 std::string m_KeyIdentifier;
153 static std::unique_ptr<X509KeyUsageDataDecoder>
create(
const std::string& rawData);
164 std::string m_KeyUsage;
175 static std::unique_ptr<X509ExtendedKeyUsageDataDecoder>
create(
const std::string& rawData);
180 return m_ExtendedKeyUsagePurposes;
186 std::vector<Asn1ObjectIdentifier> m_ExtendedKeyUsagePurposes;
207 template <
class X509ExtensionDataType> X509ExtensionDataType*
castAs()
209 auto castedExtension =
dynamic_cast<X509ExtensionDataType*
>(
this);
210 if (castedExtension ==
nullptr)
212 throw std::runtime_error(
"Trying to cast X509 extension data to the wrong type");
214 return castedExtension;
234 return m_PathLenConstraint;
240 int m_PathLenConstraint = 0;
253 return m_KeyIdentifier;
258 std::string m_KeyIdentifier;
298 static constexpr
int digitalSignatureLocation = 0;
299 static constexpr
int nonRepudiationLocation = 1;
300 static constexpr
int keyEnciphermentLocation = 2;
301 static constexpr
int dataEnciphermentLocation = 3;
302 static constexpr
int keyAgreementLocation = 4;
303 static constexpr
int keyCertSignLocation = 5;
304 static constexpr
int crlSignLocation = 6;
305 static constexpr
int encipherOnlyLocation = 7;
306 static constexpr
int decipherOnlyLocation = 8;
308 bool isBitSet(
size_t location)
const;
309 std::string m_BitString;
320 const std::vector<X509ExtendedKeyUsagePurpose>&
getPurposes()
const
327 std::vector<X509ExtendedKeyUsagePurpose> m_Purposes;
Definition: Asn1Codec.h:698
Definition: X509ExtensionDataDecoder.h:221
int getPathLenConstraint() const
Definition: X509ExtensionDataDecoder.h:232
bool isCA() const
Definition: X509ExtensionDataDecoder.h:226
Definition: X509ExtensionDataDecoder.h:315
const std::vector< X509ExtendedKeyUsagePurpose > & getPurposes() const
Definition: X509ExtensionDataDecoder.h:320
Definition: X509ExtensionDataDecoder.h:11
std::string toString() const
static X509ExtendedKeyUsagePurpose fromOidValue(const Asn1ObjectIdentifier &value)
Value
Define enum types for extended key usage purposes.
Definition: X509ExtensionDataDecoder.h:15
@ IPSecUser
IPsec user.
Definition: X509ExtensionDataDecoder.h:33
@ IPSecTunnel
IPsec tunnel.
Definition: X509ExtensionDataDecoder.h:31
@ IPSecEndSystem
IPsec end system.
Definition: X509ExtensionDataDecoder.h:29
@ ClientAuth
Client authentication.
Definition: X509ExtensionDataDecoder.h:19
@ EmailProtection
Email protection.
Definition: X509ExtensionDataDecoder.h:23
@ CodeSigning
Code signing.
Definition: X509ExtensionDataDecoder.h:21
@ SmartCardLogon
Smart card logon.
Definition: X509ExtensionDataDecoder.h:37
@ ServerAuth
Server authentication.
Definition: X509ExtensionDataDecoder.h:17
@ EncryptedFileSystem
Encrypted file system.
Definition: X509ExtensionDataDecoder.h:39
@ TimeStamping
Time stamping.
Definition: X509ExtensionDataDecoder.h:25
@ Unknown
Unknown purpose value.
Definition: X509ExtensionDataDecoder.h:43
@ DocumentSigning
Document signing.
Definition: X509ExtensionDataDecoder.h:41
@ OCSPSigning
OCSP signing.
Definition: X509ExtensionDataDecoder.h:27
std::string getOidValue() const
Definition: X509ExtensionDataDecoder.h:196
X509ExtensionDataType * castAs()
Definition: X509ExtensionDataDecoder.h:207
Definition: X509Decoder.h:703
Definition: X509ExtensionDataDecoder.h:92
bool isCA() const
Definition: X509ExtensionDataDecoder.h:100
int getPathLenConstraint() const
Definition: X509ExtensionDataDecoder.h:106
static std::unique_ptr< X509BasicConstraintsDataDecoder > create(const std::string &rawData)
Definition: X509ExtensionDataDecoder.h:170
const std::vector< Asn1ObjectIdentifier > & getExtendedKeyUsagePurposes() const
Definition: X509ExtensionDataDecoder.h:178
static std::unique_ptr< X509ExtendedKeyUsageDataDecoder > create(const std::string &rawData)
Definition: X509ExtensionDataDecoder.h:83
Definition: X509ExtensionDataDecoder.h:148
const std::string & getKeyUsage() const
Definition: X509ExtensionDataDecoder.h:156
static std::unique_ptr< X509KeyUsageDataDecoder > create(const std::string &rawData)
Definition: X509ExtensionDataDecoder.h:125
static std::unique_ptr< X509SubjectKeyIdentifierDataDecoder > create(const std::string &rawData)
const std::string & getKeyIdentifier() const
Definition: X509ExtensionDataDecoder.h:133
Definition: X509ExtensionDataDecoder.h:264
bool isDataEncipherment() const
bool isEncipherOnly() const
bool isKeyAgreement() const
bool isKeyEncipherment() const
bool isNonRepudiation() const
bool isDecipherOnly() const
bool isKeyCertSign() const
bool isDigitalSignature() const
Definition: X509ExtensionDataDecoder.h:246
std::string getKeyIdentifier() const
Definition: X509ExtensionDataDecoder.h:251
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19