util/encodings.go
func AllAlternateNameWithTagAreIA5(ext *pkix.Extension, tag int) (bool, error) {
	var seq asn1.RawValue
	var err error
	// Unmarshal the extension as a sequence
	if _, err = asn1.Unmarshal(ext.Value, &seq); err != nil {
		return false, err
	}
	// Ensure the sequence matches what we expect for SAN/IAN
	if !seq.IsCompound || seq.Tag != asn1.TagSequence || seq.Class != asn1.ClassUniversal {
		err = asn1.StructuralError{Msg: "bad alternate name sequence"}
		return false, err
	}

	// Iterate over the sequence and look for items tagged with tag
	rest := seq.Bytes
	for len(rest) > 0 {
		var v asn1.RawValue
		rest, err = asn1.Unmarshal(rest, &v)
		if err != nil {
			return false, err
		}
		if v.Tag == tag {
			if !IsIA5String(v.Bytes) {
				return false, nil
			}
		}
	}

	return true, nil
}
func AllAlternateNameWithTagAreIA5(ext *pkix.Extension, tag int) (bool, error) {
	var seq asn1.RawValue
	var err error
	// Unmarshal the extension as a sequence
	if _, err = asn1.Unmarshal(ext.Value, &seq); err != nil {
		return false, err
	}
	// Ensure the sequence matches what we expect for SAN/IAN
	if !seq.IsCompound || seq.Tag != asn1.TagSequence || seq.Class != asn1.ClassUniversal {
		err = asn1.StructuralError{Msg: "bad alternate name sequence"}
		return false, err
	}

	// Iterate over the sequence and look for items tagged with tag
	rest := seq.Bytes
	for len(rest) > 0 {
		var v asn1.RawValue
		rest, err = asn1.Unmarshal(rest, &v)
		if err != nil {
			return false, err
		}
		if v.Tag == tag {
			if !IsIA5String(v.Bytes) {
				return false, nil
			}
		}
	}

	return true, nil
}
func AllAlternateNameWithTagAreIA5 ( ext * pkix . Extension , tag int ) ( bool , error ) { var seq asn1 . RawValue var err error // Unmarshal the extension as a sequence if _ , err = asn1 . Unmarshal ( ext . Value , & seq ) ; err != nil { return false , err } // Ensure the sequence matches what we expect for SAN/IAN if ! seq . IsCompound || seq . Tag != asn1 . TagSequence || seq . Class != asn1 . ClassUniversal { err = asn1 . StructuralError { Msg : " " } return false , err } // Iterate over the sequence and look for items tagged with tag rest := seq . Bytes for len ( rest ) > 0 { var v asn1 . RawValue rest , err = asn1 . Unmarshal ( rest , & v ) if err != nil { return false , err } if v . Tag == tag { if ! IsIA5String ( v . Bytes ) { return false , nil } } } return true , nil }
// AllAlternateNameWithTagAreIA5 returns true if all sequence members with the
// given tag are encoded as IA5 strings, and false otherwise. If it encounters
// errors parsing asn1, err will be non-nil.
AllAlternateNameWithTagAreIA5 returns true if all sequence members with the given tag are encoded as IA5 strings and false otherwise . If it encounters errors parsing asn1 err will be non - nil .