aboutsummaryrefslogtreecommitdiff
path: root/lib/keyringer/actions/recrypt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/keyringer/actions/recrypt')
-rwxr-xr-xlib/keyringer/actions/recrypt45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/keyringer/actions/recrypt b/lib/keyringer/actions/recrypt
new file mode 100755
index 0000000..014fef7
--- /dev/null
+++ b/lib/keyringer/actions/recrypt
@@ -0,0 +1,45 @@
+#!/bin/bash
+#
+# Re-encrypt files to multiple recipients.
+#
+
+# Load functions
+LIB="`dirname $0`/../functions"
+source "$LIB" || exit 1
+
+function keyringer_recrypt {
+ # Get file
+ keyringer_get_file "$1"
+
+ # Set recipients file
+ keyringer_set_recipients "$FILE"
+
+ # Decrypt
+ decrypted="$($GPG --use-agent -d "$KEYDIR/$FILE" 2> /dev/null)"
+
+ if [ "$?" != "0" ]; then
+ echo "Decryption error."
+ exit 1
+ fi
+
+ # Recrypt
+ recrypted="`echo "$decrypted" | $GPG --use-agent --armor -e -s $(keyringer_recipients "$RECIPIENTS_FILE")`"
+
+ if [ "$?" != "0" ]; then
+ echo "Recryption error."
+ exit 1
+ fi
+
+ unset decrypted
+ echo "$recrypted" > "$KEYDIR/$FILE"
+}
+
+if [ ! -z "$2" ]; then
+ keyringer_recrypt $2
+else
+ cd $KEYDIR && find | while read file; do
+ if [ ! -d "$KEYDIR/$file" ]; then
+ keyringer_recrypt "$file"
+ fi
+ done
+fi