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