Class HSSPrivateKeyParameters

    • Constructor Detail

      • HSSPrivateKeyParameters

        public HSSPrivateKeyParameters​(LMSPrivateKeyParameters key,
                                       long index,
                                       long indexLimit)
      • HSSPrivateKeyParameters

        public HSSPrivateKeyParameters​(int l,
                                       java.util.List<LMSPrivateKeyParameters> keys,
                                       java.util.List<LMSSignature> sig,
                                       long index,
                                       long indexLimit)
    • Method Detail

      • getInstance

        public static HSSPrivateKeyParameters getInstance​(byte[] privEnc,
                                                          byte[] pubEnc)
                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • getInstance

        public static HSSPrivateKeyParameters getInstance​(java.lang.Object src)
                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • getL

        public int getL()
      • getIndex

        public long getIndex()
      • isShard

        public boolean isShard()
        Return true if this key was split off another with extractKeyShard(int) and so covers a sub-range of that key's indexes.
      • getIndexLimit

        public long getIndexLimit()
        Return the index one past the last this key may sign with.
      • extractKeyShard

        public HSSPrivateKeyParameters extractKeyShard​(int usageCount)
        Return a key that can be used usageCount times.

        Note: this will use the range [index...index + usageCount) for the current key.

        Parameters:
        usageCount - the number of usages the key should have.
        Returns:
        a key based on the current key that can be used usageCount times.
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • getEncoded

        public byte[] getEncoded()
                          throws java.io.IOException
        Description copied from interface: Encodable
        Return a byte array representing the implementing object.
        Specified by:
        getEncoded in interface Encodable
        Specified by:
        getEncoded in class LMSKeyParameters
        Returns:
        a byte array representing the encoding.
        Throws:
        java.io.IOException - if an issue arises generation the encoding.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • clone

        protected java.lang.Object clone()
                                  throws java.lang.CloneNotSupportedException
        Overrides:
        clone in class java.lang.Object
        Throws:
        java.lang.CloneNotSupportedException
      • destroy

        public void destroy()
        Destroy this key, zeroizing the master secret of every tree in the hierarchy.

        The chaining signatures, the indexes and the component keys' identifiers and cached tree nodes are retained - none of them is secret, and the public key stays derivable where the root tree's root node is already cached. After destruction isDestroyed() returns true and getEncoded(), generateLMSContext() and extractKeyShard(int) throw IllegalStateException; a signature attempt fails before its index is claimed. Shards split off this key before it was destroyed are independent copies and are unaffected.

        Specified by:
        destroy in interface javax.security.auth.Destroyable
      • isDestroyed

        public boolean isDestroyed()
        Specified by:
        isDestroyed in interface javax.security.auth.Destroyable