| .TH SECSTORE 1 |
| .SH NAME |
| aescbc, ipso, secstore \- secstore commands |
| .SH SYNOPSIS |
| .B secstore |
| [ |
| .B -s |
| .I server |
| ] |
| [ |
| .B -(g|G) |
| .I getfile |
| ] |
| [ |
| .B -p |
| .I putfile |
| ] |
| [ |
| .B -r |
| .I rmfile |
| ] |
| [ |
| .B -c |
| ] |
| [ |
| .B -u |
| .I user |
| ] |
| [ |
| .B -v |
| ] |
| [ |
| .B -i |
| ] |
| .PP |
| .B aescbc |
| -e |
| .I <cleartext |
| .I >ciphertext |
| .br |
| .B aescbc |
| -d |
| .I <ciphertext |
| .I >cleartext |
| .PP |
| .B ipso |
| [ |
| .B -a -e -l -f |
| ] [ |
| .I file |
| \&... |
| ] |
| .SH DESCRIPTION |
| .PP |
| .I Secstore |
| authenticates to the server |
| using a password and optionally a hardware token, |
| then saves or retrieves a file. |
| This is intended to be a credentials store (public/private keypairs, |
| passwords, and other secrets) for a factotum. |
| .PP |
| Option |
| .B -p |
| stores a file on the secstore. |
| .PP |
| Option |
| .B -g |
| retrieves a file to the local directory; |
| option |
| .B -G |
| writes it to standard output instead. |
| Specifying |
| .I getfile |
| of . will send to standard output |
| a list of remote files with dates, lengths and SHA1 hashes. |
| .PP |
| Option |
| .B -r |
| removes a file from the secstore. |
| .PP |
| Option |
| .B -c |
| prompts for a password change. |
| .PP |
| Option |
| .B -v |
| produces more verbose output, in particular providing a few |
| bits of feedback to help the user detect mistyping. |
| .PP |
| Option |
| .B -i |
| says that the password should be read from standard input |
| instead of from |
| .BR /dev/tty . |
| .PP |
| Option |
| .B -n |
| says that the password should be read from NVRAM |
| (see |
| .IR authsrv (3)) |
| instead of from |
| .BR /dev/tty . |
| .PP |
| The server is |
| .BR tcp!$auth!secstore , |
| or the server specified by option |
| .BR -s . |
| .PP |
| For example, to add a secret to the file read by |
| .IR factotum (4), |
| run |
| .sp |
| .EX |
| % 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 |
| .EE |
| .PP |
| 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. |
| .PP |
| The |
| .I ipso |
| command packages this sequence into a convenient script to simplify editing of |
| .I files |
| stored on a secure store. |
| It copies the named |
| .I 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, |
| .I ipso |
| prompts the user to confirm copying modifed or newly created files back to |
| .I secstore. |
| If no |
| .I file |
| is mentioned, |
| .I ipso |
| grabs all the user's files from |
| .I secstore |
| for editing. |
| .PP |
| By default, ipso will edit the |
| .I secstore |
| files and, if |
| one of them is named |
| .BR factotum , |
| flush current keys from factotum and load |
| the new ones from the file. |
| If the |
| .BR -e , |
| .BR -f , |
| or |
| .BR -l |
| options are given, |
| .I ipso |
| will just perform only the requested operations, i.e., |
| edit, flush, and/or load. |
| .PP |
| The |
| .B -a |
| option of |
| .I ipso |
| provides a similar service for files encrypted by |
| .I aescbc |
| .RI ( q.v. ). |
| With the |
| .B -a |
| option, the full rooted pathname of the |
| .I file |
| must be specified and all |
| .I files |
| must be encrypted with the same key. |
| Also with |
| .BR -a , |
| newly created files are ignored. |
| .PP |
| .I Aescbc |
| encrypts and decrypts using AES (Rijndael) in cipher |
| block chaining (CBC) mode. |
| .SH SOURCE |
| .B \*9/bin/ipso |
| .br |
| .B \*9/src/cmd/auth/secstore |
| .SH SEE ALSO |
| .IR factotum (4), |
| .IR secstored (1) |
| .SH BUGS |
| There is deliberately no backup of files on the secstore, so |
| .B -r |
| (or a disk crash) is irrevocable. You are advised to store |
| important secrets in a second location. |
| .PP |
| When using |
| .IR ipso , |
| secrets will appear as plain text in the editor window, |
| so use the command in private. |
| .PP |
| Establishing a private directory in which to store the secret |
| files is difficult on Unix. |
| On most systems, |
| .I ipso |
| creates a mode 700 directory |
| .BI /tmp/ipso. user |
| and works there. |
| On Linux systems, |
| .I ipso |
| looks for a |
| .B tmpfs |
| file system; if it exists, |
| .I ipso |
| creates the |
| .BI ipso. user |
| directory in its root |
| instead of |
| .BR /tmp . |
| .PP |
| .I Ipso |
| should zero the secret files before removing them. |