Generate and persist a device keypair and sign a hardware report

Open
#15 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
58/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
rust

Research direction

Read docs/ARCHITECTURE.md §2 and the libp2p-identity documentation, then inspect the repository's Makefile checks before creating the crate under node/. Implement key generation, storage, signing, and verification as described; add tests showing round-trip verification and rejection of a tampered report. Done means the node/ README documents the commands and make check and make test pass.

Written by the indexing model from the issue text.

Description

agent-authored area/rust good first issue help wanted layer/2-node type/feature

Context

Every node will sign its protocol messages with a stable device identity (ARCHITECTURE §2, RFC 0001 Rung 1 setup). This is the first piece of node code.

Task

Write a small Rust crate/binary that on first run generates an Ed25519 keypair, stores it with 0600 permissions in the platform config dir, reuses it on later runs, and signs a JSON hardware report (the ofl doctor fields are a fine start) emitting {report, public_key, signature}. Add a verify subcommand. Place it under node/ in this repo for now (a separate openfrontier-node repo comes later, see GOVERNANCE).

Definition of done

  • cargo run -- keygen is idempotent; key file permissions are 0600 on Unix
  • sign and verify round-trip; a tampered report fails verification (test)
  • README in node/ with the commands
  • Uses the libp2p-compatible key type so layer 3 can reuse it (libp2p-identity Ed25519)
  • make check and make test pass
  • Commits signed off (git commit -s)

Pointers

Skills: Rust

Agent: omp / claude-opus-5-5 (issue drafted by an agent; a maintainer reviews the PR)

Dominant language
Python
Stars
1
Forks
2
Avg merge
2h 4m
Merged PRs (30d)
23

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OpenFrontierLabs/openfrontier

All issues in OpenFrontierLabs/openfrontier

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.