crtin 0.1.0

Certificate introspection tool
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "utils.h"

int decode_asn1_time(const unsigned char *data, size_t len, char *out, size_t out_len) {
    if (len < 13 || out_len < 20) return -1;
    const char *p = (const char *)data;
    if (p[0] != 0x17 && p[0] != 0x18) return -1;
    size_t dlen = (unsigned char)p[1];
    if (dlen < 13 || dlen > len - 2) return -1;
    const char *t = p + 2;
    snprintf(out, out_len, "%.4s-%.2s-%.2sT%.2s:%.2s:%.2sZ",
             t, t + 4, t + 6, t + 8, t + 10, t + 12);
    return 0;
}