Entschlüsseln
Um eine Einreichung korrekt verarbeiten und überprüfen zu können, müssen zuerst alle verschlüsselten Informationen entschlüsselt werden. Darunter fallen beispielsweise die Metadaten, die Fachdaten (falls vorhanden) oder Anlagen (falls vorhanden).
Entschlüsseln von Daten in empfangenden Systemen
- .NET (SDK)
- Java (Spring)
Diese Funktionalität wird durch das .NET-SDK bereits intern umgesetzt
und ist durch einen Aufruf der Methode RequestSubmissionAsync(...)
der SDK-Klasse Subscriber
automatisch mit abgedeckt:
var receivedSubmission = await subscriber.RequestSubmissionAsync(submission.Id);
Das Beispiel ruft die Methode RequestSubmissionAsync(submission.Id)
am Subscriber-Objekt auf.
Der Methode wird die Id der Submission übergeben, die vom Zustelldienst geladen werden soll.
Das Beispiel weist die erhaltene Submission der Variablen receivedSubmission
zu.
Der Quellcode ist ein Auszug aus einem Beispiel, das zeigt, wie Sie mit dem .NET-SDK Submissions vom Zustelldienst laden.
Dieses Beispiel finden Sie auf der Seite Einreichung herunterladen.
Der Quellcode oben ist ein Auszug aus dem Projekt ConsoleAppExample
,
das im Repository Codebeispiele - examples von FIT-Connect hinterlegt ist.
Eine Beschreibung des .NET-SDKs finden Sie im Hauptmenü unter "SDKs > .NET-SDK".
Im folgenden werden Auszüge aus dem Quellcode von Beispielen verwendet.
Die vollständigen Beispiele finden Sie auf der Seite Example Code.
Wenn ein empfangendes System (z.B. eine Fachanwendung oder virtuelle Poststelle) eine Einreichung erhält,
dann kann es diese mithilfe des privaten Schlüssels und der Java-Bibliothek nimbus-jose-jwt
entschlüsseln.
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
<version>9.X.X</version>
</dependency>
Hierfür muss zuerst der private Schlüssel eingelesen werden.
Bei nimbus-jose-jwt
gibt es für RSA-Schlüssel die Klasse RSAKey
, um diese zu lesen:
// ⤹ InputStream
String keyStr = new String(existingPrivateKey.readAllBytes());
RSAKey jwk = RSAKey.parse(keyStr);
Nach dem Einlesen können die verschlüsselten Daten (repräsentiert als Base64URL-kodierter String) mithilfe des Schlüssels entschlüsselt werden.
Auch hier wird wieder abhängig vom Schlüssel eine entsprechende Klasse für die Entschlüsselung verwendet,
im Falle der RSA-Schlüssel die Klasse RSADecrypter
.
Mehr Informationen zum Validieren des Schlüssels finden Sie auf der Seite Verschlüsseln.
// Schlüssel validieren
validateRSAKey(jwk, true);
// ⤹ InputStream
String encryptedStr = new String(jweString.readAllBytes());
JWEObject jweObject = JWEObject.parse(encryptedStr);
jweObject.decrypt(new RSADecrypter(jwk));
Abschließend kann die entschlüsselte Payload weiterverarbeitet oder, wie in diesem Fall, einfach ausgegeben werden.
System.out.println(jweObject.getPayload().toString());