Repository navigation
Releases: Aldiharley/sealdrop
Release list
sealdrop 0.2.2
This release publishes the package format as a public specification and fixes an encoder bug that the specification work uncovered.
The format is now public
spec/sealdrop-format-v1.md(CC0) describes everything sealdrop adds on top of age: the container layout, thesealdrop-argon2idandsealdrop-releasestanzas, the signed manifest and its verification order, the extraction rules, the key-release service protocol, and receipts. Every rule is mapped to the function that implements it, and the places where this implementation still falls short of a MUST are listed in its Appendix C.spec/vectors/holds 18 known-answer test vectors (successes, rejected headers, tampered bundles, hostile tars, receipts). The conformance test runs them in CI; other implementations can use them as-is.
Fixed
- Packages that could never be opened. Sealing a folder with roughly 7 000 or more files produced a
meta.jsonlarger than the 1 MiB that decoders accept, so the package sealed fine and then failed to open. The encoder now enforces the same limits as the decoder (1 MiBmeta.json, 100 000 entries, 64 GiB) and refuses with a clear message before writing anything. - Hybrid post-quantum recipients are written
age1tagpq1…, notage1pq…; the README, CLI help and app text were wrong. - Dependency advisories: rustls updated to 0.23.46.
Downloads
| File | What it is |
|---|---|
sealdrop_0.2.2_x64_en-US.msi |
Desktop app, Windows installer (MSI) |
sealdrop_0.2.2_x64-setup.exe |
Desktop app, Windows installer (NSIS) |
sealdrop-0.2.2-windows-x86_64.zip |
sealdrop.exe (CLI) and sealdrop-release.exe (service) |
SHA256SUMS |
Checksums for the files above |
The installers are unsigned; Windows SmartScreen will warn on first run. Installing over 0.2.1 keeps your identity and settings. Package and manifest formats are unchanged: anything sealed by 0.2.0 or 0.2.1 opens with 0.2.2 and vice versa.
Full change list: v0.2.1...v0.2.2.
sealdrop 0.2.1
Patch release. Same features as 0.2.0; two desktop fixes found on first install.
Fixed
- Desktop app rejected valid signer keys. The "Add a signer" form (and the expected-signer fields on Open and Verify) only accepted keys starting with
RWQ. A minisign public key starts withRWfollowed byQ,R,SorT, so keys such asRWS…were refused with "That isn't a valid signer key" before the backend ever saw them. The CLI was not affected. - App icon. The icon is now the wax seal filling the canvas; the 0.2.0 icon shrank to a pink dot at taskbar sizes.
Downloads
| File | What it is |
|---|---|
sealdrop_0.2.1_x64_en-US.msi |
Desktop app, Windows installer (MSI) |
sealdrop_0.2.1_x64-setup.exe |
Desktop app, Windows installer (NSIS) |
sealdrop-0.2.1-windows-x86_64.zip |
sealdrop.exe (CLI) and sealdrop-release.exe (service) |
SHA256SUMS |
Checksums for the files above |
The installers are unsigned; Windows SmartScreen will warn on first run. Installing 0.2.1 over 0.2.0 keeps your identity and settings (%APPDATA%\sealdrop).
Everything else — formats, service API, known limitations — is unchanged from 0.2.0.
sealdrop 0.2.0
sealdrop 0.2.0 is the first release: a command-line tool, a self-hostable key-release service, and a Windows desktop app for sending sensitive files with the standard age format, a signed delivery record, and optional timed release.
What's in the box
- Standard encryption. Packages are age v1 files; a recipient can always open a recipient-mode package with stock
age -d … | tar -x. Passes 128 of the 147 C2SP CCTV age test vectors (the 19 skipped are post-quantum identities, which the age crate does not expose yet). - Signed delivery record. Every package ships with a manifest (hashes, recipients, package id) and a minisign signature.
sealdrop verifychecks both before anything is decrypted. - Hardened extraction. Path, type, size and hash checks on every entry; a raw-stream guard on tar extension headers; nothing is written outside the output folder.
- Generated passphrases only. 6 EFF words (77.5 bits) or 10 BIP-39 words (110 bits), shown once, with a QR code.
- Timed release. Seal with
--expire-after 10mand the package can be opened only within that window after the recipient first opens it, enforced by a key-release service you host (sealdrop-release). You get a signed receipt of the first unlock. Expiry applies to the encrypted package only; nothing can recall a file after it has been decrypted. - Desktop app (Windows, Tauri 2): Seal, Open, Verify, Keys and Settings.
- Hardware keys via installed
age-plugin-yubikey/fido2prf/se/tpm, with an enforced recovery recipient. - Optional Argon2id passphrase mode (off by default; not openable by stock age).
Downloads
| File | What it is |
|---|---|
sealdrop_0.2.0_x64_en-US.msi |
Desktop app, Windows installer (MSI) |
sealdrop_0.2.0_x64-setup.exe |
Desktop app, Windows installer (NSIS) |
sealdrop-0.2.0-windows-x86_64.zip |
sealdrop.exe (CLI) and sealdrop-release.exe (service) |
SHA256SUMS |
Checksums for the files above |
Other platforms: build from source (cargo install --path crates/sealdrop-cli); see the README.
Known limitations
- The installers are unsigned; Windows SmartScreen will warn on first run.
- The interactive CLI passphrase prompt echoes what you type; use
--passphrase-stdinin scripts. - Timed-release and Argon2id packages cannot be opened by stock age (by design).
- A folder containing names that differ only by case (
A.txt,a.txt) loses one of them when opened on a case-insensitive filesystem. - Releases are not yet signed with minisign or built reproducibly (planned for 1.0).
Evidence for every claim above is in docs/VALIDATION.md. Full threat-model limits are in the README's Security section.