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
- }
|