Package tigase.auth.mechanisms
Class AbstractSaslSCRAM
- java.lang.Object
-
- tigase.auth.mechanisms.AbstractSasl
-
- tigase.auth.mechanisms.AbstractSaslSCRAM
-
- All Implemented Interfaces:
SaslServer
- Direct Known Subclasses:
SaslSCRAM,SaslSCRAMPlus,SaslSCRAMSha256,SaslSCRAMSha256Plus,SaslSCRAMSha512,SaslSCRAMSha512Plus
public abstract class AbstractSaslSCRAM extends AbstractSasl
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractSaslSCRAM.BindType
-
Field Summary
Fields Modifier and Type Field Description protected static byte[]DEFAULT_CLIENT_KEYprotected static byte[]DEFAULT_SERVER_KEYstatic StringLOCAL_CERTIFICATE_KEYstatic StringTLS_UNIQUE_ID_KEY-
Fields inherited from class tigase.auth.mechanisms.AbstractSasl
authorizedId, callbackHandler, complete, log, negotiatedProperty, PASSWORD_NOT_VERIFIED_MSG, props, SASL_STRICT_MODE_KEY
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractSaslSCRAM(String mechanismName, String algorithm, byte[] clientKey, byte[] serverKey, Map<? super String,?> props, CallbackHandler callbackHandler)protectedAbstractSaslSCRAM(String mechanismName, String algorithm, byte[] clientKey, byte[] serverKey, Map<? super String,?> props, CallbackHandler callbackHandler, String serverOnce)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected byte[]calculateC()protected abstract voidcheckRequestedBindType(AbstractSaslSCRAM.BindType requestedBindType)byte[]evaluateResponse(byte[] response)StringgetAuthorizationID()StringgetMechanismName()protected byte[]h(byte[] data)static byte[]hi(String algorithm, byte[] password, byte[] salt, int iterations)protected static byte[]hmac(SecretKey key, byte[] data)protected SecretKeykey(byte[] key)static byte[]normalize(String str)protected byte[]processClientFirstMessage(byte[] data)protected byte[]processClientLastMessage(byte[] data)byte[]unwrap(byte[] incoming, int offset, int len)protected voidvalidateBindingsData(AbstractSaslSCRAM.BindType requestedBindType, byte[] bindingData)byte[]wrap(byte[] outgoing, int offset, int len)protected byte[]xor(byte[] a, byte[] b)-
Methods inherited from class tigase.auth.mechanisms.AbstractSasl
dispose, getNegotiatedProperty, handleCallbacks, isAuthzIDIgnored, isComplete, isEmpty, split
-
-
-
-
Field Detail
-
TLS_UNIQUE_ID_KEY
public static final String TLS_UNIQUE_ID_KEY
- See Also:
- Constant Field Values
-
LOCAL_CERTIFICATE_KEY
public static final String LOCAL_CERTIFICATE_KEY
- See Also:
- Constant Field Values
-
DEFAULT_CLIENT_KEY
protected static final byte[] DEFAULT_CLIENT_KEY
-
DEFAULT_SERVER_KEY
protected static final byte[] DEFAULT_SERVER_KEY
-
-
Constructor Detail
-
AbstractSaslSCRAM
protected AbstractSaslSCRAM(String mechanismName, String algorithm, byte[] clientKey, byte[] serverKey, Map<? super String,?> props, CallbackHandler callbackHandler)
-
-
Method Detail
-
hi
public static byte[] hi(String algorithm, byte[] password, byte[] salt, int iterations) throws InvalidKeyException, NoSuchAlgorithmException
-
hmac
protected static byte[] hmac(SecretKey key, byte[] data) throws NoSuchAlgorithmException, InvalidKeyException
-
normalize
public static byte[] normalize(String str)
-
calculateC
protected byte[] calculateC()
-
checkRequestedBindType
protected abstract void checkRequestedBindType(AbstractSaslSCRAM.BindType requestedBindType) throws SaslException
- Throws:
SaslException
-
evaluateResponse
public byte[] evaluateResponse(byte[] response) throws SaslException- Throws:
SaslException
-
getAuthorizationID
public String getAuthorizationID()
-
getMechanismName
public String getMechanismName()
-
h
protected byte[] h(byte[] data) throws NoSuchAlgorithmException- Throws:
NoSuchAlgorithmException
-
key
protected SecretKey key(byte[] key)
-
processClientFirstMessage
protected byte[] processClientFirstMessage(byte[] data) throws SaslException, InvalidKeyException, NoSuchAlgorithmException
-
processClientLastMessage
protected byte[] processClientLastMessage(byte[] data) throws SaslException, InvalidKeyException, NoSuchAlgorithmException
-
unwrap
public byte[] unwrap(byte[] incoming, int offset, int len)
-
validateBindingsData
protected void validateBindingsData(AbstractSaslSCRAM.BindType requestedBindType, byte[] bindingData)
-
wrap
public byte[] wrap(byte[] outgoing, int offset, int len)
-
xor
protected byte[] xor(byte[] a, byte[] b)
-
-