package ber import ( "bytes" "fmt" ) func Dump(b []byte) string { buf := bytes.NewBuffer(b) s := &state{*buf} return s.dump(0) } func (s *state) dump(ident int) string { h := s.ident() fmt.Printf("%*s", 2*ident, "") fmt.Printf("%v %x\n", h, s.Bytes()) if h.Kind == kindConstructed { s.subState().dump(ident + 1) } if h.Class == classUniversal { /* switch h.Tag { case tagInteger: fmt.Println(h.Tag, s.unmarshalInt()) case tagObjectIdentifier: fmt.Println(h.Tag, s.unmarshalOID()) case tagBitString: fmt.Println(h.Tag, s.unmarshalBitString()) case tagIA5String, tagOctetString: fmt.Println(h.Tag, s.unmarshalString()) case tagBoolean: fmt.Println(h.Tag, s.unmarshalBool()) default: fmt.Println(h.Tag, s.next()) } */ } if s.Len() > 0 { s.subState().dump(ident) } return "" }