Remove allocations from Dns.* (dotnet/corefx#41061)
[mono-project.git] / mono / btls / btls-ssl-ctx.h
blob8874dd9ed0e4bb32c8f76ffba0bf2acfa9889214
1 //
2 // btls-ssl-ctx.h
3 // MonoBtls
4 //
5 // Created by Martin Baulig on 4/11/16.
6 // Copyright © 2016 Xamarin. All rights reserved.
7 //
9 #ifndef __btls_ssl_ctx__btls_ssl_ctx__
10 #define __btls_ssl_ctx__btls_ssl_ctx__
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include <openssl/ssl.h>
16 #include "btls-util.h"
18 typedef struct MonoBtlsBio MonoBtlsBio;
19 typedef struct MonoBtlsX509Chain MonoBtlsX509Chain;
20 typedef struct MonoBtlsX509Crl MonoBtlsX509Crl;
21 typedef struct MonoBtlsX509Lookup MonoBtlsX509Lookup;
22 typedef struct MonoBtlsX509LookupMono MonoBtlsX509LookupMono;
23 typedef struct MonoBtlsX509Name MonoBtlsX509Name;
24 typedef struct MonoBtlsX509Store MonoBtlsX509Store;
25 typedef struct MonoBtlsX509StoreCtx MonoBtlsX509StoreCtx;
26 typedef struct MonoBtlsX509Revoked MonoBtlsX509Revoked;
27 typedef struct MonoBtlsX509VerifyParam MonoBtlsX509VerifyParam;
28 typedef struct MonoBtlsPkcs12 MonoBtlsPkcs12;
29 typedef struct MonoBtlsSsl MonoBtlsSsl;
30 typedef struct MonoBtlsSslCtx MonoBtlsSslCtx;
32 typedef int (* MonoBtlsVerifyFunc) (void *instance, int preverify_ok, X509_STORE_CTX *ctx);
33 typedef int (* MonoBtlsSelectFunc) (void *instance, int countIssuers, const int *sizes, void **issuerData);
34 typedef int (* MonoBtlsServerNameFunc) (void *instance);
36 MONO_API MonoBtlsSslCtx *
37 mono_btls_ssl_ctx_new (void);
39 MONO_API MonoBtlsSslCtx *
40 mono_btls_ssl_ctx_up_ref (MonoBtlsSslCtx *ctx);
42 MONO_API int
43 mono_btls_ssl_ctx_free (MonoBtlsSslCtx *ctx);
45 MONO_API void
46 mono_btls_ssl_ctx_initialize (MonoBtlsSslCtx *ctx, void *instance);
48 MONO_API SSL_CTX *
49 mono_btls_ssl_ctx_get_ctx (MonoBtlsSslCtx *ctx);
51 MONO_API int
52 mono_btls_ssl_ctx_debug_printf (MonoBtlsSslCtx *ctx, const char *format, ...);
54 MONO_API int
55 mono_btls_ssl_ctx_is_debug_enabled (MonoBtlsSslCtx *ctx);
57 MONO_API void
58 mono_btls_ssl_ctx_set_cert_verify_callback (MonoBtlsSslCtx *ptr, MonoBtlsVerifyFunc func, int cert_required);
60 MONO_API void
61 mono_btls_ssl_ctx_set_cert_select_callback (MonoBtlsSslCtx *ptr, MonoBtlsSelectFunc func);
63 MONO_API void
64 mono_btls_ssl_ctx_set_debug_bio (MonoBtlsSslCtx *ctx, BIO *debug_bio);
66 MONO_API X509_STORE *
67 mono_btls_ssl_ctx_peek_store (MonoBtlsSslCtx *ctx);
69 MONO_API void
70 mono_btls_ssl_ctx_set_min_version (MonoBtlsSslCtx *ctx, int version);
72 MONO_API void
73 mono_btls_ssl_ctx_set_max_version (MonoBtlsSslCtx *ctx, int version);
75 MONO_API int
76 mono_btls_ssl_ctx_is_cipher_supported (MonoBtlsSslCtx *ctx, uint16_t value);
78 MONO_API int
79 mono_btls_ssl_ctx_set_ciphers (MonoBtlsSslCtx *ctx, int count, const uint16_t *data,
80 int allow_unsupported);
82 MONO_API int
83 mono_btls_ssl_ctx_set_verify_param (MonoBtlsSslCtx *ctx, const MonoBtlsX509VerifyParam *param);
85 MONO_API int
86 mono_btls_ssl_ctx_set_client_ca_list (MonoBtlsSslCtx *ctx, int count, int *sizes, const void **data);
88 MONO_API void
89 mono_btls_ssl_ctx_set_server_name_callback (MonoBtlsSslCtx *ctx, MonoBtlsServerNameFunc func);
91 #endif /* __btls_ssl_ctx__btls_ssl_ctx__ */