Class VAUProtocolCryptoImpl
- java.lang.Object
-
- de.gematik.ti.vauchannel.protocol.helpers.VAUProtocolCryptoImpl
-
- All Implemented Interfaces:
VAUProtocolCrypto
public class VAUProtocolCryptoImpl extends java.lang.Object implements VAUProtocolCrypto
-
-
Constructor Summary
Constructors Constructor Description VAUProtocolCryptoImpl()VAUProtocolCryptoImpl(boolean ecc)VAUProtocolCryptoImpl(boolean doValidateAuthorizationAssertion, boolean ecc, Identity eeIdentity, java.security.cert.X509Certificate caCertificate, Identity ocspSignerIdentity)VAUProtocolCryptoImpl(boolean ecc, Identity eeIdentity)VAUProtocolCryptoImpl(boolean ecc, Identity eeIdentity, java.security.cert.X509Certificate caCertificate, Identity ocspSignerIdentity)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanProvideOcspResponse()voidcheckServerCertificate(java.security.cert.X509Certificate cert)byte[]decrypt_AESGCM(byte[] encrypted, byte[] symKey, long counter)java.security.PublicKeyeccPublicKeyFromBytes(byte[] pubKey)byte[]ECKA(java.security.PrivateKey prk, java.security.PublicKey puk)byte[]encrypt_AESGCM(byte[] plain, byte[] symKey, long counter)java.security.KeyPairgenerateECCKeyPair()java.security.cert.X509CertificategetEECertificate()org.bouncycastle.cert.ocsp.OCSPRespgetOcspResponse()byte[]hash(byte[] in)byte[]HKDF(byte[] ikm, byte[] info, int length)byte[]HKDF(byte[] ikm, java.lang.String info, int length)booleanisECCIdentity()java.time.LocalDateTimenow()voidperformOcspCheckForCertificate(java.security.cert.X509Certificate cert)Führt eine OCSP-Überprüfung für das vorliegende Zertifikat durch.voidperformTslCheckForCertificate(java.security.cert.X509Certificate cert)Führt eine TSL-Überprüfung für das vorliegende Zertifikat durch.byte[]signECDSA(byte[] message)byte[]signRSASSA_PSS(byte[] message)voidvalidateAuthorizationAssertion(VAUProtocolSession vauProtocolSession, java.lang.String authorizationAssertionStr)Prüfungen gemäß den Vorgaben in [gemSpec_Dokumentenverwaltung]booleanverify(byte[] message, byte[] signatureBytes, java.security.PublicKey puk)
-
-
-
Constructor Detail
-
VAUProtocolCryptoImpl
public VAUProtocolCryptoImpl(boolean ecc)
-
VAUProtocolCryptoImpl
public VAUProtocolCryptoImpl()
-
VAUProtocolCryptoImpl
public VAUProtocolCryptoImpl(boolean ecc, Identity eeIdentity)
-
VAUProtocolCryptoImpl
public VAUProtocolCryptoImpl(boolean ecc, Identity eeIdentity, java.security.cert.X509Certificate caCertificate, Identity ocspSignerIdentity)
-
-
Method Detail
-
now
public java.time.LocalDateTime now()
- Specified by:
nowin interfaceVAUProtocolCrypto
-
hash
public byte[] hash(byte[] in)
- Specified by:
hashin interfaceVAUProtocolCrypto
-
ECKA
public byte[] ECKA(java.security.PrivateKey prk, java.security.PublicKey puk) throws java.lang.Exception- Specified by:
ECKAin interfaceVAUProtocolCrypto- Throws:
java.lang.Exception
-
HKDF
public byte[] HKDF(byte[] ikm, java.lang.String info, int length) throws java.lang.IllegalArgumentException, org.bouncycastle.crypto.DataLengthException- Specified by:
HKDFin interfaceVAUProtocolCrypto- Throws:
java.lang.IllegalArgumentExceptionorg.bouncycastle.crypto.DataLengthException
-
HKDF
public byte[] HKDF(byte[] ikm, byte[] info, int length) throws java.lang.IllegalArgumentException, org.bouncycastle.crypto.DataLengthException- Specified by:
HKDFin interfaceVAUProtocolCrypto- Throws:
java.lang.IllegalArgumentExceptionorg.bouncycastle.crypto.DataLengthException
-
verify
public boolean verify(byte[] message, byte[] signatureBytes, java.security.PublicKey puk)- Specified by:
verifyin interfaceVAUProtocolCrypto
-
signRSASSA_PSS
public byte[] signRSASSA_PSS(byte[] message) throws java.lang.Exception- Specified by:
signRSASSA_PSSin interfaceVAUProtocolCrypto- Throws:
java.lang.Exception
-
signECDSA
public byte[] signECDSA(byte[] message) throws java.lang.Exception- Specified by:
signECDSAin interfaceVAUProtocolCrypto- Throws:
java.lang.Exception
-
generateECCKeyPair
public java.security.KeyPair generateECCKeyPair()
- Specified by:
generateECCKeyPairin interfaceVAUProtocolCrypto
-
eccPublicKeyFromBytes
public java.security.PublicKey eccPublicKeyFromBytes(byte[] pubKey)
- Specified by:
eccPublicKeyFromBytesin interfaceVAUProtocolCrypto
-
getOcspResponse
public org.bouncycastle.cert.ocsp.OCSPResp getOcspResponse()
- Specified by:
getOcspResponsein interfaceVAUProtocolCrypto
-
getEECertificate
public java.security.cert.X509Certificate getEECertificate()
- Specified by:
getEECertificatein interfaceVAUProtocolCrypto
-
isECCIdentity
public boolean isECCIdentity()
- Specified by:
isECCIdentityin interfaceVAUProtocolCrypto
-
canProvideOcspResponse
public boolean canProvideOcspResponse()
- Specified by:
canProvideOcspResponsein interfaceVAUProtocolCrypto
-
encrypt_AESGCM
public byte[] encrypt_AESGCM(byte[] plain, byte[] symKey, long counter) throws java.lang.Exception- Specified by:
encrypt_AESGCMin interfaceVAUProtocolCrypto- Throws:
java.lang.Exception
-
decrypt_AESGCM
public byte[] decrypt_AESGCM(byte[] encrypted, byte[] symKey, long counter) throws java.lang.Exception- Specified by:
decrypt_AESGCMin interfaceVAUProtocolCrypto- Throws:
java.lang.Exception
-
validateAuthorizationAssertion
public void validateAuthorizationAssertion(VAUProtocolSession vauProtocolSession, java.lang.String authorizationAssertionStr)
Description copied from interface:VAUProtocolCryptoPrüfungen gemäß den Vorgaben in [gemSpec_Dokumentenverwaltung]A_17387 - Komponente ePA-Dokumentenverwaltung – Authorization Assertion-Validierung Die Komponente ePA-Dokumentenverwaltung MUSS sicherstellen, dass Authorization Assertions nur akzeptiert werden, wenn das zugehörige Signaturzertifikat zeitlich gültig ist, nicht gesperrt wurde und nach dem Zertifikatsprofil C.FD.SIG auf die Identität der Komponente Autorisierung ausgestellt wurde.
A_14633 - Komponente ePA-Dokumentenverwaltung – Vermittlung der Verbindung zwischen Client und Verarbeitungskontext Das Kontextmanagement der Komponente ePA-Dokumentenverwaltung MUSS die Verbindung zwischen Client, d.h. dem ePA-Modul Frontend des Versicherten bzw. dem Fachmodul ePA oder Fachmodul ePA KTR-Consumer, und Verarbeitungskontext vermitteln und dabei • die Base64-dekodierte Authorization Assertion der VAUClientHello-Nachricht auf Gültigkeit gemäß Anforderung A_13690 sowie auf den gültigen Berechtigungstyp (AuthorizationType = "DOCUMENT_AUTHORIZATION") prüfen und bei ungültiger Authorization Assertion den Verbindungsaufbau abbrechen und mit dem HTTP-Fehler 403 antworten, • den Record Identifier des Verarbeitungskontextes über den Wert des Attributs Resource ID aus der Authorization Assertion der VAUClientHello-Nachricht ermitteln, • für Clients vom Typ ePA-Modul Frontend des Versicherten die Verbindung auf der Grundlage des vom Zugangsgateway gesetzten HTTP Header-Feldes Session registrieren, • für Clients vom Typ Fachmodul ePA die Verbindung auf Grundlage der TLS-Sitzung registrieren, • während der Dauer der Sitzung alle eingehenden Requests auf der Grundlage der registrierten Verbindung an den Zielverarbeitungskontext weiterleiten sowie • nach dem Ende der Sitzung, aufgrund eines Timeouts bzw. aufgrund einer Beendigung durch den Nutzer, die Registrierung der Verbindung löschen.
- Specified by:
validateAuthorizationAssertionin interfaceVAUProtocolCryptoauthorizationAssertionStr- base64 encoded
-
checkServerCertificate
public void checkServerCertificate(java.security.cert.X509Certificate cert)
- Specified by:
checkServerCertificatein interfaceVAUProtocolCrypto
-
performOcspCheckForCertificate
public void performOcspCheckForCertificate(java.security.cert.X509Certificate cert) throws java.lang.ExceptionDescription copied from interface:VAUProtocolCryptoFührt eine OCSP-Überprüfung für das vorliegende Zertifikat durch. Im Fehlerfall wird eine Exception geworfen.- Specified by:
performOcspCheckForCertificatein interfaceVAUProtocolCrypto- Parameters:
cert- Das zu prüfende Zertifikat- Throws:
java.lang.Exception- Im Falle einer fehlgeschlagenen oder fehlerhaften OCSP-Überprüfung
-
performTslCheckForCertificate
public void performTslCheckForCertificate(java.security.cert.X509Certificate cert) throws java.lang.ExceptionDescription copied from interface:VAUProtocolCryptoFührt eine TSL-Überprüfung für das vorliegende Zertifikat durch. Im Fehlerfall wird eine Exception geworfen. Die Prüfung erfolgt analog zu A_15873 Punkt 2- Specified by:
performTslCheckForCertificatein interfaceVAUProtocolCrypto- Parameters:
cert- Das zu prüfende Zertifikat- Throws:
java.lang.Exception- Im Falle einer fehlgeschlagenen oder fehlerhaften TSL-Überprüfung
-
-