code: func (a *Authentication) MarshalBinary() ([]byte, error) {
  	// 1 byte:  Protocol
  	// 1 byte:  Algorithm
  	// 1 byte:  RDM
  	// 8 bytes: ReplayDetection
  	// N bytes: AuthenticationInformation (can have 0 len byte)
  	b := buffer.New(nil)
  	b.Write8(a.Protocol)
  	b.Write8(a.Algorithm)
  	b.Write8(a.RDM)
  	b.Write64(a.ReplayDetection)
  	b.WriteBytes(a.AuthenticationInformation)
  
  	return b.Data(), nil
  }
docs: // MarshalBinary allocates a byte slice containing the data from a Authentication.