#pragma once #include #include #include #define PINNING_ST_NOT_PINNING 0 #define PINNING_ST_PINNING 1 #define PINNING_ST_MAYBE_PINNING 2 struct ssl_service_status { char pinning_status; char is_ev; char is_ct; char is_mutual_auth; }; struct ssl_service_cache; struct ssl_service_cache* ssl_service_cache_create(unsigned int slot_size, unsigned int expire_seconds); void ssl_service_cache_destroy(struct ssl_service_cache* cache); int ssl_service_cache_read(struct ssl_service_cache* svc_cache, const struct ssl_chello* chello, struct ssl_service_status* result); void ssl_service_cache_write(struct ssl_service_cache* svc_cache, const struct ssl_chello* chello, const struct ssl_service_status* status); struct ssl_service_cache_statistics { long long pinning_cli_cnt; long long mutual_auth_cli_cnt; long long ev_srv_cnt; long long ct_srv_cnt; }; void ssl_service_cache_stat(struct ssl_service_cache* svc_cache, struct ssl_service_cache_statistics* result);