Bläddra i källkod

Checking that gpg pubkey exists

Bob Mottram 9 år sedan
förälder
incheckning
79f5759a08
1 ändrade filer med 29 tillägg och 5 borttagningar
  1. 29
    5
      src/freedombone

+ 29
- 5
src/freedombone Visa fil

7432
   echo "yes"
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
 function configure_gpg {
7447
 function configure_gpg {
7436
   if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
7448
   if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
7437
       return
7449
       return
7445
 
7457
 
7446
   # if gpg keys directory was previously imported from usb
7458
   # if gpg keys directory was previously imported from usb
7447
   if [[ $GPG_KEYS_IMPORTED == "yes" && -d $gpg_dir ]]; then
7459
   if [[ $GPG_KEYS_IMPORTED == "yes" && -d $gpg_dir ]]; then
7448
-      echo 'GPG keys were imported'
7460
+      echo $'GPG keys were imported'
7449
       sed -i "s|keyserver hkp://keys.gnupg.net|keyserver $GPG_KEYSERVER|g" $gpg_dir/gpg.conf
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
       chown -R $MY_USERNAME:$MY_USERNAME $gpg_dir
7466
       chown -R $MY_USERNAME:$MY_USERNAME $gpg_dir
7452
       chmod 700 $gpg_dir
7467
       chmod 700 $gpg_dir
7453
       chmod 600 $gpg_dir/*
7468
       chmod 600 $gpg_dir/*
7499
 
7514
 
7500
       # for security ensure that the private key file doesn't linger around
7515
       # for security ensure that the private key file doesn't linger around
7501
       shred -zu $MY_GPG_PRIVATE_KEY
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
   else
7521
   else
7504
       # Generate a GPG key
7522
       # Generate a GPG key
7505
       echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
7523
       echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
7518
           exit 6362
7536
           exit 6362
7519
       fi
7537
       fi
7520
       shred -zu /home/$MY_USERNAME/gpg-genkey.conf
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
       MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
7543
       MY_GPG_PUBLIC_KEY=/tmp/public_key.gpg
7523
       su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
7544
       su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
7524
 
7545
 
7707
 
7728
 
7708
   # obtain your public key ID
7729
   # obtain your public key ID
7709
   if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
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
       if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
7732
       if [ ! $MY_GPG_PUBLIC_KEY_ID ]; then
7712
           return
7733
           return
7713
       fi
7734
       fi
7735
+      if [ ${#MY_GPG_PUBLIC_KEY_ID} -lt 4 ]; then
7736
+          return
7737
+      fi
7714
   fi
7738
   fi
7715
 
7739
 
7716
   if ! grep -q "pgp_encrypt_only_command" /home/$MY_USERNAME/.muttrc; then
7740
   if ! grep -q "pgp_encrypt_only_command" /home/$MY_USERNAME/.muttrc; then