Package org.bouncycastle.pqc.crypto.xmss

## Class XMSSUtil

- java.lang.Object
- - org.bouncycastle.pqc.crypto.xmss.XMSSUtil

-     public class XMSSUtil
      extends java.lang.Object

  Utils for XMSS implementation.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `XMSSUtil()` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static boolean` | `areEqual​(byte[][] a, byte[][] b)` | Compares two 2d-byte arrays.
    `static long` | `bytesToXBigEndian​(byte[] in, int offset, int size)` |
    `static int` | `calculateTau​(int index, int height)` |
    `static byte[]` | `cloneArray​(byte[] in)` | Clone a byte array.
    `static byte[][]` | `cloneArray​(byte[][] in)` | Clone a 2d byte array.
    `static void` | `copyBytesAtOffset​(byte[] dst, byte[] src, int offset)` | Copy src byte array to dst byte array at offset.
    `static java.lang.Object` | `deserialize​(byte[] data, java.lang.Class clazz)` |
    `static void` | `dumpByteArray​(byte[][] x)` | Dump content of 2d byte array.
    `static byte[]` | `extractBytesAtOffset​(byte[] src, int offset, int length)` | Copy length bytes at position offset from src.
    `static int` | `getDigestSize​(Digest digest)` | Determine digest size of digest.
    `static int` | `getLeafIndex​(long index, int xmssTreeHeight)` |
    `static long` | `getTreeIndex​(long index, int xmssTreeHeight)` |
    `static boolean` | `hasNullPointer​(byte[][] in)` | Checks whether 2d byte array has null pointers.
    `static boolean` | `isIndexValid​(int height, long index)` | Check whether an index is valid or not.
    `static boolean` | `isNewAuthenticationPathNeeded​(long globalIndex, int xmssHeight, int layer)` |
    `static boolean` | `isNewBDSInitNeeded​(long globalIndex, int xmssHeight, int layer)` |
    `static int` | `log2​(int n)` | Calculates the logarithm base 2 for a given Integer.
    `static void` | `longToBigEndian​(long value, byte[] in, int offset)` |
    `static byte[]` | `serialize​(java.lang.Object obj)` |
    `static byte[]` | `toBytesBigEndian​(long value, int sizeInByte)` | Convert int/long to n-byte array.

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

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

- - ### Constructor Detail

    - #### XMSSUtil

          public XMSSUtil()

  - ### Method Detail

    - #### log2

          public static int log2​(int n)

      Calculates the logarithm base 2 for a given Integer.
      Parameters:
        `n` - Number.
      Returns:
        Logarithm to base 2 of `n`.

    - #### toBytesBigEndian

          public static byte[] toBytesBigEndian​(long value,
                                                int sizeInByte)

      Convert int/long to n-byte array.
      Parameters:
        `value` - int/long value.
        `sizeInByte` - Size of byte array in byte.
      Returns:
        int/long as big-endian byte array of size `sizeInByte`.

    - #### longToBigEndian

          public static void longToBigEndian​(long value,
                                             byte[] in,
                                             int offset)

    - #### bytesToXBigEndian

          public static long bytesToXBigEndian​(byte[] in,
                                               int offset,
                                               int size)

    - #### cloneArray

          public static byte[] cloneArray​(byte[] in)

      Clone a byte array.
      Parameters:
        `in` - byte array.
      Returns:
        Copy of byte array.

    - #### cloneArray

          public static byte[][] cloneArray​(byte[][] in)

      Clone a 2d byte array.
      Parameters:
        `in` - 2d byte array.
      Returns:
        Copy of 2d byte array.

    - #### areEqual

          public static boolean areEqual​(byte[][] a,
                                         byte[][] b)

      Compares two 2d-byte arrays.
      Parameters:
        `a` - 2d-byte array 1.
        `b` - 2d-byte array 2.
      Returns:
        true if all values in 2d-byte array are equal false else.

    - #### dumpByteArray

          public static void dumpByteArray​(byte[][] x)

      Dump content of 2d byte array.
      Parameters:
        `x` - byte array.

    - #### hasNullPointer

          public static boolean hasNullPointer​(byte[][] in)

      Checks whether 2d byte array has null pointers.
      Parameters:
        `in` - 2d byte array.
      Returns:
        true if at least one null pointer is found false else.

    - #### copyBytesAtOffset

          public static void copyBytesAtOffset​(byte[] dst,
                                               byte[] src,
                                               int offset)

      Copy src byte array to dst byte array at offset.
      Parameters:
        `dst` - Destination.
        `src` - Source.
        `offset` - Destination offset.

    - #### extractBytesAtOffset

          public static byte[] extractBytesAtOffset​(byte[] src,
                                                    int offset,
                                                    int length)

      Copy length bytes at position offset from src.
      Parameters:
        `src` - Source byte array.
        `offset` - Offset in source byte array.
        `length` - Length of bytes to copy.
      Returns:
        New byte array.

    - #### isIndexValid

          public static boolean isIndexValid​(int height,
                                             long index)

      Check whether an index is valid or not.
      Parameters:
        `height` - Height of binary tree.
        `index` - Index to validate.
      Returns:
        true if index is valid false else.

    - #### getDigestSize

          public static int getDigestSize​(Digest digest)

      Determine digest size of digest.
      Parameters:
        `digest` - Digest.
      Returns:
        Digest size.

    - #### getTreeIndex

          public static long getTreeIndex​(long index,
                                          int xmssTreeHeight)

    - #### getLeafIndex

          public static int getLeafIndex​(long index,
                                         int xmssTreeHeight)

    - #### serialize

          public static byte[] serialize​(java.lang.Object obj)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### deserialize

          public static java.lang.Object deserialize​(byte[] data,
                                                     java.lang.Class clazz)
                                              throws java.io.IOException,
                                                     java.lang.ClassNotFoundException

      Throws:
        `java.io.IOException`
        `java.lang.ClassNotFoundException`

    - #### calculateTau

          public static int calculateTau​(int index,
                                         int height)

    - #### isNewBDSInitNeeded

          public static boolean isNewBDSInitNeeded​(long globalIndex,
                                                   int xmssHeight,
                                                   int layer)

    - #### isNewAuthenticationPathNeeded

          public static boolean isNewAuthenticationPathNeeded​(long globalIndex,
                                                              int xmssHeight,
                                                              int layer)