PPK
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
PuTTY Private Key Preview.
At a glance
| Purpose | A PuTTY private key file (.ppk, versions 1 to 3): a text envelope around an SSH key pair. |
| Extensions | .ppk |
| Poka parser | poka-ppk |
| Viewer | poka-metadata-card-viewer |
| Depth tier | Metadata card (see Depth tiers) |
| Breadth tier | B4 Summary (see Breadth tiers) |
How much Poka reads
B4 Summary. The container and metadata are read and summarised (counts, properties, structure), but the main content is not rendered.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-26: read parsers/poka-ppk/src/main.rs (259 lines) and plugin.json. No unit tests or tests/samples.rs; the corpus has no .ppk and .ppk-putty sample. Covers .ppk and .ppk-putty. The card reads the envelope: PuTTY version, algorithm, encryption, comment, public and private blob sizes, an estimated key size, the MAC, and for version 3 the Argon2 key-derivation settings. Judgement: B4: the envelope is decoded, but neither key blob is.
What Poka does not read
- The public key blob is not decoded (no fingerprint, exact size or curve); the key size is estimated from the blob's length
- The private key is never decoded or decrypted (by design)
- The MAC is not verified
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- kayrus/putty (candidate; Apache-2.0; Go; https://pkg.go.dev/github.com/kayrus/putty) — Parses PuTTY private key files (NewFromFile); supported PPK versions not stated on the page.
- putty-key (candidate; MIT; Ruby; https://www.rubydoc.info/gems/putty-key) — Reads and writes .ppk formats 2 and 3; encrypted format 3 needs libargon2.
Sources
- parsers/poka-ppk/src/main.rs
- parsers/poka-ppk/plugin.json