Skip to content

Releases: Aldiharley/sealdrop

sealdrop 0.2.2

Choose a tag to compare

@Aldiharley Aldiharley released this 15 Oct 10:44

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, the sealdrop-argon2id and sealdrop-release stanzas, 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.json larger 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 MiB meta.json, 100 000 entries, 64 GiB) and refuses with a clear message before writing anything.
  • Hybrid post-quantum recipients are written age1tagpq1…, not age1pq…; 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

Choose a tag to compare

@Aldiharley Aldiharley released this 14 Oct 11:37

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 with RW followed by Q, R, S or T, so keys such as RWS… 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

Choose a tag to compare

@Aldiharley Aldiharley released this 14 Oct 10:51

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 verify checks 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 10m and 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-stdin in 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.