| 
    LIEF: Library to Instrument Executable Formats Version 0.17.1
    
   | 
 
Interface over a x509 certificate. More...
#include <x509.hpp>


Public Types | |
| enum class | KEY_TYPES : uint32_t {  NONE = 0 , RSA , ECKEY , ECKEY_DH , ECDSA , RSA_ALT , RSASSA_PSS }  | 
| Public key scheme.  More... | |
| enum class | VERIFICATION_FLAGS : uint32_t {  OK = 0 , BADCERT_EXPIRED = 1 << 0 , BADCERT_REVOKED = 1 << 1 , BADCERT_CN_MISMATCH = 1 << 2 , BADCERT_NOT_TRUSTED = 1 << 3 , BADCRL_NOT_TRUSTED = 1 << 4 , BADCRL_EXPIRED = 1 << 5 , BADCERT_MISSING = 1 << 6 , BADCERT_SKIP_VERIFY = 1 << 7 , BADCERT_OTHER = 1 << 8 , BADCERT_FUTURE = 1 << 9 , BADCRL_FUTURE = 1 << 10 , BADCERT_KEY_USAGE = 1 << 11 , BADCERT_EXT_KEY_USAGE = 1 << 12 , BADCERT_NS_CERT_TYPE = 1 << 13 , BADCERT_BAD_MD = 1 << 14 , BADCERT_BAD_PK = 1 << 15 , BADCERT_BAD_KEY = 1 << 16 , BADCRL_BAD_MD = 1 << 17 , BADCRL_BAD_PK = 1 << 18 , BADCRL_BAD_KEY = 1 << 19 }  | 
| Mirror of mbedtls's X509 Verify codes: MBEDTLS_X509_XX.  More... | |
| enum class | KEY_USAGE : uint32_t {  DIGITAL_SIGNATURE = 0 , NON_REPUDIATION , KEY_ENCIPHERMENT , DATA_ENCIPHERMENT , KEY_AGREEMENT , KEY_CERT_SIGN , CRL_SIGN , ENCIPHER_ONLY , DECIPHER_ONLY }  | 
| Key usage as defined in RFC #5280 - section-4.2.1.3.  More... | |
| using | date_t = std::array<int32_t, 6> | 
| Tuple (Year, Month, Day, Hour, Minute, Second).   | |
| using | certificates_t = std::vector<x509> | 
| Public Types inherited from LIEF::Object | |
| template<class T> | |
| using | output_t = add_pointer_t<decay_t<T>> | 
| template<class T> | |
| using | output_const_t = add_pointer_t<add_const_t<decay_t<T>>> | 
Public Member Functions | |
| x509 (mbedtls_x509_crt *ca) | |
| x509 (const x509 &other) | |
| x509 & | operator= (x509 other) | 
| void | swap (x509 &other) | 
| uint32_t | version () const | 
| X.509 version. (1=v1, 2=v2, 3=v3).   | |
| std::vector< uint8_t > | serial_number () const | 
| Unique id for certificate issued by a specific CA.   | |
| oid_t | signature_algorithm () const | 
| Signature algorithm (OID).   | |
| date_t | valid_from () const | 
| Start time of certificate validity.   | |
| date_t | valid_to () const | 
| End time of certificate validity.   | |
| std::string | issuer () const | 
| Issuer informations.   | |
| std::string | subject () const | 
| Subject informations.   | |
| bool | check_signature (const std::vector< uint8_t > &hash, const std::vector< uint8_t > &signature, ALGORITHMS digest) const | 
| Try to decrypt the given signature and check if it matches the given hash according to the hash algorithm provided.   | |
| std::vector< uint8_t > | raw () const | 
| The raw x509 bytes (DER encoded).   | |
| KEY_TYPES | key_type () const | 
| Return the underlying public-key scheme.   | |
| std::unique_ptr< RsaInfo > | rsa_info () const | 
| If the underlying public-key scheme is RSA, return the RSA information. Otherwise, return a nullptr   | |
| VERIFICATION_FLAGS | verify (const x509 &ca) const | 
| Verify that this certificate has been used to trust the given certificate.   | |
| VERIFICATION_FLAGS | is_trusted_by (const std::vector< x509 > &ca) const | 
| Verify that this certificate is trusted by the given CA list.   | |
| std::vector< oid_t > | certificate_policies () const | 
| Policy information terms as OID (see RFC #5280).   | |
| std::vector< KEY_USAGE > | key_usage () const | 
| Purpose of the key contained in the certificate.   | |
| std::vector< oid_t > | ext_key_usage () const | 
| Indicates one or more purposes for which the certified public key may be used (OID types).   | |
| bool | is_ca () const | 
| std::vector< uint8_t > | signature () const | 
| The signature of the certificate.   | |
| void | accept (Visitor &visitor) const override | 
| ~x509 () override | |
| Public Member Functions inherited from LIEF::Object | |
| Object () | |
| Object (const Object &other) | |
| Object & | operator= (const Object &other) | 
| Object (Object &&other) noexcept=default | |
| Object & | operator= (Object &&other) noexcept=default | 
| template<class T> | |
| output_t< T > | as () | 
| template<class T> | |
| output_const_t< T > | as () const | 
| virtual bool | operator== (const Object &other) const | 
| virtual bool | operator!= (const Object &other) const | 
| virtual | ~Object () | 
Static Public Member Functions | |
| static certificates_t | parse (const std::string &path) | 
| Parse x509 certificate(s) from file path.   | |
| static certificates_t | parse (const std::vector< uint8_t > &content) | 
| Parse x509 certificate(s) from raw blob.   | |
| static bool | check_time (const date_t &before, const date_t &after) | 
| Return True if before is before than after. False otherwise.   | |
| static bool | time_is_past (const date_t &to) | 
| True if the given time is in the past according to the clock's system.   | |
| static bool | time_is_future (const date_t &from) | 
| True if the given time is in the future according to the clock's system.   | |
Interface over a x509 certificate.
| using LIEF::PE::x509::certificates_t = std::vector<x509> | 
| using LIEF::PE::x509::date_t = std::array<int32_t, 6> | 
Tuple (Year, Month, Day, Hour, Minute, Second).
      
  | 
  strong | 
Public key scheme.
| Enumerator | |
|---|---|
| NONE | Unknown scheme.  | 
| RSA | RSA Scheme.  | 
| ECKEY | Elliptic-curve scheme.  | 
| ECKEY_DH | Elliptic-curve Diffie-Hellman.  | 
| ECDSA | Elliptic-curve Digital Signature Algorithm.  | 
| RSA_ALT | RSA scheme with an alternative implementation for signing and decrypting.  | 
| RSASSA_PSS | RSA Probabilistic signature scheme.  | 
      
  | 
  strong | 
Key usage as defined in RFC #5280 - section-4.2.1.3.
      
  | 
  strong | 
Mirror of mbedtls's X509 Verify codes: MBEDTLS_X509_XX.
It must be sync with include/mbedtls/x509.h
| LIEF::PE::x509::x509 | ( | mbedtls_x509_crt * | ca | ) | 
Referenced by operator<<, operator=(), swap(), verify(), and x509().
      
  | 
  override | 
      
  | 
  overridevirtual | 
Implements LIEF::Object.
| std::vector< oid_t > LIEF::PE::x509::certificate_policies | ( | ) | const | 
Policy information terms as OID (see RFC #5280).
| bool LIEF::PE::x509::check_signature | ( | const std::vector< uint8_t > & | hash, | 
| const std::vector< uint8_t > & | signature, | ||
| ALGORITHMS | digest ) const | 
Try to decrypt the given signature and check if it matches the given hash according to the hash algorithm provided.
References LIEF::hash(), and signature().
Return True if before is before than after. False otherwise.
| std::vector< oid_t > LIEF::PE::x509::ext_key_usage | ( | ) | const | 
Indicates one or more purposes for which the certified public key may be used (OID types).
| bool LIEF::PE::x509::is_ca | ( | ) | const | 
| VERIFICATION_FLAGS LIEF::PE::x509::is_trusted_by | ( | const std::vector< x509 > & | ca | ) | const | 
Verify that this certificate is trusted by the given CA list.
| std::string LIEF::PE::x509::issuer | ( | ) | const | 
Issuer informations.
| KEY_TYPES LIEF::PE::x509::key_type | ( | ) | const | 
Return the underlying public-key scheme.
| std::vector< KEY_USAGE > LIEF::PE::x509::key_usage | ( | ) | const | 
Purpose of the key contained in the certificate.
      
  | 
  static | 
Parse x509 certificate(s) from file path.
      
  | 
  static | 
Parse x509 certificate(s) from raw blob.
| std::vector< uint8_t > LIEF::PE::x509::raw | ( | ) | const | 
The raw x509 bytes (DER encoded).
| std::unique_ptr< RsaInfo > LIEF::PE::x509::rsa_info | ( | ) | const | 
If the underlying public-key scheme is RSA, return the RSA information. Otherwise, return a nullptr
| std::vector< uint8_t > LIEF::PE::x509::serial_number | ( | ) | const | 
Unique id for certificate issued by a specific CA.
| std::vector< uint8_t > LIEF::PE::x509::signature | ( | ) | const | 
The signature of the certificate.
Referenced by check_signature().
| std::string LIEF::PE::x509::subject | ( | ) | const | 
Subject informations.
      
  | 
  static | 
True if the given time is in the future according to the clock's system.
      
  | 
  static | 
True if the given time is in the past according to the clock's system.
| date_t LIEF::PE::x509::valid_from | ( | ) | const | 
Start time of certificate validity.
| date_t LIEF::PE::x509::valid_to | ( | ) | const | 
End time of certificate validity.
| VERIFICATION_FLAGS LIEF::PE::x509::verify | ( | const x509 & | ca | ) | const | 
Verify that this certificate has been used to trust the given certificate.
References x509().
| uint32_t LIEF::PE::x509::version | ( | ) | const | 
X.509 version. (1=v1, 2=v2, 3=v3).