ber - ActiveState ActiveGo 1.8
...

Package ber

import "gopkg.in/asn1-ber.v1"
Overview
Index

Overview ▾

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
)