From dd733c5c0f64124dba2f51bd65f51f58813acc03 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sat, 5 Aug 2023 14:55:16 +0200 Subject: [PATCH] cmd/age: grease the client-controlled plugin phases --- cmd/age/age_test.go | 4 ++++ plugin/client.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/cmd/age/age_test.go b/cmd/age/age_test.go index 3d8793b..53eb799 100644 --- a/cmd/age/age_test.go +++ b/cmd/age/age_test.go @@ -36,6 +36,8 @@ func TestMain(m *testing.M) { scanner := bufio.NewScanner(os.Stdin) scanner.Scan() // add-recipient scanner.Scan() // body + scanner.Scan() // grease + scanner.Scan() // body scanner.Scan() // wrap-file-key scanner.Scan() // body fileKey := scanner.Text() @@ -51,6 +53,8 @@ func TestMain(m *testing.M) { scanner := bufio.NewScanner(os.Stdin) scanner.Scan() // add-identity scanner.Scan() // body + scanner.Scan() // grease + scanner.Scan() // body scanner.Scan() // recipient-stanza scanner.Scan() // body fileKey := scanner.Text() diff --git a/plugin/client.go b/plugin/client.go index b4e0ff7..a45587f 100644 --- a/plugin/client.go +++ b/plugin/client.go @@ -12,6 +12,7 @@ import ( "bytes" "fmt" "io" + "math/rand" "os" "strconv" "time" @@ -71,6 +72,9 @@ func (r *Recipient) Wrap(fileKey []byte) (stanzas []*age.Stanza, err error) { if err := writeStanza(conn, addType, r.encoding); err != nil { return nil, err } + if err := writeStanza(conn, fmt.Sprintf("grease-%x", rand.Int())); err != nil { + return nil, err + } if err := writeStanzaWithBody(conn, "wrap-file-key", fileKey); err != nil { return nil, err } @@ -197,6 +201,9 @@ func (i *Identity) Unwrap(stanzas []*age.Stanza) (fileKey []byte, err error) { if err := writeStanza(conn, "add-identity", i.encoding); err != nil { return nil, err } + if err := writeStanza(conn, fmt.Sprintf("grease-%x", rand.Int())); err != nil { + return nil, err + } for _, rs := range stanzas { s := &format.Stanza{ Type: "recipient-stanza",