瀏覽代碼

Make gpg key reconstruction optionally interactive

Bob Mottram 7 年之前
父節點
當前提交
1a2e301c0b
共有 1 個文件被更改,包括 39 次插入15 次删除
  1. 39
    15
      src/freedombone-utils-keys

+ 39
- 15
src/freedombone-utils-keys 查看文件

@@ -51,37 +51,61 @@ function gpg_set_permissions {
51 51
 }
52 52
 
53 53
 function reconstruct_key {
54
-    if [ ! -d /home/$MY_USERNAME/.gnupg_fragments ]; then
54
+    key_username=$1
55
+    key_interactive=$2
56
+
57
+    if [ ! -d /home/$key_username/.gnupg_fragments ]; then
55 58
         return
56 59
     fi
57
-    cd /home/$MY_USERNAME/.gnupg_fragments
60
+    cd /home/$key_username/.gnupg_fragments
58 61
     no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
59 62
     if (( no_of_shares < 4 )); then
60
-        dialog --title $"Recover Encryption Keys" --msgbox $'Not enough fragments to reconstruct the key' 6 70
63
+        if [ $key_interactive ]; then
64
+            dialog --title $"Recover Encryption Keys" --msgbox $'Not enough fragments to reconstruct the key' 6 70
65
+        else
66
+            echo $'Not enough fragments to reconstruct the key'
67
+        fi
61 68
         exit 7348
62 69
     fi
63 70
     apt-get -yq install libgfshare-bin gnupg
64
-    gfcombine /home/$MY_USERNAME/.gnupg_fragments/keyshare*
71
+    gfcombine /home/$key_username/.gnupg_fragments/keyshare*
65 72
     if [ ! "$?" = "0" ]; then
66
-        dialog --title $"Recover Encryption Keys" --msgbox $'Unable to reconstruct the key' 6 70
73
+        if [ $key_interactive ]; then
74
+            dialog --title $"Recover Encryption Keys" --msgbox $'Unable to reconstruct the key' 6 70
75
+        else
76
+            echo $'Unable to reconstruct the key'
77
+        fi
67 78
         exit 7348
68 79
     fi
69 80
 
70
-    KEYS_FILE=/home/$MY_USERNAME/.gnupg_fragments/keyshare.asc
81
+    KEYS_FILE=/home/$key_username/.gnupg_fragments/keyshare.asc
71 82
     if [ ! -f $KEYS_FILE ]; then
72
-        dialog --title $"Recover Encryption Keys" --msgbox $'Unable to reconstruct the key' 6 70
83
+        if [ $key_interactive ]; then
84
+            dialog --title $"Recover Encryption Keys" --msgbox $'Unable to reconstruct the key' 6 70
85
+        else
86
+            echo $'Unable to reconstruct the key'
87
+        fi
88
+        exit 52852
73 89
     fi
74 90
 
75
-    gpg --homedir=/home/$MY_USERNAME/.gnupg --allow-secret-key-import --import $KEYS_FILE
91
+    gpg --homedir=/home/$key_username/.gnupg --allow-secret-key-import --import $KEYS_FILE
76 92
     if [ ! "$?" = "0" ]; then
77
-        echo $'Unable to import gpg key'
78 93
         shred -zu $KEYS_FILE
79
-        rm -rf /home/$MY_USERNAME/.tempgnupg
80
-        exit 9654
94
+        rm -rf /home/$key_username/.tempgnupg
95
+        if [ $key_interactive ]; then
96
+            dialog --title $"Recover Encryption Keys" --msgbox $'Unable to import gpg key' 6 70
97
+        else
98
+            echo $'Unable to import gpg key'
99
+        fi
100
+        exit 96547
81 101
     fi
82 102
     shred -zu $KEYS_FILE
83 103
 
84
-    dialog --title $"Recover Encryption Keys" --msgbox $'Key has been reconstructed' 6 70
104
+    if [ $key_interactive ]; then
105
+        dialog --title $"Recover Encryption Keys" --msgbox $'Key has been reconstructed' 6 70
106
+    else
107
+        echo $'Key has been reconstructed'
108
+    fi
85 109
 }
86 110
 
87 111
 function interactive_gpg_from_usb {
@@ -98,7 +122,7 @@ function interactive_gpg_from_usb {
98 122
 
99 123
         if [ ! -b $USB_DRIVE ]; then
100 124
             if (( GPG_CTR > 0 )); then
101
-                reconstruct_key
125
+                reconstruct_key $MY_USERNAME interactive
102 126
                 return 0
103 127
             fi
104 128
             dialog --title $"Recover Encryption Keys" --msgbox $'No USB drive found' 6 30
@@ -110,7 +134,7 @@ function interactive_gpg_from_usb {
110 134
         if [ ! -d $USB_MOUNT ]; then
111 135
             if (( GPG_CTR > 0 )); then
112 136
                 backup_unmount_drive ${USB_DRIVE}
113
-                reconstruct_key
137
+                reconstruct_key $MY_USERNAME interactive
114 138
                 return 0
115 139
             fi
116 140
             dialog --title $"Recover Encryption Keys" \
@@ -123,7 +147,7 @@ function interactive_gpg_from_usb {
123 147
             if [ ! -d $USB_MOUNT/.gnupg_fragments ]; then
124 148
                 if (( GPG_CTR > 0 )); then
125 149
                     backup_unmount_drive ${USB_DRIVE}
126
-                    reconstruct_key
150
+                    reconstruct_key $MY_USERNAME interactive
127 151
                     return 0
128 152
                 fi
129 153
                 dialog --title $"Recover Encryption Keys" \