From bdb8a02bbb3dc0d7c39f5b3ec451abb68e9d093d Mon Sep 17 00:00:00 2001 From: Gab Virebent Date: Sun, 23 Aug 2026 00:26:27 +0200 Subject: Simplify Usenet posting to signing only --- internal/ui/app_test.go | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) (limited to 'internal/ui/app_test.go') diff --git a/internal/ui/app_test.go b/internal/ui/app_test.go index 0483bdb..6e9dc2a 100644 --- a/internal/ui/app_test.go +++ b/internal/ui/app_test.go @@ -10,8 +10,6 @@ import ( "aegis/internal/cryptokit" "aegis/internal/identity" - - "filippo.io/age" ) func TestNormalizeGroups(t *testing.T) { @@ -100,7 +98,7 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) { headers, contentType, transferEncoding, wireBody, err := prepareArticleCrypto( "hello\r\nworld", "Sign with Ed25519", - articleCryptoOptions{SigningKey: privateSeed, PublicKeyURL: "https://keys.example.invalid/aegis.pub"}, + articleCryptoOptions{SigningKey: privateSeed}, ) if err != nil { t.Fatal(err) @@ -108,10 +106,6 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) { if contentType != "text/plain; charset=UTF-8" || transferEncoding != "8bit" { t.Fatalf("unexpected MIME metadata: %q, %q", contentType, transferEncoding) } - joined := strings.Join(headers, "\r\n") - if !strings.Contains(joined, "X-Aegis-Public-Key-URL: https://keys.example.invalid/aegis.pub") { - t.Fatalf("missing public-key URL: %s", joined) - } const signaturePrefix = "X-Aegis-Signature: ed25519; " var signature string for _, header := range headers { @@ -127,38 +121,22 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) { } } -func TestPrepareArticleCryptoEncryptsAndSigns(t *testing.T) { - identity, err := age.GenerateX25519Identity() - if err != nil { - t.Fatal(err) +func TestPrepareArticleCryptoRejectsMessageEncryption(t *testing.T) { + if _, _, _, _, err := prepareArticleCrypto("secret body", "Encrypt with age", articleCryptoOptions{}); err == nil { + t.Fatal("message encryption mode was accepted") } - _, private, err := ed25519.GenerateKey(rand.Reader) - if err != nil { - t.Fatal(err) - } - headers, contentType, transferEncoding, wireBody, err := prepareArticleCrypto( - "secret body", - "Encrypt with age and sign", - articleCryptoOptions{ - EncryptionKey: identity.Recipient().String(), - SigningKey: base64.StdEncoding.EncodeToString(private.Seed()), - }, +} + +func TestBuildArticleIncludesToHeader(t *testing.T) { + article, err := buildArticleWithIdentityHeaders( + []string{"alt.test"}, "reader@example.org", "To header", "body", nil, + articleCryptoOptions{Mode: "Plain", To: "mail2news@example.org"}, ) if err != nil { t.Fatal(err) } - if contentType != "application/vnd.aegis.age" || transferEncoding != "7bit" { - t.Fatalf("unexpected encrypted MIME metadata: %q, %q", contentType, transferEncoding) - } - if !strings.Contains(strings.Join(headers, "\r\n"), "X-Aegis-Encryption: age") { - t.Fatal("missing age encryption header") - } - plaintext, err := cryptokit.DecryptAge([]byte(strings.ReplaceAll(wireBody, "\r\n", "\n")), identity.String()) - if err != nil { - t.Fatal(err) - } - if string(plaintext) != "secret body" { - t.Fatalf("decrypted body = %q", plaintext) + if !strings.Contains(article, "To: mail2news@example.org\r\n") { + t.Fatalf("article missing To header:\n%s", article) } } -- cgit v1.2.3