21#ifndef FREERDP_CRYPTO_CERTIFICATE_H
22#define FREERDP_CRYPTO_CERTIFICATE_H
24#include <winpr/crypto.h>
26#include <freerdp/api.h>
33 enum FREERDP_CERT_PARAM
39 typedef struct rdp_certificate rdpCertificate;
41 FREERDP_API
void freerdp_certificate_free(rdpCertificate* certificate);
43 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
45 FREERDP_API rdpCertificate* freerdp_certificate_new(
void);
47 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
49 FREERDP_API rdpCertificate* freerdp_certificate_new_from_file(const
char* file);
51 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
53 FREERDP_API rdpCertificate* freerdp_certificate_new_from_pem(const
char* pem);
55 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
57 FREERDP_API rdpCertificate* freerdp_certificate_new_from_der(const BYTE* data,
size_t length);
59 FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate);
61 WINPR_ATTR_MALLOC(free, 1)
63 FREERDP_API
char* freerdp_certificate_get_hash(const rdpCertificate* certificate,
64 const
char* hash,
size_t* plength);
66 WINPR_ATTR_MALLOC(free, 1)
68 FREERDP_API
char* freerdp_certificate_get_fingerprint_by_hash(const rdpCertificate* certificate,
71 WINPR_ATTR_MALLOC(free, 1)
74 freerdp_certificate_get_fingerprint_by_hash_ex(const rdpCertificate* certificate,
75 const
char* hash, BOOL separator);
77 WINPR_ATTR_MALLOC(free, 1)
79 FREERDP_API
char* freerdp_certificate_get_fingerprint(const rdpCertificate* certificate);
81 WINPR_ATTR_MALLOC(free, 1)
83 FREERDP_API
char* freerdp_certificate_get_pem(const rdpCertificate* certificate,
95 WINPR_ATTR_MALLOC(free, 1)
97 FREERDP_API
char* freerdp_certificate_get_pem_ex(const rdpCertificate* certificate,
98 size_t* pLength, BOOL withCertChain);
100 WINPR_ATTR_MALLOC(free, 1)
102 FREERDP_API BYTE* freerdp_certificate_get_der(const rdpCertificate* certificate,
105 WINPR_ATTR_MALLOC(free, 1)
107 FREERDP_API
char* freerdp_certificate_get_subject(const rdpCertificate* certificate);
109 WINPR_ATTR_MALLOC(free, 1)
111 FREERDP_API
char* freerdp_certificate_get_issuer(const rdpCertificate* certificate);
113 WINPR_ATTR_MALLOC(free, 1)
115 FREERDP_API
char* freerdp_certificate_get_upn(const rdpCertificate* certificate);
117 WINPR_ATTR_MALLOC(free, 1)
119 FREERDP_API
char* freerdp_certificate_get_email(const rdpCertificate* certificate);
128 WINPR_ATTR_MALLOC(free, 1)
130 FREERDP_API
char* freerdp_certificate_get_validity(const rdpCertificate* certificate,
133 FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert);
135 WINPR_ATTR_MALLOC(free, 1)
137 FREERDP_API
char* freerdp_certificate_get_common_name(const rdpCertificate* cert,
140 WINPR_ATTR_MALLOC(free, 1)
142 FREERDP_API
char** freerdp_certificate_get_dns_names(const rdpCertificate* cert,
size_t* pcount,
144 FREERDP_API
void freerdp_certificate_free_dns_names(
size_t count,
size_t* lengths,
147 FREERDP_API BOOL freerdp_certificate_check_eku(const rdpCertificate* certificate,
int nid);
149 FREERDP_API BOOL freerdp_certificate_get_public_key(const rdpCertificate* cert,
150 BYTE** PublicKey, DWORD* PublicKeyLength);
152 FREERDP_API BOOL freerdp_certificate_verify(const rdpCertificate* cert,
153 const
char* certificate_store_path);
155 FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert);
157 WINPR_ATTR_MALLOC(free, 1)
159 FREERDP_API
char* freerdp_certificate_get_param(const rdpCertificate* cert,
160 enum FREERDP_CERT_PARAM what,
size_t* psize);