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 WINPR_ATTR_NODISCARD
45 FREERDP_API rdpCertificate* freerdp_certificate_new(void);
46
47 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
48 WINPR_ATTR_NODISCARD
49 FREERDP_API rdpCertificate* freerdp_certificate_new_from_file(const char* file);
50
51 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
52 WINPR_ATTR_NODISCARD
53 FREERDP_API rdpCertificate* freerdp_certificate_new_from_pem(const char* pem);
54
55 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1)
56 WINPR_ATTR_NODISCARD
57 FREERDP_API rdpCertificate* freerdp_certificate_new_from_der(const BYTE* data, size_t length);
58
59 WINPR_ATTR_NODISCARD
60 FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate);
61
62 WINPR_ATTR_MALLOC(free, 1)
63 WINPR_ATTR_NODISCARD
64 FREERDP_API char* freerdp_certificate_get_hash(const rdpCertificate* certificate,
65 const char* hash, size_t* plength);
66
67 WINPR_ATTR_MALLOC(free, 1)
68 WINPR_ATTR_NODISCARD
69 FREERDP_API char* freerdp_certificate_get_fingerprint_by_hash(const rdpCertificate* certificate,
70 const char* hash);
71
72 WINPR_ATTR_MALLOC(free, 1)
73 WINPR_ATTR_NODISCARD
74 FREERDP_API char*
75 freerdp_certificate_get_fingerprint_by_hash_ex(const rdpCertificate* certificate,
76 const char* hash, BOOL separator);
77
78 WINPR_ATTR_MALLOC(free, 1)
79 WINPR_ATTR_NODISCARD
80 FREERDP_API char* freerdp_certificate_get_fingerprint(const rdpCertificate* certificate);
81
82 WINPR_ATTR_MALLOC(free, 1)
83 WINPR_ATTR_NODISCARD
84 FREERDP_API char* freerdp_certificate_get_pem(const rdpCertificate* certificate,
85 size_t* pLength);
86
96 WINPR_ATTR_MALLOC(free, 1)
97 WINPR_ATTR_NODISCARD
98 FREERDP_API char* freerdp_certificate_get_pem_ex(const rdpCertificate* certificate,
99 size_t* pLength, BOOL withCertChain);
100
101 WINPR_ATTR_MALLOC(free, 1)
102 WINPR_ATTR_NODISCARD
103 FREERDP_API BYTE* freerdp_certificate_get_der(const rdpCertificate* certificate,
104 size_t* pLength);
105
106 WINPR_ATTR_MALLOC(free, 1)
107 WINPR_ATTR_NODISCARD
108 FREERDP_API char* freerdp_certificate_get_subject(const rdpCertificate* certificate);
109
110 WINPR_ATTR_MALLOC(free, 1)
111 WINPR_ATTR_NODISCARD
112 FREERDP_API char* freerdp_certificate_get_issuer(const rdpCertificate* certificate);
113
114 WINPR_ATTR_MALLOC(free, 1)
115 WINPR_ATTR_NODISCARD
116 FREERDP_API char* freerdp_certificate_get_upn(const rdpCertificate* certificate);
117
118 WINPR_ATTR_MALLOC(free, 1)
119 WINPR_ATTR_NODISCARD
120 FREERDP_API char* freerdp_certificate_get_email(const rdpCertificate* certificate);
121
129 WINPR_ATTR_MALLOC(free, 1)
130 WINPR_ATTR_NODISCARD
131 FREERDP_API char* freerdp_certificate_get_validity(const rdpCertificate* certificate,
132 BOOL startDate);
133
134 WINPR_ATTR_NODISCARD
135 FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert);
136
137 WINPR_ATTR_MALLOC(free, 1)
138 WINPR_ATTR_NODISCARD
139 FREERDP_API char* freerdp_certificate_get_common_name(const rdpCertificate* cert,
140 size_t* plength);
141
142 WINPR_ATTR_MALLOC(free, 1)
143 WINPR_ATTR_NODISCARD
144 FREERDP_API char** freerdp_certificate_get_dns_names(const rdpCertificate* cert, size_t* pcount,
145 size_t** pplengths);
146 FREERDP_API void freerdp_certificate_free_dns_names(size_t count, size_t* lengths,
147 char** names);
148
149 WINPR_ATTR_NODISCARD
150 FREERDP_API BOOL freerdp_certificate_check_eku(const rdpCertificate* certificate, int nid);
151
152 WINPR_ATTR_NODISCARD
153 FREERDP_API BOOL freerdp_certificate_get_public_key(const rdpCertificate* cert,
154 BYTE** PublicKey, DWORD* PublicKeyLength);
155
156 WINPR_ATTR_NODISCARD
157 FREERDP_API BOOL freerdp_certificate_verify(const rdpCertificate* cert,
158 const char* certificate_store_path);
159
160 WINPR_ATTR_NODISCARD
161 FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert);
162
163 WINPR_ATTR_MALLOC(free, 1)
164 WINPR_ATTR_NODISCARD
165 FREERDP_API char* freerdp_certificate_get_param(const rdpCertificate* cert,
166 enum FREERDP_CERT_PARAM what, size_t* psize);
167
168#ifdef __cplusplus
169}
170#endif
171
172#endif /* FREERDP_CRYPTO_CERTIFICATE_H */