Пример #1
0
  /**
   * The server is challenging the SASL mechanism for the stanza he just sent. Send a response to
   * the server's challenge.
   *
   * @param challengeString a base64 encoded string representing the challenge.
   * @param finalChallenge true if this is the last challenge send by the server within the success
   *     stanza
   * @throws NotConnectedException
   * @throws SmackException
   */
  public final void challengeReceived(String challengeString, boolean finalChallenge)
      throws SmackException, NotConnectedException {
    byte[] challenge = Base64.decode(challengeString);
    byte[] response = evaluateChallenge(challenge);
    if (finalChallenge) {
      return;
    }

    Response responseStanza;
    if (response == null) {
      responseStanza = new Response();
    } else {
      responseStanza = new Response(Base64.encodeToString(response));
    }

    // Send the authentication to the server
    connection.send(responseStanza);
  }
Пример #2
0
 /**
  * @param value
  * @return hasded value using hash method.
  */
 public String getHashedValue(String value) {
   try {
     MessageDigest md = MessageDigest.getInstance(hash.toUpperCase());
     byte[] digest = md.digest(value.getBytes());
     return Base64.encodeToString(digest);
   } catch (NoSuchAlgorithmException nsae) {
     return null;
   }
 }
Пример #3
0
 private final void authenticate() throws SmackException, NotConnectedException {
   byte[] authenticationBytes = getAuthenticationText();
   String authenticationText;
   // Some SASL mechanisms do return an empty array (e.g. EXTERNAL from javax), so check that
   // the array is not-empty. Mechanisms are allowed to return either 'null' or an empty array
   // if there is no authentication text.
   if (authenticationBytes != null && authenticationBytes.length > 0) {
     authenticationText = Base64.encodeToString(authenticationBytes);
   } else {
     // RFC6120 6.4.2 "If the initiating entity needs to send a zero-length initial response,
     // it MUST transmit the response as a single equals sign character ("="), which
     // indicates that the response is present but contains no data."
     authenticationText = "=";
   }
   // Send the authentication to the server
   connection.send(new AuthMechanism(getName(), authenticationText));
 }