1 /** 2 * FreeRDP: A Remote Desktop Protocol Implementation 3 * Certificate Handling 4 * 5 * Copyright 2011-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com> 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 #ifndef FREERDP_CRYPTO_CERTIFICATE_H 21 #define FREERDP_CRYPTO_CERTIFICATE_H 22 23 typedef struct rdp_certificate_data rdpCertificateData; 24 typedef struct rdp_certificate_store rdpCertificateStore; 25 26 #include <freerdp/crypto/ber.h> 27 #include <freerdp/crypto/crypto.h> 28 29 #include <freerdp/api.h> 30 #include <freerdp/settings.h> 31 32 #include <winpr/print.h> 33 #include <winpr/stream.h> 34 35 struct rdp_certificate_data 36 { 37 char* hostname; 38 UINT16 port; 39 char* subject; 40 char* issuer; 41 char* fingerprint; 42 }; 43 44 struct rdp_certificate_store 45 { 46 char* path; 47 char* file; 48 char* legacy_file; 49 rdpSettings* settings; 50 rdpCertificateData* certificate_data; 51 }; 52 53 #ifdef __cplusplus 54 extern "C" 55 { 56 #endif 57 58 FREERDP_API rdpCertificateData* certificate_data_new(const char* hostname, UINT16 port, 59 const char* subject, const char* issuer, 60 const char* fingerprint); 61 FREERDP_API void certificate_data_free(rdpCertificateData* certificate_data); 62 FREERDP_API rdpCertificateStore* certificate_store_new(rdpSettings* settings); 63 FREERDP_API BOOL certificate_data_replace(rdpCertificateStore* certificate_store, 64 rdpCertificateData* certificate_data); 65 FREERDP_API void certificate_store_free(rdpCertificateStore* certificate_store); 66 FREERDP_API int certificate_data_match(rdpCertificateStore* certificate_store, 67 rdpCertificateData* certificate_data); 68 FREERDP_API BOOL certificate_data_print(rdpCertificateStore* certificate_store, 69 rdpCertificateData* certificate_data); 70 FREERDP_API BOOL certificate_get_stored_data(rdpCertificateStore* certificate_store, 71 rdpCertificateData* certificate_data, 72 char** subject, char** issuer, char** fingerprint); 73 74 #ifdef __cplusplus 75 } 76 #endif 77 78 #endif /* FREERDP_CRYPTO_CERTIFICATE_H */ 79