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:
    [RFC5802] Section 7
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private @NotNull java.lang.String clientNonce  
      private int iterationCount  
      private @NotNull java.lang.String salt  
      private @NotNull java.lang.String serverNonce  
    • Constructor Summary

      Constructors 
      Constructor Description
      ServerFirstMessage​(@NotNull java.lang.String clientNonce, @NotNull java.lang.String serverNonce, @NotNull java.lang.String salt, int iterationCount)
      Constructs a server-first-message from a client-first-message and the additional required data.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      @NotNull java.lang.String getClientNonce()
      The client nonce.
      int getIterationCount()
      The number of iterations.
      @NotNull java.lang.String getNonce()
      The concatenation of the client nonce and the server nonce: c-nonce [s-nonce].
      java.lang.String getSalt()
      The salt in base64.
      @NotNull java.lang.String getServerNonce()
      The server nonce.
      static @NotNull ServerFirstMessage parseFrom​(@NotNull java.lang.String serverFirstMessage, @NotNull java.lang.String clientNonce)
      Parses a server-first-message from a String.
      (package private) java.lang.StringBuilder writeTo​(java.lang.StringBuilder sb)
      Write the class information to the given StringBuffer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • clientNonce

        @NotNull
        private final @NotNull java.lang.String clientNonce
      • serverNonce

        @NotNull
        private final @NotNull java.lang.String serverNonce
      • salt

        @NotNull
        private final @NotNull java.lang.String salt
      • iterationCount

        private final int iterationCount
    • Constructor Detail

      • ServerFirstMessage

        public ServerFirstMessage​(@NotNull
                                  @NotNull java.lang.String clientNonce,
                                  @NotNull
                                  @NotNull java.lang.String serverNonce,
                                  @NotNull
                                  @NotNull java.lang.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:
        java.lang.IllegalArgumentException - If clientFirstMessage, serverNonce or salt are null or empty, or iteration < 1
    • Method Detail

      • getClientNonce

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

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

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

        public java.lang.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 java.lang.String serverFirstMessage,
                                                            @NotNull
                                                            @NotNull java.lang.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
        java.lang.IllegalArgumentException - If either argument is empty or serverFirstMessage is not a valid message
      • writeTo

        java.lang.StringBuilder writeTo​(java.lang.StringBuilder sb)
        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.