Bladeren bron

Checking that gpg pubkey exists

Bob Mottram 9 jaren geleden
bovenliggende
commit
79f5759a08
1 gewijzigde bestanden met toevoegingen van 29 en 5 verwijderingen
  1. 29
    5
      src/freedombone

+ 29
- 5
src/freedombone Bestand weergeven

@@ -7432,6 +7432,18 @@ function gpg_key_exists {
7432 7432
   echo "yes"
7433 7433
 }
7434 7434
 
7435
+function gpg_pubkey_from_email {
7436
+  key_owner_username=$1
7437
+  key_email_address=$2
7438
+  key_id=
7439
+  if [[ $key_owner_username != "root" ]]; then
7440
+      key_id=$(su -c "gpg --list-keys $key_email_address | grep 'pub '" - $key_owner_username | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7441
+  else
7442
+      key_id=$(gpg --list-keys $key_email_address | grep 'pub ' | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7443
+  fi
7444
+  echo $key_id
7445
+}
7446
+
7435 7447
 function configure_gpg {
7436 7448
   if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
7437 7449
       return
@@ -7445,9 +7457,12 @@ function configure_gpg {
7445 7457
 
7446 7458
   # if gpg keys directory was previously imported from usb
7447 7459
   if [[ $GPG_KEYS_IMPORTED == "yes" && -d $gpg_dir ]]; then
7448
-      echo 'GPG keys were imported'
7460
+      echo $'GPG keys were imported'
7449 7461
       sed -i "s|keyserver hkp://keys.gnupg.net|keyserver $GPG_KEYSERVER|g" $gpg_dir/gpg.conf
7450
-      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_EMAIL_ADDRESS | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7462
+      MY_GPG_PUBLIC_KEY_ID=$(gpg_pubkey_from_email "$MY_USERNAME" "$MY_EMAIL_ADDRESS")
7463
+      if [ ${#MY_GPG_PUBLIC_KEY_ID} -lt 4 ]; then
7464
+          echo $'GPG public key ID could not be obtained'
7465
+      fi
7451 7466
       chown -R $MY_USERNAME:$MY_USERNAME $gpg_dir
7452 7467
       chmod 700 $gpg_dir
7453 7468
       chmod 600 $gpg_dir/*
@@ -7499,7 +7514,10 @@ function configure_gpg {
7499 7514
 
7500 7515
       # for security ensure that the private key file doesn't linger around
7501 7516
       shred -zu $MY_GPG_PRIVATE_KEY
7502
-      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_EMAIL_ADDRESS | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7517
+      MY_GPG_PUBLIC_KEY_ID=$(gpg_pubkey_from_email "$MY_USERNAME" "$MY_EMAIL_ADDRESS")
7518
+      if [ ${#MY_GPG_PUBLIC_KEY_ID} -lt 4 ]; then
7519
+          echo $'GPG public key ID could not be obtained'
7520
+      fi
7503 7521
   else
7504 7522
       # Generate a GPG key
7505 7523
       echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
@@ -7518,7 +7536,10 @@ function configure_gpg {
7518 7536
           exit 6362
7519 7537
       fi
7520 7538
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
7521
-      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_EMAIL_ADDRESS | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7539
+      MY_GPG_PUBLIC_KEY_ID=$(gpg_pubkey_from_email "$MY_USERNAME" "$MY_EMAIL_ADDRESS")
7540
+      if [ ${#MY_GPG_PUBLIC_KEY_ID} -lt 4 ]; then
7541
+          echo $'GPG public key ID could not be obtained'
7542
+      fi
7522 7543
       MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
7523 7544
       su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
7524 7545
 
@@ -7707,10 +7728,13 @@ function encrypt_outgoing_email {
7707 7728
 
7708 7729
   # obtain your public key ID
7709 7730
   if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
7710
-      MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_EMAIL_ADDRESS | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
7731
+      MY_GPG_PUBLIC_KEY_ID=$(gpg_pubkey_from_email "$MY_USERNAME" "$MY_EMAIL_ADDRESS")
7711 7732
       if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
7712 7733
           return
7713 7734
       fi
7735
+      if [ ${#MY_GPG_PUBLIC_KEY_ID} -lt 4 ]; then
7736
+          return
7737
+      fi
7714 7738
   fi
7715 7739
 
7716 7740
   if ! grep -q "pgp_encrypt_only_command" /home/$MY_USERNAME/.muttrc; then