#ifndef COSMOPOLITAN_NET_HTTPS_SSLCACHE_H_
#define COSMOPOLITAN_NET_HTTPS_SSLCACHE_H_
#include "third_party/mbedtls/ssl.h"
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_

struct SslCache {
  size_t size;
  int lifetime;
  uint32_t mask;
  struct SslCacheEntry {
    int64_t time;
    volatile uint64_t tick;
    volatile int pid;
    uint32_t hash;
    unsigned certlen;
    unsigned ticketlen;
    mbedtls_ssl_session session;
    uint8_t cert[1500];
    uint8_t ticket[500];
  } p[];
};

struct SslCache *CreateSslCache(const char *, size_t, int);
void FreeSslCache(struct SslCache *);
int UncacheSslSession(void *, mbedtls_ssl_session *);
int CacheSslSession(void *, const mbedtls_ssl_session *);
char *GetSslCacheFile(void);

COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_NET_HTTPS_SSLCACHE_H_ */