FreeRDP
Loading...
Searching...
No Matches
include/freerdp/crypto/certificate.h
1
21#ifndef FREERDP_CRYPTO_CERTIFICATE_H
22#define FREERDP_CRYPTO_CERTIFICATE_H
23
24#include <winpr/crypto.h>
25
26#include <freerdp/api.h>
27
28#ifdef __cplusplus
29extern "C"
30{
31#endif
32
33 enum FREERDP_CERT_PARAM
34 {
35 FREERDP_CERT_RSA_E,
36 FREERDP_CERT_RSA_N
37 };
38
39 typedef struct rdp_certificate rdpCertificate;
40
41 FREERDP_API void freerdp_certificate_free(rdpCertificate* certificate);
42
43 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
44 FREERDP_API rdpCertificate* freerdp_certificate_new(void);
45
46 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
47 FREERDP_API rdpCertificate* freerdp_certificate_new_from_file(const char* file);
48
49 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
50 FREERDP_API rdpCertificate* freerdp_certificate_new_from_pem(const char* pem);
51
52 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
53 FREERDP_API rdpCertificate* freerdp_certificate_new_from_der(const BYTE* data, size_t length);
54
55 WINPR_ATTR_NODISCARD
56 FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate);
57
58 WINPR_ATTR_MALLOC(free, 1)
59 FREERDP_API char* freerdp_certificate_get_hash(const rdpCertificate* certificate,
60 const char* hash, size_t* plength);
61
62 WINPR_ATTR_MALLOC(free, 1)
63 FREERDP_API char* freerdp_certificate_get_fingerprint_by_hash(const rdpCertificate* certificate,
64 const char* hash);
65
66 WINPR_ATTR_MALLOC(free, 1)
67 FREERDP_API char*
68 freerdp_certificate_get_fingerprint_by_hash_ex(const rdpCertificate* certificate,
69 const char* hash, BOOL separator);
70
71 WINPR_ATTR_MALLOC(free, 1)
72 FREERDP_API char* freerdp_certificate_get_fingerprint(const rdpCertificate* certificate);
73
74 WINPR_ATTR_MALLOC(free, 1)
75 FREERDP_API char* freerdp_certificate_get_pem(const rdpCertificate* certificate,
76 size_t* pLength);
77
87 WINPR_ATTR_MALLOC(free, 1)
88 FREERDP_API char* freerdp_certificate_get_pem_ex(const rdpCertificate* certificate,
89 size_t* pLength, BOOL withCertChain);
90
91 WINPR_ATTR_MALLOC(free, 1)
92 FREERDP_API BYTE* freerdp_certificate_get_der(const rdpCertificate* certificate,
93 size_t* pLength);
94
95 WINPR_ATTR_MALLOC(free, 1)
96 FREERDP_API char* freerdp_certificate_get_subject(const rdpCertificate* certificate);
97
98 WINPR_ATTR_MALLOC(free, 1)
99 FREERDP_API char* freerdp_certificate_get_issuer(const rdpCertificate* certificate);
100
101 WINPR_ATTR_MALLOC(free, 1)
102 FREERDP_API char* freerdp_certificate_get_upn(const rdpCertificate* certificate);
103
104 WINPR_ATTR_MALLOC(free, 1)
105 FREERDP_API char* freerdp_certificate_get_email(const rdpCertificate* certificate);
106
114 WINPR_ATTR_MALLOC(free, 1)
115 FREERDP_API char* freerdp_certificate_get_validity(const rdpCertificate* certificate,
116 BOOL startDate);
117
118 WINPR_ATTR_NODISCARD
119 FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert);
120
121 WINPR_ATTR_MALLOC(free, 1)
122 FREERDP_API char* freerdp_certificate_get_common_name(const rdpCertificate* cert,
123 size_t* plength);
124
125 FREERDP_API void freerdp_certificate_free_dns_names(size_t count, size_t* lengths,
126 char** names);
127
135 WINPR_ATTR_MALLOC(freerdp_certificate_free_dns_names, 3)
136 FREERDP_API char** freerdp_certificate_get_dns_names(const rdpCertificate* cert, size_t* pcount,
137 size_t** pplengths);
138
147 FREERDP_API void freerdp_certificate_free_ip_names(size_t count, size_t* lengths, char** names);
148
158 WINPR_ATTR_MALLOC(freerdp_certificate_free_ip_names, 3)
159 FREERDP_API char** freerdp_certificate_get_ip_names(const rdpCertificate* cert, size_t* pcount,
160 size_t** pplengths);
161
181 WINPR_ATTR_NODISCARD
182 FREERDP_API BOOL freerdp_certificate_matches_hostname(const rdpCertificate* cert,
183 const char* hostname, size_t hostlen);
184
185 WINPR_ATTR_NODISCARD
186 FREERDP_API BOOL freerdp_certificate_check_eku(const rdpCertificate* certificate, int nid);
187
188 WINPR_ATTR_NODISCARD
189 FREERDP_API BOOL freerdp_certificate_get_public_key(const rdpCertificate* cert,
190 BYTE** PublicKey, DWORD* PublicKeyLength);
191
192 WINPR_ATTR_NODISCARD
193 FREERDP_API BOOL freerdp_certificate_verify(const rdpCertificate* cert,
194 const char* certificate_store_path);
195
196 WINPR_ATTR_NODISCARD
197 FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert);
198
199 WINPR_ATTR_MALLOC(free, 1)
200 FREERDP_API char* freerdp_certificate_get_param(const rdpCertificate* cert,
201 enum FREERDP_CERT_PARAM what, size_t* psize);
202
203#ifdef __cplusplus
204}
205#endif
206
207#endif /* FREERDP_CRYPTO_CERTIFICATE_H */