FreeRDP
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
29 extern "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  FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate);
56 
57  WINPR_ATTR_MALLOC(free, 1)
58  FREERDP_API char* freerdp_certificate_get_hash(const rdpCertificate* certificate,
59  const char* hash, size_t* plength);
60 
61  WINPR_ATTR_MALLOC(free, 1)
62  FREERDP_API char* freerdp_certificate_get_fingerprint_by_hash(const rdpCertificate* certificate,
63  const char* hash);
64 
65  WINPR_ATTR_MALLOC(free, 1)
66  FREERDP_API char*
67  freerdp_certificate_get_fingerprint_by_hash_ex(const rdpCertificate* certificate,
68  const char* hash, BOOL separator);
69 
70  WINPR_ATTR_MALLOC(free, 1)
71  FREERDP_API char* freerdp_certificate_get_fingerprint(const rdpCertificate* certificate);
72 
73  WINPR_ATTR_MALLOC(free, 1)
74  FREERDP_API char* freerdp_certificate_get_pem(const rdpCertificate* certificate,
75  size_t* pLength);
76 
86  WINPR_ATTR_MALLOC(free, 1)
87  FREERDP_API char* freerdp_certificate_get_pem_ex(const rdpCertificate* certificate,
88  size_t* pLength, BOOL withCertChain);
89 
90  WINPR_ATTR_MALLOC(free, 1)
91  FREERDP_API BYTE* freerdp_certificate_get_der(const rdpCertificate* certificate,
92  size_t* pLength);
93 
94  WINPR_ATTR_MALLOC(free, 1)
95  FREERDP_API char* freerdp_certificate_get_subject(const rdpCertificate* certificate);
96 
97  WINPR_ATTR_MALLOC(free, 1)
98  FREERDP_API char* freerdp_certificate_get_issuer(const rdpCertificate* certificate);
99 
100  WINPR_ATTR_MALLOC(free, 1)
101  FREERDP_API char* freerdp_certificate_get_upn(const rdpCertificate* certificate);
102 
103  WINPR_ATTR_MALLOC(free, 1)
104  FREERDP_API char* freerdp_certificate_get_email(const rdpCertificate* certificate);
105 
113  WINPR_ATTR_MALLOC(free, 1)
114  FREERDP_API char* freerdp_certificate_get_validity(const rdpCertificate* certificate,
115  BOOL startDate);
116 
117  FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert);
118 
119  WINPR_ATTR_MALLOC(free, 1)
120  FREERDP_API char* freerdp_certificate_get_common_name(const rdpCertificate* cert,
121  size_t* plength);
122 
123  WINPR_ATTR_MALLOC(free, 1)
124  FREERDP_API char** freerdp_certificate_get_dns_names(const rdpCertificate* cert, size_t* pcount,
125  size_t** pplengths);
126  FREERDP_API void freerdp_certificate_free_dns_names(size_t count, size_t* lengths,
127  char** names);
128 
129  FREERDP_API BOOL freerdp_certificate_check_eku(const rdpCertificate* certificate, int nid);
130 
131  FREERDP_API BOOL freerdp_certificate_get_public_key(const rdpCertificate* cert,
132  BYTE** PublicKey, DWORD* PublicKeyLength);
133 
134  FREERDP_API BOOL freerdp_certificate_verify(const rdpCertificate* cert,
135  const char* certificate_store_path);
136 
137  FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert);
138 
139  WINPR_ATTR_MALLOC(free, 1)
140  FREERDP_API char* freerdp_certificate_get_param(const rdpCertificate* cert,
141  enum FREERDP_CERT_PARAM what, size_t* psize);
142 
143 #ifdef __cplusplus
144 }
145 #endif
146 
147 #endif /* FREERDP_CRYPTO_CERTIFICATE_H */