mirror of
https://github.com/bolkedebruin/rdpgw.git
synced 2025-08-17 14:03:50 +02:00
46 lines
876 B
Go
46 lines
876 B
Go
package protocol
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
)
|
|
|
|
const (
|
|
MajorVersion = 0x0
|
|
MinorVersion = 0x0
|
|
Version = 0x00
|
|
)
|
|
|
|
type ClientConfig struct {
|
|
SmartCardAuth bool
|
|
PAAToken string
|
|
NTLMAuth bool
|
|
}
|
|
|
|
func (c *ClientConfig) handshakeRequest() []byte {
|
|
var caps uint16
|
|
|
|
if c.SmartCardAuth {
|
|
caps = caps | HTTP_EXTENDED_AUTH_SC
|
|
}
|
|
|
|
if len(c.PAAToken) > 0 {
|
|
caps = caps | HTTP_EXTENDED_AUTH_PAA
|
|
}
|
|
|
|
if c.NTLMAuth {
|
|
caps = caps | HTTP_EXTENDED_AUTH_SSPI_NTLM
|
|
}
|
|
|
|
buf := new(bytes.Buffer)
|
|
|
|
binary.Write(buf, binary.LittleEndian, byte(MajorVersion))
|
|
binary.Write(buf, binary.LittleEndian, byte(MinorVersion))
|
|
binary.Write(buf, binary.LittleEndian, uint16(Version))
|
|
|
|
binary.Write(buf, binary.LittleEndian, uint16(caps))
|
|
|
|
return createPacket(PKT_TYPE_HANDSHAKE_REQUEST, buf.Bytes())
|
|
}
|
|
|
|
func (c *ClientConfig) readServerHandshakeResponse(data []byte) ()
|