From f7388a2e7065022543960917aa1275073c85e0c3 Mon Sep 17 00:00:00 2001 From: Stefan Huber Date: Sat, 17 Nov 2012 19:02:29 +0100 Subject: [PATCH] add libreoffice-gpg --- libreoffice-gpg | 118 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100755 libreoffice-gpg diff --git a/libreoffice-gpg b/libreoffice-gpg new file mode 100755 index 0000000..d074cec --- /dev/null +++ b/libreoffice-gpg @@ -0,0 +1,118 @@ +#!/bin/sh +#shuber, 2008-10-18 +# +# This script does a decrypt-edit-encrypt cycle with gpg and OpenOffice. +# The concrete editing program (ooffice) can be set by the variable +# $CMD. The detection if the file has been altered is done by a hash sum +# algorithm which can be set by $SUMCMD. +# +# Changelog: +# * 2008-10-18 Initial version +# * 2008-10-19 Introducing a CRYPTID variable +# Checking if crypted file has same checksum +# * 2010-10-23 ooffice only spawns OpenOffice and gives control back +# to shell. Hence, we have to wait for pid now. + + +CMD="libreoffice" +SUMCMD="sha1sum" +CRYPTID="user@example.org" + + +#No valid invocation +if [ $# -ne 1 ] +then + echo "Usage: $CMD-gpg " + exit -1 +fi + + +#The corresponding gpg-file +gpgfile=$1 + +if [ ! -f "$gpgfile" ] +then + echo "\`$gpgfile\` does not exist..." +else + echo "Opening \`$gpgfile\`..." +fi + + + +#Search for filename to to encrypt file to... +uncryptfilePost=${gpgfile%%.gpg} +i=1 +uncryptfile="$i.$uncryptfilePost" + +while [ -f "$uncryptfile" ] +do + let "i = $i + 1" + uncryptfile="$i.$uncryptfilePost" +done + + +echo "Uncrypt \`$gpgfile\` to \`$uncryptfile\`..." + + + +#Decrypt file and get checksum... +gpg --output "$uncryptfile" --decrypt "$gpgfile" +hsumpre=`$SUMCMD "$uncryptfile" | awk '{ print $1 }'` +echo "Checksum is '$hsumpre'." + + +#Edit file and get checksum of altered file +$CMD "$uncryptfile" +#pid=`lsof | grep "$uncryptfile" | cut -d ' ' -f 2` +#echo "wait for pid: $pid" +#while [ -n "`ps | grep "$pid"`" ] ; do +# sleep 1 +#done + + +hsumpost=`$SUMCMD "$uncryptfile" | awk '{ print $1 }'` +echo "Checksum is '$hsumpost'." + + +#Check if file has been altered +if [ "$hsumpost" != "$hsumpre" ] +then + gpg --output "$gpgfile" -r "$CRYPTID" --encrypt "$uncryptfile" + + #Get checksum of crypted version + hsumcrypt=`gpg --decrypt $gpgfile | $SUMCMD | awk '{ print $1 }'` + echo "Checksum of crypted file is '$hsumcrypt'" + + if [ "$hsumpost" != "$hsumcrypt" ] + then + echo "" + echo "*** WARNING ***" + echo "*** WARNING *** Encrypted file \`$gpgfile\` leads to different checksum." + echo "*** WARNING *** Not removing unencrypted file \`$uncryptfile\`." + echo "*** WARNING ***" + echo "" + + exit -1 + fi + +else + echo "No changes. Skip re-encrypting" +fi + + + + +#Remove old file... +rm -i "$uncryptfile" + + +#File not removed!? +if [ -f "$uncryptfile" ] +then + echo "" + echo "*** WARNING ***" + echo "*** WARNING *** Unencrypted file \`$uncryptfile\` not removed!" + echo "*** WARNING ***" + echo "" +fi + -- 2.39.5