NAME
csxs-ppcrypt -- simple passphrase-based encryption and decryption
SYNOPSIS
csxs-ppcrypt -E myfile.txt
echo 'some output' | csxs-ppcrypt -E -o somefile.txt -
csxs-ppcrypt -D myfile.txt.csxspp
csxs-ppcrypt -D -o otherfile.txt somedir/somefile
csxs-ppcrypt -D -o - myfile.txt.csxpp
DESCRIPTION
This is a simple demo program. It's not intended for much real-world use, but can still be handy. It is meant to be an example of using Crypt::Sodium::XS::secretstream. Encryption keys are generated from passphrase input using Crypt::Sodium::XS::pwhash.
USAGE
csxs-ppcrypt -h
csxs-ppcrypt -D [-o <outfile>] <infile>
csxs-ppcrypt -E [-o <outfile>] <infile>
actions:
-h print this help message and exit
-D decrypt
-E encrypt
options:
-f force; overwrite an existing <outfile>
-o output file (default: <infile>.csxspp)
arguments:
<infile> path to input file, or '-' for stdin
<outfile> path to output file, or '-' for stdout
FILE FORMAT
From the start of a file encrypted with this tool, there is:
4 bytes) magic value "CSXS"
4 bytes) version number, little-endian
placeholder, reserved for future use.
4 bytes) "primitives" (algorithms) bitflag, little-endian
placeholder, reserved for future use.
16 bytes) salt for pwhash
8 bytes) opslimit for pwhash
8 bytes) memlimit for pwhash
24 bytes) secretstream header
4113 bytes) 0 or more complete encrypted blocks
all have tag TAG_MESSAGE
<=4113 bytes) 1 final block
must have tag TAG_FINAL
no further data is allowed.
AUTHOR
Brad Barden <perlmodules@5c30.org>
COPYRIGHT & LICENSE
Copyright (c) 2025 Brad Barden
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.