httpsdate
httpsdate->tls_addr, httpsdate->tls_hostname,
tls_error(httpsdate->tls_ctx));
buf = httpsdate->tls_request;
len = strlen(httpsdate->tls_request);
ret = tls_write(httpsdate->tls_ctx, buf, len);
httpsdate->tls_addr, httpsdate->tls_hostname,
tls_error(httpsdate->tls_ctx));
while ((line = tls_readline(httpsdate->tls_ctx, &outlen,
&httpsdate->tls_tm) == NULL) {
if (httpsdate->tls_tm.tm_year == 0)
notbefore = tls_peer_cert_notbefore(httpsdate->tls_ctx);
notafter = tls_peer_cert_notafter(httpsdate->tls_ctx);
if ((httptime = timegm(&httpsdate->tls_tm)) == -1)
&httpsdate->tls_tm) == 0)
"not before %s, now %s", httpsdate->tls_addr,
httpsdate->tls_hostname, timebuf1, timebuf2);
&httpsdate->tls_tm) == 0)
"not after %s, now %s", httpsdate->tls_addr,
httpsdate->tls_hostname, timebuf1, timebuf2);
httpsdate_free(httpsdate);
struct httpsdate *httpsdate;
if ((httpsdate = httpsdate_init(addr, port, hostname, path,
if (httpsdate_request(httpsdate, &when, synced) == -1)
t = timegm(&httpsdate->tls_tm);
return (httpsdate);
struct httpsdate *
int httpsdate_request(struct httpsdate *, struct timeval *, int);
struct httpsdate *
struct httpsdate *httpsdate = NULL;
if ((httpsdate = calloc(1, sizeof(*httpsdate))) == NULL)
if ((httpsdate->tls_addr = strdup(addr)) == NULL ||
(httpsdate->tls_port = strdup(port)) == NULL ||
(httpsdate->tls_hostname = strdup(hostname)) == NULL ||
(httpsdate->tls_path = strdup(path)) == NULL)
if (asprintf(&httpsdate->tls_request,
httpsdate->tls_path, httpsdate->tls_hostname) == -1)
if ((httpsdate->tls_config = tls_config_new()) == NULL)
if (tls_config_set_ca_mem(httpsdate->tls_config, ca, ca_len) == -1)
tls_config_insecure_noverifytime(httpsdate->tls_config);
return (httpsdate);
httpsdate_free(httpsdate);
struct httpsdate *httpsdate = arg;
if (httpsdate == NULL)
if (httpsdate->tls_ctx)
tls_close(httpsdate->tls_ctx);
tls_free(httpsdate->tls_ctx);
tls_config_free(httpsdate->tls_config);
free(httpsdate->tls_addr);
free(httpsdate->tls_port);
free(httpsdate->tls_hostname);
free(httpsdate->tls_path);
free(httpsdate->tls_request);
free(httpsdate);
httpsdate_request(struct httpsdate *httpsdate, struct timeval *when, int synced)
if ((httpsdate->tls_ctx = tls_client()) == NULL)
if (tls_configure(httpsdate->tls_ctx, httpsdate->tls_config) == -1)
if (tls_connect_servername(httpsdate->tls_ctx, httpsdate->tls_addr,
httpsdate->tls_port, httpsdate->tls_hostname) == -1) {