Class ServerFirstMessage


public final class ServerFirstMessage extends AbstractScramMessage
Constructs and parses server-first-messages.
Formal Syntax:
nonce "r=" c-nonce [s-nonce]
;; Second part provided by server.
salt "s=" base64
server-first-message [reserved-mext ","] nonce "," salt ",
"iteration-count ["," extensions]
See Also:
  • Field Details

    • clientNonce

      @NotNull private final @NotNull String clientNonce
    • serverNonce

      @NotNull private final @NotNull String serverNonce
    • salt

      @NotNull private final @NotNull String salt
    • iterationCount

      private final int iterationCount
  • Constructor Details

    • ServerFirstMessage

      public ServerFirstMessage(@NotNull @NotNull String clientNonce, @NotNull @NotNull String serverNonce, @NotNull @NotNull String salt, int iterationCount)
      Constructs a server-first-message from a client-first-message and the additional required data.
      Formal Syntax:
      server-error "e=" server-error-value
      verifier "v=" base64
      ;; base-64 encoded ServerSignature.
      server-final-message (server-error / verifier)
      ["," extensions]
      Parameters:
      clientNonce - The c-nonce used in client-first-message
      serverNonce - The s-nonce returned by the server
      salt - The salt
      iterationCount - The iteration count (must be positive)
      Throws:
      IllegalArgumentException - If clientFirstMessage, serverNonce or salt are null or empty, or iteration < 1
  • Method Details

    • getClientNonce

      @NotNull public @NotNull String getClientNonce()
      The client nonce.
      Returns:
      The client nonce
    • getServerNonce

      @NotNull public @NotNull String getServerNonce()
      The server nonce.
      Returns:
      The server nonce
    • getNonce

      @NotNull public @NotNull String getNonce()
      The concatenation of the client nonce and the server nonce: c-nonce [s-nonce].
      Returns:
      The nonce
    • getSalt

      public String getSalt()
      The salt in base64.
      Returns:
      The salt in base64.
    • getIterationCount

      public int getIterationCount()
      The number of iterations.
      Returns:
      The number of iterations.
    • parseFrom

      @NotNull public static @NotNull ServerFirstMessage parseFrom(@NotNull @NotNull String serverFirstMessage, @NotNull @NotNull String clientNonce) throws ScramParseException
      Parses a server-first-message from a String.
      Parameters:
      serverFirstMessage - The string representing the server-first-message
      clientNonce - The clientNonce that is present in the client-first-message
      Returns:
      The parsed instance
      Throws:
      ScramParseException - If the argument is not a valid server-first-message
      IllegalArgumentException - If either argument is empty or serverFirstMessage is not a valid message
    • writeTo

      Description copied from class: StringWritable
      Write the class information to the given StringBuffer.
      Specified by:
      writeTo in class StringWritable
      Parameters:
      sb - Where to write the data.
      Returns:
      The same StringBuffer.