5 // Created by Martin Baulig on 3/23/16.
6 // Copyright © 2016 Xamarin. All rights reserved.
13 extern int asn1_generalizedtime_to_tm (struct tm *tm, const ASN1_GENERALIZEDTIME *d);
15 extern int64_t btls_timegm64 (const struct tm *date);
19 mono_btls_free (void *data)
25 mono_btls_util_asn1_time_to_ticks (ASN1_TIME *time)
27 ASN1_GENERALIZEDTIME *gtime;
32 memset (&tm, 0, sizeof (tm));
34 gtime = ASN1_TIME_to_generalizedtime (time, NULL);
35 ret = asn1_generalizedtime_to_tm (&tm, gtime);
36 ASN1_GENERALIZEDTIME_free (gtime);
37 epoch = btls_timegm64 (&tm);
42 // Copied from crypto/bio/printf.c, takes va_list
44 mono_btls_debug_printf (BIO *bio, const char *format, va_list args)
46 char buf[256], *out, out_malloced = 0;
49 out_len = vsnprintf (buf, sizeof(buf), format, args);
54 if ((size_t) out_len >= sizeof(buf)) {
55 const int requested_len = out_len;
56 /* The output was truncated. Note that vsnprintf's return value
57 * does not include a trailing NUL, but the buffer must be sized
59 out = OPENSSL_malloc (requested_len + 1);
62 OPENSSL_PUT_ERROR(BIO, ERR_R_MALLOC_FAILURE);
65 out_len = vsnprintf (out, requested_len + 1, format, args);
66 assert(out_len == requested_len);
71 ret = BIO_write(bio, out, out_len);