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

      public abstract class AbstractSaslSCRAM
      extends AbstractSasl

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AbstractSaslSCRAM.BindType`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static byte[]` | `DEFAULT_CLIENT_KEY`
    `protected static byte[]` | `DEFAULT_SERVER_KEY`
    `static String` | `LOCAL_CERTIFICATE_KEY`
    `static String` | `TLS_UNIQUE_ID_KEY`

    - ### Fields inherited from class tigase.auth.mechanisms.AbstractSasl

      `authorizedId, callbackHandler, complete, log, negotiatedProperty, props, SASL_STRICT_MODE_KEY`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractSaslSCRAM(String mechanismName, String algorithm, byte[] clientKey, byte[] serverKey, Map<? super String,?> props, CallbackHandler callbackHandler)`
    `protected` | `AbstractSaslSCRAM(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 and Description
    --- | ---
    `protected byte[]` | `calculateC()`
    `protected abstract void` | `checkRequestedBindType(AbstractSaslSCRAM.BindType requestedBindType)`
    `byte[]` | `evaluateResponse(byte[] response)`
    `String` | `getAuthorizationID()`
    `String` | `getMechanismName()`
    `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 SecretKey` | `key(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 void` | `validateBindingsData(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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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)

    - #### AbstractSaslSCRAM

          protected AbstractSaslSCRAM(String mechanismName,
                                      String algorithm,
                                      byte[] clientKey,
                                      byte[] serverKey,
                                      Map<? super String,?> props,
                                      CallbackHandler callbackHandler,
                                      String serverOnce)

  - ### Method Detail

    - #### hi

          public static byte[] hi(String algorithm,
                                  byte[] password,
                                  byte[] salt,
                                  int iterations)
                           throws InvalidKeyException,
                                  NoSuchAlgorithmException

      Throws:
        `InvalidKeyException`
        `NoSuchAlgorithmException`

    - #### hmac

          protected static byte[] hmac(SecretKey key,
                                       byte[] data)
                                throws NoSuchAlgorithmException,
                                       InvalidKeyException

      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

      Throws:
        `SaslException`
        `InvalidKeyException`
        `NoSuchAlgorithmException`

    - #### processClientLastMessage

          protected byte[] processClientLastMessage(byte[] data)
                                             throws SaslException,
                                                    InvalidKeyException,
                                                    NoSuchAlgorithmException

      Throws:
        `SaslException`
        `InvalidKeyException`
        `NoSuchAlgorithmException`

    - #### unwrap

          public byte[] unwrap(byte[] incoming,
                               int offset,
                               int len)
                        throws SaslException

      Throws:
        `SaslException`

    - #### validateBindingsData

          protected void validateBindingsData(AbstractSaslSCRAM.BindType requestedBindType,
                                              byte[] bindingData)
                                       throws SaslException

      Throws:
        `SaslException`

    - #### wrap

          public byte[] wrap(byte[] outgoing,
                             int offset,
                             int len)
                      throws SaslException

      Throws:
        `SaslException`

    - #### xor

          protected byte[] xor(byte[] a,
                               byte[] b)

Copyright © 2022 "Tigase, Inc.". All rights reserved.