Function verifyHostName [src]

Prototype

pub fn verifyHostName(parsed_subject: Parsed, host_name: []const u8) VerifyHostNameError!void

Parameters

parsed_subject: Parsedhost_name: []const u8

Possible Errors

CertificateFieldHasInvalidLength
CertificateHostMismatch

Source

pub fn verifyHostName(parsed_subject: Parsed, host_name: []const u8) VerifyHostNameError!void { // If the Subject Alternative Names extension is present, this is // what to check. Otherwise, only the common name is checked. const subject_alt_name = parsed_subject.subjectAltName(); if (subject_alt_name.len == 0) { if (checkHostName(host_name, parsed_subject.commonName())) { return; } else { return error.CertificateHostMismatch; } } const general_names = try der.Element.parse(subject_alt_name, 0); var name_i = general_names.slice.start; while (name_i < general_names.slice.end) { const general_name = try der.Element.parse(subject_alt_name, name_i); name_i = general_name.slice.end; switch (@as(GeneralNameTag, @enumFromInt(@intFromEnum(general_name.identifier.tag)))) { .dNSName => { const dns_name = subject_alt_name[general_name.slice.start..general_name.slice.end]; if (checkHostName(host_name, dns_name)) return; }, else => {}, } } return error.CertificateHostMismatch; }