5 // Created by Martin Baulig on 3/23/16.
6 // Copyright © 2016 Xamarin. All rights reserved.
13 #if defined(__ANDROID__) && !defined(__LP64__)
15 extern time_t timegm (struct tm* const t);
18 extern int asn1_generalizedtime_to_tm (struct tm *tm, const ASN1_GENERALIZEDTIME *d);
21 mono_btls_free (void *data)
27 mono_btls_util_asn1_time_to_ticks (ASN1_TIME *time)
29 ASN1_GENERALIZEDTIME *gtime;
33 gtime = ASN1_TIME_to_generalizedtime (time, NULL);
34 asn1_generalizedtime_to_tm (&tm, gtime);
35 ASN1_GENERALIZEDTIME_free (gtime);
41 // Copied from crypto/bio/printf.c, takes va_list
43 mono_btls_debug_printf (BIO *bio, const char *format, va_list args)
45 char buf[256], *out, out_malloced = 0;
48 out_len = vsnprintf (buf, sizeof(buf), format, args);
53 if ((size_t) out_len >= sizeof(buf)) {
54 const int requested_len = out_len;
55 /* The output was truncated. Note that vsnprintf's return value
56 * does not include a trailing NUL, but the buffer must be sized
58 out = OPENSSL_malloc (requested_len + 1);
61 OPENSSL_PUT_ERROR(BIO, ERR_R_MALLOC_FAILURE);
64 out_len = vsnprintf (out, requested_len + 1, format, args);
65 assert(out_len == requested_len);
70 ret = BIO_write(bio, out, out_len);