code: 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
  }
docs: // 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.