diff options
| author | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-08-13 14:04:30 +0200 |
|---|---|---|
| committer | Gab <24553253+gabrix73@users.noreply.github.com> | 2026-08-13 14:04:30 +0200 |
| commit | 994071243fc80990cf09e820b671006e9bd31c76 (patch) | |
| tree | b65e02724b98033240aa6f9d153acea021abc456 /yamn/cmd | |
| parent | 47d903de3bca4165e96d6ec8830eafbacf524cd2 (diff) | |
| download | yamnweb-994071243fc80990cf09e820b671006e9bd31c76.tar.gz yamnweb-994071243fc80990cf09e820b671006e9bd31c76.tar.xz yamnweb-994071243fc80990cf09e820b671006e9bd31c76.zip | |
Separate active YAMN code from Katzenpost PoC
Diffstat (limited to 'yamn/cmd')
| -rw-r--r-- | yamn/cmd/yamn-encode/main.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/yamn/cmd/yamn-encode/main.go b/yamn/cmd/yamn-encode/main.go new file mode 100644 index 0000000..70f6494 --- /dev/null +++ b/yamn/cmd/yamn-encode/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "os" + + "git.virebent.art/virebent/yamnweb/yamn/encoder" +) + +type request struct { + Kind encoder.Kind `json:"kind"` + PublicKeyring string `json:"public_keyring"` + Entry string `json:"entry"` + Chain []string `json:"chain"` + From string `json:"from"` + ReplyTo string `json:"reply_to"` + To string `json:"to"` + Subject string `json:"subject"` + Newsgroup string `json:"newsgroup"` + Body string `json:"body"` + References string `json:"references"` +} + +type response struct { + Success bool `json:"success"` + EntryAddress string `json:"entry_address,omitempty"` + Envelope string `json:"envelope,omitempty"` + Error string `json:"error,omitempty"` +} + +func main() { + var input request + data, err := io.ReadAll(io.LimitReader(os.Stdin, 256*1024)) + if err == nil { + err = json.Unmarshal(data, &input) + } + if err == nil { + result, encodeErr := encoder.Encode(encoder.Request{ + Kind: input.Kind, PublicKeyring: input.PublicKeyring, Entry: input.Entry, + Chain: input.Chain, From: input.From, ReplyTo: input.ReplyTo, To: input.To, + Subject: input.Subject, Newsgroup: input.Newsgroup, Body: input.Body, + References: input.References, + }) + if encodeErr == nil { + _ = json.NewEncoder(os.Stdout).Encode(response{Success: true, EntryAddress: result.EntryAddress, Envelope: string(result.Envelope)}) + return + } + err = encodeErr + } + _ = json.NewEncoder(os.Stdout).Encode(response{Success: false, Error: "YAMN encoding failed"}) + fmt.Fprintln(os.Stderr, "yamn-encode:", err) + os.Exit(1) +} |
