NAME
csxs-ppcrypt -- simple passphrase-based encryption and decryption
SYNOPSIS
# suggested file name suffix ".csxpp"
csxs-ppcrypt -E myfile.txt myfile.txt.csxpp
echo 'some output' | csxs-ppcrypt -E - somefile.txt.csxpp
csxs-ppcrypt -D myfile.txt.csxspp -
csxs-ppcrypt -D somedir/somefile otherfile.txt
curl https://example.com/super_secret | csxs-ppcrypt -D - -
DESCRIPTION
csxs-ppcrypt encrypts or decrypts data from an input file (or stdin) to an output file (or stdout).
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 [-f] <infile> <outfile>
csxs-ppcrypt -E [-f] [-p] <infile> <outfile>
actions:
-h print this help message and exit
-D decrypt
-E encrypt
options:
-f force; overwrite an existing <outfile>
-p pad; ISO/IEC 7816-4 padding on final block
arguments:
<infile> path to input file, or '-' for stdin
<outfile> path to output file, or '-' for stdout
FILE FORMAT
4 bytes) magic value "CSXS"
1 bytes) version number (currently always 1)
1 bytes) option flags
2 bytes) RESERVED
1 bytes) hash primitive id
1 bytes) secretstream primitive id
2 bytes) 'bufsize' (blocksize without auth tags) in kilobytes
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
optionally padded to block size
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.