Hallo,
ich baue bei uns (6.5er und 7er Clients) an einer Lösung, E-Mails mit User-Interaktion sehr einfach in einer Notes-DB zu archivieren. Damit die E-Mails auch nach Jahren noch von anderen Personen als der Empfänger-Kreis lesbar werden, überprüfe ich, ob die E-Mails verschlüsselt sind.
Das prüfen auf die Verschlüsselung führe ich über das NotesDocument-Objekt mit der Methode .isEncrypted durch. Klappt in meinen Tests auch sehr gut.
Meine erste Frage:
Ein Kollege hat mich darauf hingewiesen, dass man sich auf den Rückgabewert von .isEncrypted nicht verlassen kann. Ist die Methode buggy? Oder gab es da nur Probleme bei bestimmten Notes-Versionen? Er konnte mir leider nichts weiter dazu sagen.
Die zweite Frage ist folgende:
Ich möchte mittels User-Interaktion die Mail entschlüsseln lassen. Dazu habe ich hier im Forum diesen Tipp gefunden:
http://atnotes.de/index.php?topic=15495.0Ich habe den Code ein wenig umgebaut und in eine LotusScript-Klasse eingefügt. Die Methode sieht aber grundsätzlich noch so aus:
| Public Function decryptDocument() As Integer |
| On Error 4000 Goto cannotDecrypt |
| |
| decryptDocument = False |
| |
| Dim item As NotesItem |
| |
| ' Ist das Dokument überhaupt verschlüsselt? |
| If Not Me.doc.isEncrypted Then |
| While (Me.doc.HasItem("Encrypt")) |
| Set item = Me.doc.GetFirstItem("Encrypt") |
| Call item.Remove |
| Wend |
| |
| decryptDocument = True |
| |
| Exit Function |
| End If |
| |
| |
| ' ################# Jetzt entschlüsseln ################# |
| |
| Forall i In Me.doc.Items |
| If i.IsEncrypted Then |
| i.IsEncrypted = False |
| End If |
| End Forall |
| |
| Dim dummyitem As NotesItem |
| Set dummyitem = New NotesItem ( Me.doc, "DummyItem", "" ) |
| dummyitem.IsEncrypted = True |
| |
| 'Dokument verschlüsseln, allerdings wird nur das dummy-icon verschlüsselt |
| Call Me.doc.Encrypt |
| Call Me.doc.Save(False, False) |
| |
| ' Jetzt die Items Encrypt und $Seal löschen |
| While (Me.doc.HasItem("Encrypt")) |
| Set item = Me.doc.GetFirstItem("Encrypt") |
| Call item.Remove |
| Wend |
| While (Me.doc.HasItem("$Seal")) |
| Set item = Me.doc.GetFirstItem("$Seal") |
| Call item.Remove |
| Wend |
| Call Me.doc.Save(False, False) |
| |
| 'Dummy Item wieder löschen |
| While (Me.doc.HasItem("dummyitem")) |
| Set item = Me.doc.GetFirstItem("dummyitem") |
| Call item.Remove |
| Wend |
| |
| ' Speichern... |
| Call Me.doc.Save(False, False) |
| |
| |
| decryptDocument = True |
| |
| exitFunction: |
| Exit Function |
| |
| |
| cannotDecrypt: |
| ' Dokument kann nicht entschlüsselt werden. Falscher User! |
| |
| Resume exitfunction |
| End Function |
| |
Nun sagte mir der Kollege auch dazu, dass das so nicht funktioniert. Hier wird nur zuverlässig der Text entschlüsselt. Anhänge gehen allerdings verloren. Auch dieses Verhalten konnte ich in meinen Tests nicht nachstellen. Bei mir hat in einem reinen ND 6.5.4-Testsystem alles problemlos funktioniert und lesbar entschlüsselt.
Sind euch hier irgendwelche Probleme bekannt, die durch meine Verfahren auftreten können? Gibt es hier ggf. eigenarten, die vom Client kommen? Ist euch irgendetwas bekannt?
Vielen Dank für eure Hilfe.
oson00