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