Algorithms

public class Algorithms

Describe class Algorithms here. Created: Wed May 4 13:24:03 2005

Author:Artur Hefczyc

Methods

$main

public static void $main(String[] args)

Describe main method here.

Parameters:
  • args – a String[] value

bytesToHex

public static final String bytesToHex(byte[] buff)

digest

public static final byte[] digest(String id, String secret, String alg)

generateDialbackKey

public static String generateDialbackKey(String originatingServer, String receivingServer, String secret, String streamID)

Calculates dialback key as decribed in XEP-0185 version 1.0. Implemented algorithm (recomended in XEP-0185):

key = HMAC-SHA256
      (
        SHA256(Secret),
        {
          Receiving Server, ' ',
          Originating Server, ' ',
          Stream ID
        }
      )
Parameters:
  • originatingServer – the hostname of the Originating Server
  • receivingServer – the hostname of the Receiving Server
  • secret – a secret known by the Authoritative Server’s network
  • streamID – the Stream ID generated by the Receiving Server
Returns:

string contains HEX encoded dialback key.

hexDigest

public static final String hexDigest(String id, String secret, String alg)

This method encodes data using digest algorithm described in JEP-0078 documentation. As a result you have String containing digest data which can be compared with data sent by the user to authenticate him.

Parameters:
  • id – a String value of some ID value like session ID to concatenate with secret word.
  • secret – a String value of a secret word shared between entites.
  • alg – a String value of algorithm name to use for generating diffest message.
Throws:
  • NoSuchAlgorithmException – if an error occurs during encoding digest message.
Returns:

a String value digest message as defined.

sha256

public static String sha256(String data)

Calculates SHA-256 hash of given data.

Parameters:
  • data – data to hash
Returns:

string contains HEX encoded SHA-256 of data.