Class ServerFinalMessage

  • All Implemented Interfaces:
    StringWritable

    public class ServerFinalMessage
    extends java.lang.Object
    implements StringWritable
    Constructs and parses server-final-messages. Formal syntax is: server-error = "e=" server-error-value server-error-value = "invalid-encoding" / "extensions-not-supported" / ; unrecognized 'm' value "invalid-proof" / "channel-bindings-dont-match" / "server-does-support-channel-binding" / ; server does not support channel binding "channel-binding-not-supported" / "unsupported-channel-binding-type" / "unknown-user" / "invalid-username-encoding" / ; invalid username encoding (invalid UTF-8 or ; SASLprep failed) "no-resources" / "other-error" / server-error-value-ext ; Unrecognized errors should be treated as "other-error". ; In order to prevent information disclosure, the server ; may substitute the real reason with "other-error". server-error-value-ext = value ; Additional error reasons added by extensions ; to this document. verifier = "v=" base64 ;; base-64 encoded ServerSignature. server-final-errorMessage = (server-error / verifier) ["," extensions] Note that extensions are not supported (and, consequently, error message extensions).
    See Also:
    [RFC5802] Section 7
    • Constructor Detail

      • ServerFinalMessage

        public ServerFinalMessage​(byte[] verifier)
                           throws java.lang.IllegalArgumentException
        Constructs a server-final-message with no errors, and the provided server verifier
        Parameters:
        verifier - The bytes of the computed signature
        Throws:
        java.lang.IllegalArgumentException - If the verifier is null
      • ServerFinalMessage

        public ServerFinalMessage​(ServerFinalMessage.Error error)
                           throws java.lang.IllegalArgumentException
        Constructs a server-final-message which represents a SCRAM error.
        Parameters:
        error - The error
        Throws:
        java.lang.IllegalArgumentException - If the error is null
    • Method Detail

      • isError

        public boolean isError()
        Whether this server-final-message contains an error
        Returns:
        True if it contains an error, false if it contains a verifier
      • getVerifier

        public byte[] getVerifier()
      • writeTo

        public java.lang.StringBuffer writeTo​(java.lang.StringBuffer sb)
        Description copied from interface: StringWritable
        Write the class information to the given StringBuffer.
        Specified by:
        writeTo in interface StringWritable
        Parameters:
        sb - Where to write the data.
        Returns:
        The same StringBuffer.
      • parseFrom

        public static ServerFinalMessage parseFrom​(java.lang.String serverFinalMessage)
                                            throws ScramParseException,
                                                   java.lang.IllegalArgumentException
        Parses a server-final-message from a String.
        Parameters:
        serverFinalMessage - The message
        Returns:
        A constructed server-final-message instance
        Throws:
        ScramParseException - If the argument is not a valid server-final-message
        java.lang.IllegalArgumentException - If the message is null or empty
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object