feat: authenticate Windows command launcher and signal helper
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package windows
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLauncherFrameRoundTripAndGenerationFence_HP_LAUNCH_06(t *testing.T) {
|
||||
var generation [16]byte
|
||||
for index := range generation {
|
||||
generation[index] = byte(index + 1)
|
||||
}
|
||||
original := launcherFrame{Kind: launcherFrameLaunch, Generation: generation, Payload: []byte("bounded launch request")}
|
||||
encoded, err := marshalLauncherFrame(original)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
decoded, err := readLauncherFrame(bytes.NewReader(encoded), generation)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if decoded.Kind != original.Kind || !bytes.Equal(decoded.Payload, original.Payload) {
|
||||
t.Fatalf("decoded frame = %#v, want %#v", decoded, original)
|
||||
}
|
||||
wrong := generation
|
||||
wrong[0]++
|
||||
if _, err := readLauncherFrame(bytes.NewReader(encoded), wrong); err == nil {
|
||||
t.Fatal("frame with a different generation was accepted")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLauncherFrameRejectsChecksumLengthAndKind_BH_LAUNCH_06(t *testing.T) {
|
||||
var generation [16]byte
|
||||
encoded, err := marshalLauncherFrame(launcherFrame{Kind: launcherFrameHello, Generation: generation, Payload: []byte("hello")})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
encoded[len(encoded)-1] ^= 1
|
||||
if _, err := readLauncherFrame(bytes.NewReader(encoded), generation); err == nil {
|
||||
t.Fatal("checksum-corrupted frame was accepted")
|
||||
}
|
||||
encoded, err = marshalLauncherFrame(launcherFrame{Kind: launcherFrameHello, Generation: generation, Payload: nil})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
encoded[6] = 0xff
|
||||
encoded[7] = 0xff
|
||||
if _, err := readLauncherFrame(bytes.NewReader(encoded), generation); err == nil {
|
||||
t.Fatal("invalid frame kind was accepted")
|
||||
}
|
||||
if _, err := marshalLauncherFrame(launcherFrame{Kind: launcherFrameAbort, Generation: generation, Payload: make([]byte, launcherMaxFrameBytes+1)}); err == nil {
|
||||
t.Fatal("oversized launcher payload was accepted")
|
||||
}
|
||||
if _, err := readLauncherFrame(bytes.NewReader(encoded[:len(encoded)-1]), generation); err == nil {
|
||||
t.Fatal("truncated launcher frame was accepted")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user