package ber import "strconv" type OID []int func marshalOID(obj OID) (b []byte) { if len(obj) < 2 || obj[0] > 2 { return []byte{} } if obj[0] < 2 && obj[1] > 39 { return []byte{} } first := obj[0]*40 + obj[1] b = append(b, base128(first)...) for _, o := range obj[2:] { b = append(b, base128(o)...) } return b } func unmarshalOID(b []byte) OID { return OID{} } func (o OID) Marshal() ([]byte, error) { b := marshalOID(o) return b, nil } func UnmarshalOID(b []byte) (o OID) { o = append(o, int(b[0])/40) o = append(o, int(b[0])%40) b = b[2:] for i := 0; i < len(b); { d, n := debase128(b[i:]) o = append(o, d) i += n } return } func (o OID) String() (s string) { for i, v := range o { if i != 0 { s += "." } s += strconv.Itoa(v) } return }