5 // Created by Martin Baulig on 4/11/16.
6 // Copyright © 2016 Xamarin. All rights reserved.
9 #ifndef __btls_ssl_ctx__btls_ssl_ctx__
10 #define __btls_ssl_ctx__btls_ssl_ctx__
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
);
36 mono_btls_ssl_ctx_new (void);
39 mono_btls_ssl_ctx_up_ref (MonoBtlsSslCtx
*ctx
);
42 mono_btls_ssl_ctx_free (MonoBtlsSslCtx
*ctx
);
45 mono_btls_ssl_ctx_initialize (MonoBtlsSslCtx
*ctx
, void *instance
);
48 mono_btls_ssl_ctx_get_ctx (MonoBtlsSslCtx
*ctx
);
51 mono_btls_ssl_ctx_debug_printf (MonoBtlsSslCtx
*ctx
, const char *format
, ...);
54 mono_btls_ssl_ctx_is_debug_enabled (MonoBtlsSslCtx
*ctx
);
57 mono_btls_ssl_ctx_set_cert_verify_callback (MonoBtlsSslCtx
*ptr
, MonoBtlsVerifyFunc func
, int cert_required
);
60 mono_btls_ssl_ctx_set_cert_select_callback (MonoBtlsSslCtx
*ptr
, MonoBtlsSelectFunc func
);
63 mono_btls_ssl_ctx_set_debug_bio (MonoBtlsSslCtx
*ctx
, BIO
*debug_bio
);
66 mono_btls_ssl_ctx_peek_store (MonoBtlsSslCtx
*ctx
);
69 mono_btls_ssl_ctx_set_min_version (MonoBtlsSslCtx
*ctx
, int version
);
72 mono_btls_ssl_ctx_set_max_version (MonoBtlsSslCtx
*ctx
, int version
);
75 mono_btls_ssl_ctx_is_cipher_supported (MonoBtlsSslCtx
*ctx
, uint16_t value
);
78 mono_btls_ssl_ctx_set_ciphers (MonoBtlsSslCtx
*ctx
, int count
, const uint16_t *data
,
79 int allow_unsupported
);
82 mono_btls_ssl_ctx_set_verify_param (MonoBtlsSslCtx
*ctx
, const MonoBtlsX509VerifyParam
*param
);
84 #endif /* __btls_ssl_ctx__btls_ssl_ctx__ */