tlv.mx raw
1 package tlv
2
3 import "io"
4
5 const (
6 Default byte = iota
7 Relay
8 Author
9 Kind
10 )
11
12 func ReadEntry(buf io.Reader) (typ uint8, value []byte) {
13 var err error
14 t := []byte{:1}
15 if _, err = buf.Read(t); err != nil {
16 return
17 }
18 typ = t[0]
19 l := []byte{:1}
20 if _, err = buf.Read(l); err != nil {
21 return
22 }
23 length := int(l[0])
24 value = []byte{:length}
25 if _, err = buf.Read(value); err != nil {
26 value = nil
27 }
28 return
29 }
30
31 func WriteEntry(buf io.Writer, typ uint8, value []byte) {
32 buf.Write(append([]byte{typ, byte(len(value))}, value...))
33 }
34