...
Package ber
Overview ▹
Index ▹
Constants
const (
// LengthLongFormBitmask is the mask to apply to the length byte to see if a long-form byte sequence is used
LengthLongFormBitmask = 0x80
// LengthValueBitmask is the mask to apply to the length byte to get the number of bytes in the long-form byte sequence
LengthValueBitmask = 0x7f
// LengthIndefinite is returned from readLength to indicate an indefinite length
LengthIndefinite = -1
)
Variables
var ClassMap = map[Class]string{
ClassUniversal: "Universal",
ClassApplication: "Application",
ClassContext: "Context",
ClassPrivate: "Private",
}
var Debug bool = false
var TypeMap = map[Type]string{
TypePrimitive: "Primitive",
TypeConstructed: "Constructed",
}
func DecodeString ¶
func DecodeString(data []byte) string
func PrintBytes ¶
func PrintBytes(out io.Writer, buf []byte, indent string)
func PrintPacket ¶
func PrintPacket(p *Packet)
type Class ¶
type Class uint8
const (
ClassUniversal Class = 0 // 00xxxxxxb
ClassApplication Class = 64 // 01xxxxxxb
ClassContext Class = 128 // 10xxxxxxb
ClassPrivate Class = 192 // 11xxxxxxb
ClassBitmask Class = 192 // 11xxxxxxb
)
type Identifier ¶
type Identifier struct {
ClassType Class
TagType Type
Tag Tag
}
type Packet ¶
type Packet struct {
Identifier
Value interface{}
ByteValue []byte
Data *bytes.Buffer
Children []*Packet
Description string
}
func DecodePacket ¶
func DecodePacket(data []byte) *Packet
DecodePacket decodes the given bytes into a single Packet If a decode error is encountered, nil is returned.
func DecodePacketErr ¶
func DecodePacketErr(data []byte) (*Packet, error)
DecodePacketErr decodes the given bytes into a single Packet If a decode error is encountered, nil is returned
func Encode ¶
func Encode(ClassType Class, TagType Type, Tag Tag, Value interface{}, Description string) *Packet
func NewBoolean ¶
func NewBoolean(ClassType Class, TagType Type, Tag Tag, Value bool, Description string) *Packet
func NewInteger ¶
func NewInteger(ClassType Class, TagType Type, Tag Tag, Value interface{}, Description string) *Packet
func NewSequence ¶
func NewSequence(Description string) *Packet
func NewString ¶
func NewString(ClassType Class, TagType Type, Tag Tag, Value, Description string) *Packet
func ReadPacket ¶
func ReadPacket(reader io.Reader) (*Packet, error)
ReadPacket reads a single Packet from the reader
func (*Packet) AppendChild ¶
func (p *Packet) AppendChild(child *Packet)
func (*Packet) Bytes ¶
func (p *Packet) Bytes() []byte
type Tag ¶
type Tag uint64
const (
TagEOC Tag = 0x00
TagBoolean Tag = 0x01
TagInteger Tag = 0x02
TagBitString Tag = 0x03
TagOctetString Tag = 0x04
TagNULL Tag = 0x05
TagObjectIdentifier Tag = 0x06
TagObjectDescriptor Tag = 0x07
TagExternal Tag = 0x08
TagRealFloat Tag = 0x09
TagEnumerated Tag = 0x0a
TagEmbeddedPDV Tag = 0x0b
TagUTF8String Tag = 0x0c
TagRelativeOID Tag = 0x0d
TagSequence Tag = 0x10
TagSet Tag = 0x11
TagNumericString Tag = 0x12
TagPrintableString Tag = 0x13
TagT61String Tag = 0x14
TagVideotexString Tag = 0x15
TagIA5String Tag = 0x16
TagUTCTime Tag = 0x17
TagGeneralizedTime Tag = 0x18
TagGraphicString Tag = 0x19
TagVisibleString Tag = 0x1a
TagGeneralString Tag = 0x1b
TagUniversalString Tag = 0x1c
TagCharacterString Tag = 0x1d
TagBMPString Tag = 0x1e
TagBitmask Tag = 0x1f // xxx11111b
// HighTag indicates the start of a high-tag byte sequence
HighTag Tag = 0x1f // xxx11111b
// HighTagContinueBitmask indicates the high-tag byte sequence should continue
HighTagContinueBitmask Tag = 0x80 // 10000000b
// HighTagValueBitmask obtains the tag value from a high-tag byte sequence byte
HighTagValueBitmask Tag = 0x7f // 01111111b
)
type Type ¶
type Type uint8
const (
TypePrimitive Type = 0 // xx0xxxxxb
TypeConstructed Type = 32 // xx1xxxxxb
TypeBitmask Type = 32 // xx1xxxxxb
)
ActiveGo 1.8