diff options
| author | Fuwn <[email protected]> | 2026-02-26 20:20:17 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-26 20:20:17 -0800 |
| commit | e264ed8f36b26c5684ea653ad7299603ccffe02b (patch) | |
| tree | 95bbb4ad51740d7bcc0d834bd1aaa587df22f233 /cmd/plutia | |
| parent | fix: align PLC compatibility read endpoints with plc.directory schema (diff) | |
| download | plutia-test-e264ed8f36b26c5684ea653ad7299603ccffe02b.tar.xz plutia-test-e264ed8f36b26c5684ea653ad7299603ccffe02b.zip | |
feat: Apply Iku formatting
Diffstat (limited to 'cmd/plutia')
| -rw-r--r-- | cmd/plutia/keygen.go | 5 | ||||
| -rw-r--r-- | cmd/plutia/keygen_test.go | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/cmd/plutia/keygen.go b/cmd/plutia/keygen.go index f2f5820..2828f60 100644 --- a/cmd/plutia/keygen.go +++ b/cmd/plutia/keygen.go @@ -27,6 +27,7 @@ func runKeygen(args []string) error { } fingerprint, err := writeMirrorPrivateKey(*out, *force, rand.Reader) + if err != nil { return err } @@ -70,16 +71,19 @@ func writeAtomicFile(path string, data []byte, force bool, mode os.FileMode) err } tmp, err := os.CreateTemp(dir, ".plutia-keygen-*") + if err != nil { return fmt.Errorf("create temp key file: %w", err) } tmpPath := tmp.Name() closed := false + defer func() { if !closed { _ = tmp.Close() } + _ = os.Remove(tmpPath) }() @@ -98,6 +102,7 @@ func writeAtomicFile(path string, data []byte, force bool, mode os.FileMode) err if err := tmp.Close(); err != nil { return fmt.Errorf("close temp key file: %w", err) } + closed = true if force { diff --git a/cmd/plutia/keygen_test.go b/cmd/plutia/keygen_test.go index 533eec3..1d30913 100644 --- a/cmd/plutia/keygen_test.go +++ b/cmd/plutia/keygen_test.go @@ -16,18 +16,20 @@ func TestWriteMirrorPrivateKey(t *testing.T) { seed := bytes.Repeat([]byte{0x42}, ed25519.SeedSize) out := filepath.Join(t.TempDir(), "mirror.key") - fingerprint, err := writeMirrorPrivateKey(out, false, bytes.NewReader(seed)) + if err != nil { t.Fatalf("write key: %v", err) } b, err := os.ReadFile(out) + if err != nil { t.Fatalf("read key file: %v", err) } expectedFile := hex.EncodeToString(seed) + "\n" + if string(b) != expectedFile { t.Fatalf("key file content mismatch: got %q want %q", string(b), expectedFile) } @@ -35,6 +37,7 @@ func TestWriteMirrorPrivateKey(t *testing.T) { pub := ed25519.NewKeyFromSeed(seed).Public().(ed25519.PublicKey) sum := sha256.Sum256(pub) expectedFP := "ed25519:" + hex.EncodeToString(sum[:8]) + if fingerprint != expectedFP { t.Fatalf("fingerprint mismatch: got %s want %s", fingerprint, expectedFP) } @@ -44,11 +47,13 @@ func TestWriteMirrorPrivateKey_NoForceRefusesOverwrite(t *testing.T) { t.Parallel() out := filepath.Join(t.TempDir(), "mirror.key") + if err := os.WriteFile(out, []byte("existing\n"), 0o600); err != nil { t.Fatalf("seed existing file: %v", err) } _, err := writeMirrorPrivateKey(out, false, bytes.NewReader(bytes.Repeat([]byte{0x01}, ed25519.SeedSize))) + if err == nil { t.Fatalf("expected overwrite refusal error") } @@ -62,21 +67,25 @@ func TestWriteMirrorPrivateKey_ForceOverwrites(t *testing.T) { t.Parallel() out := filepath.Join(t.TempDir(), "mirror.key") + if err := os.WriteFile(out, []byte("existing\n"), 0o600); err != nil { t.Fatalf("seed existing file: %v", err) } seed := bytes.Repeat([]byte{0x03}, ed25519.SeedSize) + if _, err := writeMirrorPrivateKey(out, true, bytes.NewReader(seed)); err != nil { t.Fatalf("force overwrite key: %v", err) } b, err := os.ReadFile(out) + if err != nil { t.Fatalf("read overwritten file: %v", err) } expectedFile := hex.EncodeToString(seed) + "\n" + if string(b) != expectedFile { t.Fatalf("overwritten content mismatch: got %q want %q", string(b), expectedFile) } |