Class Treehash


  • public class Treehash
    extends java.lang.Object
    This class implements a treehash instance for the Merkle tree traversal algorithm. The first node of the stack is stored in this instance itself, additional tail nodes are stored on a tailstack.
    • Constructor Summary

      Constructors 
      Constructor Description
      Treehash​(java.util.Vector tailStack, int maxHeight, Digest digest)
      Constructor
      Treehash​(Digest name, byte[][] statByte, int[] statInt)
      This constructor regenerates a prior treehash object
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()
      Destroys a treehash instance after the top node was taken for authentication path.
      byte[] getFirstNode()
      returns the first node stored in treehash instance itself
      int getFirstNodeHeight()
      Returns the top node height
      int getLowestNodeHeight()
      Returns the height of the lowest node stored either in treehash or on the stack.
      byte[] getSeedActive()
      returns the active seed
      byte[][] getStatByte()
      Returns the status byte array used by the GMSSPrivateKeyASN.1 class
      int[] getStatInt()
      Returns the status int array used by the GMSSPrivateKeyASN.1 class
      java.util.Vector getTailStack()
      Returns the tailstack
      void initialize()
      initializes the treehash instance.
      void initializeSeed​(byte[] seedIn)
      Method to initialize the seeds needed for the precomputation of right nodes.
      void setFirstNode​(byte[] hash)
      This method sets the first node stored in the treehash instance itself
      java.lang.String toString()
      returns a String representation of the treehash instance
      void update​(GMSSRandom gmssRandom, byte[] leaf)
      Calculates one update of the treehash instance, i.e. creates a new leaf and hashes if possible
      void updateNextSeed​(GMSSRandom gmssRandom)
      updates the nextSeed of this treehash instance one step needed for the schedulng of the seeds
      boolean wasFinished()
      Method to check whether the instance has been finished or not
      boolean wasInitialized()
      Method to check whether the instance has been initialized or not
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Treehash

        public Treehash​(Digest name,
                        byte[][] statByte,
                        int[] statInt)
        This constructor regenerates a prior treehash object
        Parameters:
        name - an array of strings, containing the name of the used hash function and PRNG and the name of the corresponding provider
        statByte - status bytes
        statInt - status ints
      • Treehash

        public Treehash​(java.util.Vector tailStack,
                        int maxHeight,
                        Digest digest)
        Constructor
        Parameters:
        tailStack - a vector element where the stack nodes are stored
        maxHeight - maximal height of the treehash instance
        digest - an array of strings, containing the name of the used hash function and PRNG and the name of the corresponding provider
    • Method Detail

      • initializeSeed

        public void initializeSeed​(byte[] seedIn)
        Method to initialize the seeds needed for the precomputation of right nodes. Should be initialized with index 3*2^i for treehash_i
        Parameters:
        seedIn -
      • initialize

        public void initialize()
        initializes the treehash instance. The seeds must already have been initialized to work correctly.
      • update

        public void update​(GMSSRandom gmssRandom,
                           byte[] leaf)
        Calculates one update of the treehash instance, i.e. creates a new leaf and hashes if possible
        Parameters:
        gmssRandom - an instance of the PRNG
        leaf - The byte value of the leaf needed for the update
      • destroy

        public void destroy()
        Destroys a treehash instance after the top node was taken for authentication path.
      • getLowestNodeHeight

        public int getLowestNodeHeight()
        Returns the height of the lowest node stored either in treehash or on the stack. It must not be set to infinity (as mentioned in the paper) because this cases are considered in the computeAuthPaths method of JDKGMSSPrivateKey
        Returns:
        Height of the lowest node
      • getFirstNodeHeight

        public int getFirstNodeHeight()
        Returns the top node height
        Returns:
        Height of the first node, the top node
      • wasInitialized

        public boolean wasInitialized()
        Method to check whether the instance has been initialized or not
        Returns:
        true if treehash was already initialized
      • wasFinished

        public boolean wasFinished()
        Method to check whether the instance has been finished or not
        Returns:
        true if treehash has reached its maximum height
      • getFirstNode

        public byte[] getFirstNode()
        returns the first node stored in treehash instance itself
        Returns:
        the first node stored in treehash instance itself
      • getSeedActive

        public byte[] getSeedActive()
        returns the active seed
        Returns:
        the active seed
      • setFirstNode

        public void setFirstNode​(byte[] hash)
        This method sets the first node stored in the treehash instance itself
        Parameters:
        hash -
      • updateNextSeed

        public void updateNextSeed​(GMSSRandom gmssRandom)
        updates the nextSeed of this treehash instance one step needed for the schedulng of the seeds
        Parameters:
        gmssRandom - the prng used for the seeds
      • getTailStack

        public java.util.Vector getTailStack()
        Returns the tailstack
        Returns:
        the tailstack
      • getStatByte

        public byte[][] getStatByte()
        Returns the status byte array used by the GMSSPrivateKeyASN.1 class
        Returns:
        The status bytes
      • getStatInt

        public int[] getStatInt()
        Returns the status int array used by the GMSSPrivateKeyASN.1 class
        Returns:
        The status ints
      • toString

        public java.lang.String toString()
        returns a String representation of the treehash instance
        Overrides:
        toString in class java.lang.Object