Function parseTime [src]

Returns number of seconds since epoch.

Prototype

pub fn parseTime(cert: Certificate, elem: der.Element) ParseTimeError!u64

Parameters

cert: Certificateelem: der.Element

Possible Errors

CertificateFieldHasWrongDataType
CertificateTimeInvalid

Source

pub fn parseTime(cert: Certificate, elem: der.Element) ParseTimeError!u64 { const bytes = cert.contents(elem); switch (elem.identifier.tag) { .utc_time => { // Example: "YYMMDD000000Z" if (bytes.len != 13) return error.CertificateTimeInvalid; if (bytes[12] != 'Z') return error.CertificateTimeInvalid; return Date.toSeconds(.{ .year = @as(u16, 2000) + try parseTimeDigits(bytes[0..2], 0, 99), .month = try parseTimeDigits(bytes[2..4], 1, 12), .day = try parseTimeDigits(bytes[4..6], 1, 31), .hour = try parseTimeDigits(bytes[6..8], 0, 23), .minute = try parseTimeDigits(bytes[8..10], 0, 59), .second = try parseTimeDigits(bytes[10..12], 0, 59), }); }, .generalized_time => { // Examples: // "19920521000000Z" // "19920622123421Z" // "19920722132100.3Z" if (bytes.len < 15) return error.CertificateTimeInvalid; return Date.toSeconds(.{ .year = try parseYear4(bytes[0..4]), .month = try parseTimeDigits(bytes[4..6], 1, 12), .day = try parseTimeDigits(bytes[6..8], 1, 31), .hour = try parseTimeDigits(bytes[8..10], 0, 23), .minute = try parseTimeDigits(bytes[10..12], 0, 59), .second = try parseTimeDigits(bytes[12..14], 0, 59), }); }, else => return error.CertificateFieldHasWrongDataType, } }