Class SrpServerAuthentication
java.lang.Object
de.bsvrz.dav.daf.communication.srpAuthentication.SrpServerAuthentication
public class SrpServerAuthentication
extends java.lang.Object
Wrapper-Klasse, die die Nimbus-SRP-Implementierung serverseitig kapselt
-
Constructor Summary
Constructors Constructor Description SrpServerAuthentication(SrpCryptoParameter srpCryptoParams)
Erstellt eine neue SrpServerAuthentication-Instanz -
Method Summary
Modifier and Type Method Description java.lang.String
getAuthenticatedUser()
Gibt den Namen des authentifizierten Benutzers zurückjava.math.BigInteger
getSessionKey()
Gibt den Sitzungsschlüssel zurückSrpCryptoParameter
getSrpCryptoParams()
Gibt die kryptographischen Parameter zurückjava.math.BigInteger
step1(java.lang.String userName, java.math.BigInteger salt, java.math.BigInteger verifier, boolean mockUser)
SRP-Authentifizierung Schritt 1.java.math.BigInteger
step2(java.math.BigInteger a, java.math.BigInteger m1)
SRP-Authentifizierung Schritt 2.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
SrpServerAuthentication
Erstellt eine neue SrpServerAuthentication-Instanz- Parameters:
srpCryptoParams
- Kryptographische Parameter, die der Server zur Verifizierung verwendet und an den Client übermittelt
-
-
Method Details
-
step1
public java.math.BigInteger step1(java.lang.String userName, java.math.BigInteger salt, java.math.BigInteger verifier, boolean mockUser)SRP-Authentifizierung Schritt 1. Der Client übermittelt seinen Benutzernamen an den Server, welcher daraufhin zu diesem Benutzer das gespeicherte Salt und den Überprüfungscode aus der Konfiguration holt.- Parameters:
userName
- Benutzername (vom Client)salt
- Salt (von der Konfiguration)verifier
- Überprüfungscode (von der Konfiguration)mockUser
- Der Benutzer existiert nicht. Falls true können daher vorgetäuschte Fake-Verifier- und Salt-Werte an den Benutzer gesendet werden, damit dieser nicht unterscheiden kann, ob der Benutzer existiert oder nicht (und damit kein zusätzliches Telegramm für eine negative Quittung gebraucht wird). Das Verhalten dieser Methode ist identisch, egal wie dieser Parameter gesetzt wird, aber falls dieser Parameter true ist, wird ein Flag gesetzt, sodass in Schritt 2 die Authentifizierung auf jeden Fall abgelehnt wird, auch wenn der Client irgendwie eine gültige Antwort generieren kann (was aber praktisch ausgeschlossen ist).- Returns:
- Der öffentliche Server-Wert B
-
step2
public java.math.BigInteger step2(java.math.BigInteger a, java.math.BigInteger m1) throws InconsistentLoginExceptionSRP-Authentifizierung Schritt 2. Der Client übermittelt seinen öffentlichen Client-Wert A und den Überprüfungscode M1 an den Server, welcher mit dem Überprüfungscode M2 antwortet.- Parameters:
a
- Öffentlicher Client-Wert Am1
- Überprüfungscode M1- Returns:
- Überprüfungscode M2
- Throws:
InconsistentLoginException
- Wenn der Client falsche Login-Daten benutzt
-
getSessionKey
public java.math.BigInteger getSessionKey()Gibt den Sitzungsschlüssel zurück- Returns:
- den Sitzungsschlüssel
-
getAuthenticatedUser
public java.lang.String getAuthenticatedUser()Gibt den Namen des authentifizierten Benutzers zurück- Returns:
- Benutzername oder null
-
getSrpCryptoParams
Gibt die kryptographischen Parameter zurück- Returns:
- die kryptographischen Parameter
-