| 1234567891011121314151617181920212223242526272829 | 
							- package ber
 
- import (
 
- 	"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
 
- }
 
 
  |