| 1234567891011121314151617181920212223242526272829 | package berimport (	"errors"	"io")func readHeader(reader io.Reader) (identifier Identifier, length int, read int, err error) {	if i, c, err := readIdentifier(reader); err != nil {		return Identifier{}, 0, read, err	} else {		identifier = i		read += c	}	if l, c, err := readLength(reader); err != nil {		return Identifier{}, 0, read, err	} else {		length = l		read += c	}	// Validate length type with identifier (x.600, 8.1.3.2.a)	if length == LengthIndefinite && identifier.TagType == TypePrimitive {		return Identifier{}, 0, read, errors.New("indefinite length used with primitive type")	}	return identifier, length, read, nil}
 |