Entschlüsselung nicht gepanzerter PGP-Dateien mit OpenPGP.js

8

Ich arbeite an einer Node-Anwendung, in die ich eine Decrypter-Funktion eingebaut habe, und habe das openpgp.js npm-Modul verwendet, um dies zu ermöglichen. Ich nehme verschiedene eingereichte PGP-Client-Dateien, die mit unserem öffentlichen Schlüssel erstellt wurden, entschlüsselt sie mit unserem privaten Schlüssel und platziere die entschlüsselten Versionen in einem Ordner, auf den ich zugreifen kann, und alles scheint gut zu sein .... so lange wie die Dateien gepanzert sind. Hier sind einige Beispielzeilen des Codes, die die Reihenfolge der Ereignisse zeigen:

%Vor%

Wenn eine gepanzerte Datei durchkommt, ist alles in Ordnung und ich bekomme die entschlüsselte Datei im angegebenen Ordner. Diese Dateien werden beim Öffnen in einem Texteditor wie folgt formatiert:

%Vor%

Allerdings haben wir Clients, die Dateien mit der gepanzerten Option verschlüsseln, so dass sie in einem hexadezimalen Format vorliegen, wenn sie in einem Texteditor geöffnet werden ....

%Vor%

..... oder als codierte Textdateien, die wie folgt aussehen:

%Vor%

(Diese beiden letzten ähneln dem, was ich sehe, wenn ich oben in meinem Codebeispiel die Protokollierung von "verschlüsselterDaten" trage.)

Immer wenn nicht gepanzerte Dateien eintreffen, schlägt der Prozess fehl und ich habe anfangs je nach dem oben gezeigten Typ ein paar verschiedene Fehler bekommen. Ich habe die 'utf8'-Kodierung auf dem fs.readFileSync entfernt und "fromBinary" anstelle von "readArmored" eingefügt, um mit den Daten als binäres Denken zu arbeiten, das funktioniert, aber dann bekomme ich Fehler über "Ungültiger Sitzungsschlüssel für die Entschlüsselung". Also habe ich versucht, die "decryptSessionKey" -Funktion vor der Hauptentschlüsselung zu verwenden, wie sie in den Dokumenten angezeigt wird, und dies bringt mir einen undefinierten Schlüssel und einen Fehler über "Kein symmetrisch verschlüsseltes Sitzungsschlüsselpaket gefunden". Außerdem breche ich wahrscheinlich den falschen Baum auf, da die Verwendung von binär mit Openpgp.js ein Passwort zu erfordern scheint, was meiner Meinung nach anders ist als die Passphrase, die meinen privaten Schlüssel freigibt, was das einzige Passwort ist, das ich habe.

Ich habe die gesamte Openpgp.js-Dokumentation durchsucht und gegoogelt wie verrückt, aber ich finde nicht, dass ich eine solide Prozedur finde, wie ich meinen Code ändern kann, der für ASCII-gepanzerte Dateien funktioniert, um Dateien zu entschlüsseln, die nicht gepanzert sind. (Jede einzelne Datei, die hereinkommt, entschlüsselt jedoch schnell und ohne Fehler, wenn ein Desktop-Entschlüsselungsprogramm wie PGP Desktop verwendet wird, so dass ich nicht herausfinden kann, wo meine Diskrepanz liegt und warum die Lösung nicht offensichtlich ist.) Jeder hat Erfahrung Mit dieser oder einer möglichen Lösung?

    
threepears 16.02.2017, 06:30
quelle

1 Antwort

1

Die nicht gepanzerte Version von openpgp.message.readArmored() ist openpgp.message.read()

Also sollte so etwas funktionieren:

%Vor%

(Die Zeile var TextEncoder ist hier nicht erforderlich, wenn Sie TextEncoder früher in Ihrem Code laden)

    
Stobor 01.03.2017 01:43
quelle