From 7dcb8578b66e107c6485057ef8800ab788ca5c37 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 13 Jul 2015 18:58:56 +0200 Subject: Move dump into package --- ber/dump.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ber/dump.go (limited to 'ber') diff --git a/ber/dump.go b/ber/dump.go new file mode 100644 index 0000000..18976bd --- /dev/null +++ b/ber/dump.go @@ -0,0 +1,48 @@ +package ber + +import "fmt" + +func Dump(b []byte) { + dump(b, 0) +} + +func dump(b []byte, indent int) { + class, kind, tag, _, value, rest := Split(b) + + for i := indent; i > 0; i-- { + fmt.Print("\t") + } + + switch class { + case classUniversal: + switch tag { + case tagInteger: + fmt.Println(tag, UnmarshalInt(value)) + case tagObjectIdentifier: + fmt.Println(tag, UnmarshalOID(value)) + case tagBitString: + fmt.Println(tag, UnmarshalBitString(value), value) + default: + if len(value) > 5 { + fmt.Println(tag, kind, value[:5], "...") + } else { + fmt.Println(tag, kind, value) + } + } + default: + if len(value) > 5 { + fmt.Println(class, kind, byte(tag), value[:5], "...") + } else { + fmt.Println(class, kind, byte(tag), value) + } + } + + if len(value) > 0 && kind != kindPrimitive { + dump(value, indent+1) + } + + if len(rest) > 0 { + dump(rest, indent) + } + +} -- cgit v1.2.3