Function parse [src]

Prototype

pub fn parse(bytes: []const u8, index: u32) Element.ParseError!Element

Parameters

bytes: []const u8index: u32

Possible Errors

CertificateFieldHasInvalidLength

Source

pub fn parse(bytes: []const u8, index: u32) Element.ParseError!Element { var i = index; const identifier = @as(Identifier, @bitCast(bytes[i])); i += 1; const size_byte = bytes[i]; i += 1; if ((size_byte >> 7) == 0) { return .{ .identifier = identifier, .slice = .{ .start = i, .end = i + size_byte, }, }; } const len_size = @as(u7, @truncate(size_byte)); if (len_size > @sizeOf(u32)) { return error.CertificateFieldHasInvalidLength; } const end_i = i + len_size; var long_form_size: u32 = 0; while (i < end_i) : (i += 1) { long_form_size = (long_form_size << 8) | bytes[i]; } return .{ .identifier = identifier, .slice = .{ .start = i, .end = i + long_form_size, }, }; }