SECSTORE(1)

πŸ“¦ version 0_git20260208, in alpine 3.24, arch rolling, nixos 26.05, nixpkgs unstable

okay so this is the SECSTORE(1) page from the General Commands Manual, and it’s giving β€œthree little secret-keeping commands that are lowkey iconic” energy. no cap, bestie, this one is all about auth, secrets, and not losing your fave files πŸ’…


πŸŽ€ NAME πŸŽ€

aescbc, ipso, secstore β€” the secstore commands. that’s the whole squad, fr fr.


✨ SYNOPSIS ✨

secstore [ -s server ] [ -(g|G) getfile ] [ -p putfile ] [ -r rmfile ] [ -c ] [ -u user ] [ -v ] [ -i ]

aescbc -e <cleartext >ciphertext
aescbc -d <ciphertext >cleartext

ipso [ -a -e -l -f ] [ file ...  ]

πŸ’– DESCRIPTION πŸ’–

Secstore authenticates to the server using a password and optionally a hardware token, then saves or retrieves a file. it’s intended to be a credentials store β€” public/private keypairs, passwords, and other secrets β€” for a factotum. literally the little vault bestie for your auth stuff 🫢

secstore options, bestie

  • -s server β€” the server is tcp!$auth!secstore, or the server specified by option -s. so you can point it somewhere else if that’s the vibe πŸ’«
  • -p putfile β€” stores a file on the secstore. put that secret away, slay.
  • -g getfile β€” retrieves a file to the local directory. bringing it back home πŸŽ€
  • -G getfile β€” writes it to standard output instead. same retrieval energy, but it goes straight to stdout.
  • getfile set to . β€” specifying getfile of . will send to standard output a list of remote files with dates, lengths and SHA1 hashes. cute little inventory moment ✨
  • -r rmfile β€” removes a file from the secstore. bye bestie, and remember: it’s giving irreversible, so read the BUGS section 😭
  • -c β€” prompts for a password change. new password, new main character energy.
  • -u user β€” yep, it’s in the synopsis as -u user. the page doesn’t spell out extra deets here, so i’m not gonna invent lore. iykyk πŸ’…
  • -v β€” produces more verbose output, in particular providing a few bits of feedback to help the user detect mistyping. honestly obsessed with helpful little feedback πŸ’–
  • -i β€” says that the password should be read from standard input instead of from /dev/tty. stdin girlies rise 🧚
  • -n β€” says that the password should be read from NVRAM (see authsrv(3)) instead of from /dev/tty. NVRAM moment, periodt.

the example, because examples ate

for example, to add a secret to the file read by factotum(4), run:

% cd somewhere-private
% auth/secstore -g factotum
secstore password:
% echo 'key proto=apop dom=x.com user=ehg !password=hi' >> factotum
% auth/secstore -p factotum
secstore password:
% cat factotum | 9p write -l factotum/ctl

and delete the window. the middle commands fetch the persistent copy of the secrets, append a new secret, and save the updated file back to secstore. the final command loads the new secret into the running factotum. it’s giving full-circle secret choreography 🌈


ipso, the convenient little script bestie

the ipso command packages this sequence into a convenient script to simplify editing of files stored on a secure store. it copies the named files into a private directory, plumbs them to the editor, and waits for a line on the console. once a line is typed, signifying that editing is complete, ipso prompts the user to confirm copying modified or newly created files back to secstore. if no file is mentioned, ipso grabs all the user’s files from secstore for editing. no files named? it’s grabbing the whole stash, bestie πŸ“

by default, ipso will edit the secstore files and, if one of them is named factotum, flush current keys from factotum and load the new ones from the file. if the -e, -f, or -l options are given, ipso will just perform only the requested operations, i.e., edit, flush, and/or load. very β€œpick your own adventure” of it ✨

ipso option tea

  • -a β€” provides a similar service for files encrypted by aescbc (q.v.). with the -a option, the full rooted pathname of the file must be specified and all files must be encrypted with the same key. also with -a, newly created files are ignored. noted, no extra claims, just facts πŸ’…
  • -e, -f, -l β€” if these are given, ipso will just perform only the requested operations, i.e., edit, flush, and/or load. no extra side quests.

aescbc, cryptographic icon

aescbc encrypts and decrypts using AES (Rijndael) in cipher block chaining (CBC) mode. that’s the whole flex, and it’s a good one πŸ”₯


πŸ“¦ SOURCE πŸ“¦

/bin/ipso
/src/cmd/auth/secstore

πŸ‘€ SEE ALSO πŸ‘€

factotum(4), secstored(1). go read those too, bestie, it’s called lore expansion πŸ¦‹


πŸ’€ BUGS πŸ’€

ok this part is serious, bestie. read it before you do anything irreversible.
  • there is deliberately no backup of files on the secstore, so -r (or a disk crash) is irrevocable. you are advised to store important secrets in a second location. like, please, fr fr 😭
  • when using ipso, secrets will appear as plain text in the editor window, so use the command in private. no screen-sharing your secrets, bestie πŸ™ˆ
  • establishing a private directory in which to store the secret files is difficult on Unix. on most systems, ipso creates a mode 700 directory /tmp/ipso.user and works there. on Linux systems, ipso looks for a tmpfs file system; if it exists, ipso creates the ipso.user directory in its root instead of /tmp. noted, no guessing, just the tea 🫢
  • Ipso should zero the secret files before removing them. should. iconic security goal, but that’s what the page says πŸ’…

catch u later β€” signing off from SECSTORE(1), General Commands Manual, with no separate source/version or date line in this copy, just the cute footer vibe and a lil mwah πŸŽ€βœ¨