key_gen_parse_test.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package service
  2. import "testing"
  3. // The x25519 / mldsa65 / mlkem768 key generators parse xray's stdout by fixed
  4. // slice index. A short or reformatted output (a future xray release, or a
  5. // binary that failed silently) must yield an error, never an out-of-range
  6. // panic that 500s the handler.
  7. func TestParseXrayKeyPairOutput(t *testing.T) {
  8. a, b, err := parseXrayKeyPairOutput("Private key: abc123\nPublic key: def456\n")
  9. if err != nil {
  10. t.Fatalf("well-formed output errored: %v", err)
  11. }
  12. if a != "abc123" || b != "def456" {
  13. t.Fatalf("got (%q, %q), want (abc123, def456)", a, b)
  14. }
  15. malformed := []string{
  16. "",
  17. "only one line: value",
  18. "Private key: abc\n",
  19. "no colon here\nno colon two",
  20. "Private key\nPublic key",
  21. }
  22. for _, out := range malformed {
  23. func() {
  24. defer func() {
  25. if r := recover(); r != nil {
  26. t.Errorf("parseXrayKeyPairOutput panicked on %q: %v", out, r)
  27. }
  28. }()
  29. if _, _, err := parseXrayKeyPairOutput(out); err == nil {
  30. t.Errorf("expected error for malformed output %q, got nil", out)
  31. }
  32. }()
  33. }
  34. }