00001 00023 #ifndef MBEDTLS_SSL_COOKIE_H 00024 #define MBEDTLS_SSL_COOKIE_H 00025 00026 #include "ssl.h" 00027 00028 #if defined(MBEDTLS_THREADING_C) 00029 #include "threading.h" 00030 #endif 00031 00039 #ifndef MBEDTLS_SSL_COOKIE_TIMEOUT 00040 #define MBEDTLS_SSL_COOKIE_TIMEOUT 60 00041 #endif 00042 00043 /* \} name SECTION: Module settings */ 00044 00045 #ifdef __cplusplus 00046 extern "C" { 00047 #endif 00048 00052 typedef struct 00053 { 00054 mbedtls_md_context_t hmac_ctx; 00055 #if !defined(MBEDTLS_HAVE_TIME) 00056 unsigned long serial; 00057 #endif 00058 unsigned long timeout; 00061 #if defined(MBEDTLS_THREADING_C) 00062 mbedtls_threading_mutex_t mutex; 00063 #endif 00064 } mbedtls_ssl_cookie_ctx; 00065 00069 void mbedtls_ssl_cookie_init( mbedtls_ssl_cookie_ctx *ctx ); 00070 00074 int mbedtls_ssl_cookie_setup( mbedtls_ssl_cookie_ctx *ctx, 00075 int (*f_rng)(void *, unsigned char *, size_t), 00076 void *p_rng ); 00077 00087 void mbedtls_ssl_cookie_set_timeout( mbedtls_ssl_cookie_ctx *ctx, unsigned long delay ); 00088 00092 void mbedtls_ssl_cookie_free( mbedtls_ssl_cookie_ctx *ctx ); 00093 00097 mbedtls_ssl_cookie_write_t mbedtls_ssl_cookie_write; 00098 00102 mbedtls_ssl_cookie_check_t mbedtls_ssl_cookie_check; 00103 00104 #ifdef __cplusplus 00105 } 00106 #endif 00107 00108 #endif /* ssl_cookie.h */