Signing already-encrypted files (all to self)?

Peter Lebbing peter at digitalbrains.com
Mon Nov 14 15:42:58 CET 2011


On 14/11/11 12:11, Chris Poole wrote:
> 2. `find maildir/ -not -name '*.gpg' | gpg ...` to encrypt these new files
>
> At this point in the script now, I would want to hash the new files, but now
> they'll have the `.gpg` output extension.

The following is just a sketch, I'm not completely checking if I do it right.

find maildir/ -not -name '*.gpg' \
  -execdir gpg -r you -o '{}.gpg' -e '{}' ';' \
  -execdir gpg --print-md SHA256 '{}.gpg' ';'

The trick obviously is that find can do multiple executions. I didn't know this
either, I just tried it out :). There are different variations. This one outputs
the hashes on stdout, and I don't know a way to separate the stdout's, for when
the encryption command would start printing stuff on stdout.

But a different variation is to define a helper program (called do_gpg):

--8<----------(cut here)---------->8--
#!/bin/sh
gpg -r you -o "$1.gpg" -e "$1"
gpg --print-md SHA256 "$1.gpg" >>sha256sums
--8<----------(cut here)---------->8--

and then:

find maildir/ -not -name '*.gpg' \
  -execdir do_gpg '{}' ';'

As a third variation, you could only define a helper program to do the
checksumming, and have two -execdir arguments to find.

Note that piping the output from find like you write gives issues with filenames
with special characters (space, newline, etcetera), but that might not be a
problem for you.

And also note that encrypting identical plaintexts will lead to different
ciphertexts, and hence, hashes. If you sometimes re-encrypt the same data, you
need to be aware of this or you'll think your files have been tampered with
because the hash no longer checks out.

Peter.

-- 
I use the GNU Privacy Guard (GnuPG) in combination with Enigmail.
You can send me encrypted mail if you want some privacy.
My key is available at http://wwwhome.cs.utwente.nl/~lebbing/pubkey.txt



More information about the Gnupg-users mailing list