Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core JavaScript-API
Diese JavaScript-Bibliothek bietet Funktionen zum Ver- und Entschlüsseln von Dateien mithilfe von PGP (Pretty Good Privacy). Außerdem können verschlüsselte E-Mails entschlüsselt werden.
Die Bibliothek ermöglicht die Arbeit mit öffentlichen und privaten PGP-Schlüsseln. Mithilfe dieser Bibliothek können Sie Dokumente mit dem öffentlichen Schlüssel eines Dokumentempfängers verschlüsseln. Der Empfänger kann das Dokument lesen, weil er es mit dem nur ihm bekannten privaten Schlüssel entschlüsseln kann.
Achtung: Die privaten Schlüssel müssen sicher aufbewahrt werden. Ein Verlust des privaten Schlüssels führt zu einem unwiderruflichen Verlust des Zugriffs auf verschlüsselte Daten. Ebenso ist das Passwort für passwortgeschützte Schlüssel essenziell.
Für die Verschlüsselung können auch mehrere öffentliche Schlüssel verwendet werden (Multi-Recipient). Bei der Verschlüsselung mit mehreren öffentlichen Schlüsseln kann jeder Empfänger die Datei mit seinem eigenen privaten Schlüssel entschlüsseln. Dies ist ideal für Team-Szenarien, in denen mehrere Personen Zugriff auf dieselbe verschlüsselte Datei benötigen.
Intern wird die BouncyCastle-Kryptographie-Bibliothek (org.bouncycastle.*) verwendet. Es werden sowohl binäre (.gpg) als auch ASCII-Armor-Formate (.asc) unterstützt. Bei der Entschlüsselung werden automatisch signierte Nachrichten (PGPOnePassSignatureList) und komprimierte Daten (PGPCompressedData) verarbeitet. Der Integritätscheck (withIntegrityCheck) ist standardmäßig aktiviert und erhöht die Sicherheit. Alle Operationen werden in einer Transaktion ausgeführt.
| Binärformat (.gpg) | ASCII-Armor-Format (.asc) |
|---|---|
| Kompaktere Dateigröße | Größere Dateigröße (ca. 33 % größer durch Base64-Kodierung) |
| NIcht per E-Mail oder in Textfeldern übertragbar | Per E-Mail und in Textfeldern sicher übertragbar |
| Für Dateiverschlüsselung optimal | Für E-Mail-Verschlüsselung und Textübertragung optimal |
Parameter: armor = false (Standard) |
Parameter: armor = true |
Binden Sie die Bibliothek stets am Anfang eines Skripts ein:
let pgp = require('common/pgp');
Verschlüsselt eine Datei mit einem oder mehreren öffentlichen PGP-Schlüsseln. Die verschlüsselte Datei kann nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden.
Syntax
pgp.encryptFile(object, outputObject, publicKeys, withIntegrityCheck, armor);
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
| object | Zu verschlüsselndes Objekt (agorum.InputStream oder agorum.Object) | ja | – |
| outputObject | Zielobjekt für die verschlüsselte Datei (agorum.Object). Wenn nicht angegeben, wird eine temporäre Datei erstellt | nein | null (temporäre Datei) |
| publicKeys | Einzelner öffentlicher Schlüssel oder Array von öffentlichen Schlüsseln (agorum.InputStream, agorum.Object, direkt oder als Array) | ja | - |
| withIntegrityCheck | Fügt einen Integritätscheck hinzu (boolean) | nein | true |
| armor | Verwendet ASCII-Armor-Format (boolean) | nein | false |
Beispiele
Eine Datei mit einem öffentlichen Schlüssel verschlüsseln
let pgp = require('common/pgp');
let objects = require('common/objects');
let target = objects.find('/Home/roi/MyFiles/pgp/out');
let pubKey = objects.find('/Home/roi/MyFiles/pgp/Example_public.asc');
let unencrypted = objects.find('/Home/roi/MyFiles/pgp/unencrypted.pdf');
// Encrypt a file with a public key
let outFile = objects.create('file', {
name: 'encrypted.pdf.gpg',
target: target,
});
pgp.encryptFile(unencrypted, outFile, pubKey);
Eine Datei mit mehreren öffentlichen Schlüsseln verschlüsseln
let pgp = require('common/pgp');
let objects = require('common/objects');
let target = objects.find('/Home/roi/MyFiles/pgp/out');
let pubKey = objects.find('/Home/roi/MyFiles/pgp/Example_public.asc');
let pubKey2 = objects.find('/Home/roi/MyFiles/pgp/Example2_public.asc');
let unencrypted = objects.find('/Home/roi/MyFiles/pgp/unencrypted.pdf');
// Encrypt a file with multiple public keys
let outFile = objects.create('file', {
name: 'encryptedMulti.pdf.gpg',
target: target,
});
pgp.encryptFile(unencrypted, outFile, [pubKey, pubKey2]);
Verschlüsselung mit ASCII-Armor-Format
let pgp = require('common/pgp');
let objects = require('common/objects');
let target = objects.find('/Home/roi/MyFiles/pgp/out');
let pubKey = objects.find('/Home/roi/MyFiles/pgp/Example_public.asc');
let unencrypted = objects.find('/Home/roi/MyFiles/pgp/unencrypted.pdf');
// Encrypt a file with ASCII armor format
let armoredFile = objects.create('file', {
name: 'encrypted-armored.asc',
target: target,
});
pgp.encryptFile(unencrypted, armoredFile, pubKey, true, true);
Rückgabewerte
Das verschlüsselte agorum.Object. Wenn kein outputObject angegeben wurde, wird ein temporäres Objekt zurückgegeben.
Es wird eine Fehlermeldung ausgegeben, wenn der öffentliche Schlüssel nicht gefunden wird.
Hinweis: Die Funktion fügt automatisch die Dateiendung '.gpg' zum Ausgabedateinamen hinzu, wenn kein outputObject angegeben wird.
Entschlüsselt eine PGP-verschlüsselte Datei mit dem zugehörigen privaten Schlüssel.
Syntax
pgp.decryptFile(object, outputObject, secretKey, pass);
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
| object | Zu entschlüsselndes verschlüsseltes Objekt (agorum.InputStream oder agorum.Object) | ja | – |
| outputObject | Zielobjekt für die entschlüsselte Datei (agorum.Object). Wenn nicht angegeben, wird eine temporäre Datei erstellt | nein | null (temporäre Datei) |
| secretKey | Privater Schlüssel zum Entschlüsseln (agorum.InputStream oder agorum.Object) | ja | – |
| pass | Passwort des privaten Schlüssels (String oder char[]). Kann null sein, wenn der Schlüssel nicht passwortgeschützt ist | nein | null |
Beispiele
Eine verschlüsselte Datei mit Secret Key (nicht passwortgeschützt) entschlüsseln
let pgp = require('common/pgp');
let objects = require('common/objects');
let privKey = objects.find('/Home/roi/MyFiles/pgp/Example_SECRET.asc');
let encrypted = objects.find('/Home/roi/MyFiles/pgp/out/encrypted.pdf.gpg');
let target = objects.find('/Home/roi/MyFiles/pgp/outDecrypted');
// Decrypt a file without password
let decryptedFile = objects.create('file', {
name: 'decrypted.pdf',
target: target,
});
pgp.decryptFile(encrypted, decryptedFile, privKey, null);
Eine verschlüsselte Datei mit Secret Key (passwortgeschützt) entschlüsseln
Wenn der private Schlüssel zusätzlich passwortgeschützt ist, müssen Sie auch das Passwort angeben, um den privaten Schlüssel für das Entschlüsseln zu verwenden.
let pgp = require('common/pgp');
let objects = require('common/objects');
let privKey = objects.find('/Home/roi/MyFiles/pgp/Example_SECRET.asc');
let encrypted = objects.find('/Home/roi/MyFiles/pgp/out/encrypted.pdf.gpg');
let target = objects.find('/Home/roi/MyFiles/pgp/outDecrypted');
// Decrypt a file with a password
let decryptedFile = objects.create('file', {
name: 'decrypted.pdf',
target: target,
});
pgp.decryptFile(encrypted, decryptedFile, privKey, '<password>');
Eine ASCII-Armor-Datei entschlüsseln
let pgp = require('common/pgp');
let objects = require('common/objects');
let privKey = objects.find('/Home/roi/MyFiles/pgp/Example_SECRET.asc');
let encrypted = objects.find('/Home/roi/MyFiles/pgp/out/encrypted-armored.asc');
let target = objects.find('/Home/roi/MyFiles/pgp/outDecrypted');
// Datei entschlüsseln ohne Passwort
let decryptedFile = objects.create('file', {
name: 'ArmoredDecrypted.pdf',
target: target,
});
pgp.decryptFile(encrypted, decryptedFile, privKey, '<password>');
Rückgabewerte
Das entschlüsselte agorum.Object. Wenn kein outputObject angegeben wurde, wird ein temporäres Objekt zurückgegeben.
Hinweis: Die Funktion erkennt automatisch, wenn die verschlüsselte Datei die Endung '.gpg' hat, und stellt den ursprünglichen Dateinamen wieder her, sofern kein outputObject angegeben wurde.
Entschlüsselt eine verschlüsselte E-Mail mit dem zugehörigen privaten Schlüssel. Die Funktion durchsucht die E-Mail-Anhänge nach .asc-Dateien (PGP-verschlüsselte Nachrichten) und entschlüsselt diese.
Hinweis: Die Funktion sucht automatisch nach .asc-Anhängen (ASCII-Armor-Format) und erkennt PGP-verschlüsselte Nachrichten anhand der Marker "-----BEGIN PGP MESSAGE-----" und "-----END PGP MESSAGE-----".
Tipp: Diese Funktion ist besonders nützlich für die automatische Verarbeitung von verschlüsselten E-Mails in Workflows oder bei der E-Mail-Archivierung.
Syntax
pgp.decryptMail(mail, secretKey, pass);
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
| Zu entschlüsselndes E-Mail-Objekt (agorum.MailObject) | ja | – | |
| secretKey | Privater Schlüssel zum Entschlüsseln (agorum.InputStream oder agorum.Object) | ja | – |
| pass | Passwort des privaten Schlüssels (String oder char[]). Kann null sein, wenn der Schlüssel nicht passwortgeschützt ist. | nein | null |
Beispiele
let pgp = require('common/pgp');
let objects = require('common/objects');
let privKey = objects.find('/Home/roi/MyFiles/pgp/Example_SECRET.asc');
let encryptedMail = objects.find('/Home/roi/MyFiles/pgp/out/encoded-mail-object');
let decryptedMail = pgp.decryptMail(encryptedMail, privKey, null);
Rückgabewerte
Das entschlüsselte E-Mail-Objekt als temporäres agorum.MailObject oder null, wenn keine verschlüsselten Anhänge gefunden wurden.