func (info *HostCertificateInfo) toName(s string) *pkix.Name { var name pkix.Name for _, pair := range strings.Split(s, ",") { attr := strings.SplitN(pair, "=", 2) if len(attr) != 2 { continue } v := attr[1] switch strings.ToLower(attr[0]) { case "cn": name.CommonName = v case "ou": name.OrganizationalUnit = append(name.OrganizationalUnit, v) case "o": name.Organization = append(name.Organization, v) case "l": name.Locality = append(name.Locality, v) case "st": name.Province = append(name.Province, v) case "c": name.Country = append(name.Country, v) case "emailaddress": name.Names = append(name.Names, pkix.AttributeTypeAndValue{Type: emailAddressOID, Value: v}) } } return &name }
// Name returns the subject info as a PKIX name strucutre for a // certificate. func (si *SubjectInfo) Name() pkix.Name { var name pkix.Name if si.Country != "" { name.Country = []string{si.Country} } if si.OrgName != "" { name.Organization = []string{si.OrgName} } if si.OrgUnitName != "" { name.OrganizationalUnit = []string{si.OrgUnitName} } if si.Locality != "" { name.Locality = []string{si.Locality} } if si.StateOrProvince != "" { name.Province = []string{si.StateOrProvince} } if si.CommonName != "" { name.CommonName = si.CommonName } if si.Email != "" { name.Names = []pkix.AttributeTypeAndValue{ pkix.AttributeTypeAndValue{ Type: asn1EmailAddress, Value: si.Email, }, } } return name }