Patch from Karl-Heinz Ruskowski.

Here his message:

      Hallo,
      uns sind hier zwei Fehler an dem gnupg.vim-script aufgefallen die wir hier
      erstmal vorsorglich umgangen haben. (Patch hängt an)

      1. Wenn wenn Einträge in der in der Empfängerliste waren die einen Trustlevel
      < 4 hatten frage Gnupg nochmal nach ob denn nun dieser Schlüssel übernommen
      werden sollte wenn man dies verneinte wurde die Datei dennoch gespeichert,
      aber unverschlüsselt - was sicher die schlechteste lösung ist.
      Kleiner auszug aus der Schell darüber:
      =========================================
      pub  1024g/6E4DF128 2006-12-06 Sascha L. Teichmann
      <s-l-teichmann@users.sourceforge.net>
      Haupt-Fingerabdruck  = 4F52 9526 6786 0497 4390  676F B2BB CE94 57FC 1337
      Unter-Fingerabdruck  = AD32 F49A C4AD 7113 CF0D  0303 548A 53F3 6E4D F128

      It is NOT certain that the key belongs to the person named
      in the user ID.  If you *really* know what you are doing,
      you may answer the next question with yes.

      Use this key anyway? (y/N)

      --> Vorgabe (also nein) führt zu

      "Zugang/Zugang.gpg" 0L, 0C geschrieben
      =========================================

      Mittels "--trust-model always" erzwingen wir die zustimung und die Daten
      bleiben verschlüsselt.

      2. Wenn man die Empfänger einer Datei bearbeitet hat und man verlässt den
      Puffer zur eingabe und nun wird ein eingetragener Schlüssel gelöscht
      speichert man wieder eine kaputte gpg Datei.

      Ich habe eine zusätzliche prüfung auf unbekannte Empfänger hinzugefügt und
      lösche diese Unbekannten Keys vor er verschlüsselung.

      In beiden fällen war es mir nicht möglich bei einem aufgetretenen Fehler
      wieder zurück in den Editormodus zu wechseln, was sicher an meinen schlechten
      Vimscript Kenntnissen liegt. Dies wäre aus meiner Sicht natürlich die beste
      Lösung.

      Hoffe ich konnte helfen.

      Mit freundlichen Grüßen

      Karl-Heinz Ruskowski
      --
      Karl-Heinz Ruskowski                              OpenPGP key: FB8DA3BF
      Intevation GmbH, Osnabrück
      Amtsgericht Osnabrück, HR B 18998             http://www.intevation.de/
      Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
This commit is contained in:
Markus Braun 2008-05-12 09:07:42 +00:00
parent 9cb02c800a
commit c7ab1464da

View File

@ -108,7 +108,7 @@ fun s:GPGInit()
" check what gpg command to use
if (!exists("g:GPGExecutable"))
let g:GPGExecutable = "gpg"
let g:GPGExecutable = "gpg --trust-model always"
endif
" check if gpg-agent is allowed
@ -353,14 +353,56 @@ fun s:GPGEncrypt()
let option=s:GetField(b:GPGOptions, ":", field)
endw
let GPGUnknownRecipients=""
let field=0
let cur_recipient="-"
" Check recipientslist for unknown recipients again
while(strlen(cur_recipient))
let cur_recipient=s:GetField(b:GPGRecipients, ":", field)
let field=field+1
" only do this if the line is not empty
if (strlen(cur_recipient) > 0)
let gpgid=s:GPGNameToID(cur_recipient)
if (strlen(gpgid) <= 0)
let GPGUnknownRecipients=GPGUnknownRecipients . cur_recipient . ":"
echohl GPGWarning
echo "The recipient " . cur_recipient . " is not in your public keyring!"
echohl None
endi
endi
endw
" check if there are unknown recipients and warn
if (exists("b:GPGUnknownRecipients") && strlen(b:GPGUnknownRecipients) > 0)
if(strlen(GPGUnknownRecipients) > 0)
echohl GPGWarning
echo "There are unknown recipients!!"
echo "Please use GPGEditRecipients to correct!!"
echo
echohl None
call s:GPGDebug(1, "unknown recipients are: " . b:GPGUnknownRecipients)
call s:GPGDebug(1, "unknown recipients are: " . GPGUnknownRecipients)
" Remove unknown recipients from recipientslist
let unknown_recipients_field=0
let cur_unknown_recipient="-"
let known_recipients=b:GPGRecipients
while(strlen(cur_unknown_recipient))
let cur_unknown_recipient=s:GetField(GPGUnknownRecipients, ":", unknown_recipients_field)
let match_result=match(known_recipients, cur_unknown_recipient.":")
if(match_result > 0 && strlen(cur_unknown_recipient) > 0)
echohl GPGWarning
echo "Removing ". cur_unknown_recipient ." from recipientlist!\n"
echohl None
let Known_Recipients=substitute(known_recipients, cur_unknown_recipient .":", "", "g")
endi
let unknown_recipients_field=unknown_recipients_field+1
endw
" Let user know whats happend and copy known_recipients back to buffer
let dummy=input("Press ENTER to quit")
let b:GPGRecipients=known_recipients
endi
" built list of recipients