gisp NEWS -- history of user-visible changes.

Copyright (C) 2026 Uladzislau Bolbas <cmrtumilovic@gmail.com>
See the end of this file for license conditions.


Version 1.2
-----------

A maintenance release.  The on-disk container format is unchanged and
interoperates with 1.0 and 1.1.

* New -q/--quiet option suppresses progress output; success is reported only
  after the output has been fully finalised.
* Command-line usage errors now exit with status 2, distinct from runtime
  failures.
* An invalid --passphrase-fd is rejected up front with a clear diagnostic
  instead of a deferred read failure.
* Hardening: the program is built as a position-independent executable
  (-fPIE -pie) by default, and core dumps are disabled so secrets cannot
  reach a core file.
* The project earned the OpenSSF Best Practices passing badge
  (https://www.bestpractices.dev/projects/13610), and the tree no longer
  references any nonfree analysis tools.


Version 1.1
-----------

This release turns gisp into a composable, packageable tool and adds an
extensive test and audit apparatus.  The on-disk container format is
unchanged and interoperates with 1.0.

* Filter mode: a path of "-" reads standard input or writes standard output,
  so gisp can be used in pipelines.  Streamed containers store a sentinel
  length and prove end-of-stream with the FINAL tag; fixed-length containers
  are unchanged and the two forms interoperate.
* Non-interactive passphrase input via --passphrase-fd and --passphrase-file.
* Operator resource ceilings: --max-opslimit, --max-memlimit and
  --max-filesize, plus --min-password-length and --allow-weak-password.  A
  value carried in a container header can never relax an operator ceiling.
* Overflow-safe container-size arithmetic, cross-checked against a reference
  implementation and a standalone proof.
* Internationalization through GNU gettext (no translations shipped yet).
* Build system moved to GNU Autotools (./configure && make && make check),
  replacing the hand-written Makefile.
* Documentation: a Texinfo manual (under the GNU FDL) in addition to the
  manual page, and valid copyright and license notices on every file.
* Testing and audit: known-answer test vectors, fault injection, command-line
  integration tests, libFuzzer harnesses, and an adversarial audit with a
  written report.
* The project is now hosted on GNU Savannah
  (https://savannah.nongnu.org/projects/gisp).  gisp is free software but is
  not a GNU package.

The command-line interface is backward compatible: -e/--encrypt, -d/--decrypt,
-o/--output, -p/--opslimit and -m/--memlimit behave as in 1.0.


Version 1.0
-----------

First public release.

* Authenticated file encryption using XChaCha20-Poly1305 (libsodium's
  crypto_secretstream), with the full container header bound as additional
  authenticated data on every chunk.
* Password-based key derivation with Argon2id, with configurable --opslimit
  and --memlimit and a random per-file salt.
* Streamed processing in 64 KiB chunks; constant memory use regardless of
  file size.
* Truncation detection via the FINAL stream tag.
* Memory hardening: keys and passwords held in guarded, mlocked pages and
  wiped after use.
* Denial-of-service hardening: KDF parameters read from untrusted containers
  are bounds-checked before use.
* Atomic, durable output: temporary file (O_EXCL, mode 0600), fsync, rename,
  and parent-directory fsync.
* Signal-safe terminal handling that always restores terminal echo.
* Manual page; built with a hand-written Makefile.


----------------------------------------------------------------------
Copyright information:

Copyright (C) 2026 Uladzislau Bolbas <cmrtumilovic@gmail.com>

   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3 or
   any later version published by the Free Software Foundation; with no
   Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
