tigase.util

## Class Algorithms

- java.lang.Object
- - tigase.util.Algorithms

-     public class Algorithms
      extends Object

  Describe class Algorithms here. Created: Wed May 4 13:24:03 2005
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `$main(String[] args)` Describe `main` method here.
    `static String` | `bytesToHex(byte[] buff)`
    `static byte[]` | `digest(String id, String secret, String alg)`
    `static String` | `generateDialbackKey(String originatingServer, String receivingServer, String secret, String streamID)` Calculates dialback key as decribed in XEP-0185 version 1.0.
    `static String` | `hexDigest(String id, String secret, String alg)` This method encodes data using digest algorithm described in JEP-0078 documentation.
    `static String` | `sha256(String data)` Calculates SHA-256 hash of given data.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### hexDigest

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

      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.
      Returns:
        a `String` value digest message as defined.
      Throws:
        `NoSuchAlgorithmException` - if an error occurs during encoding digest message.

    - #### digest

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

      Throws:
        `NoSuchAlgorithmException`

    - #### bytesToHex

          public static final String bytesToHex(byte[] buff)

    - #### $main

          public static void $main(String[] args)
                            throws Exception

      Describe `main` method here.
      Parameters:
        `args` - a `String[]` value
      Throws:
        `Exception`

    - #### 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.

    - #### 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.

Copyright © 2022 "Tigase, Inc.". All rights reserved.