Class LMSPrivateKeyParameters
java.lang.Object
org.bouncycastle.crypto.params.AsymmetricKeyParameter
org.bouncycastle.crypto.params.LMSKeyParameters
org.bouncycastle.crypto.params.LMSPrivateKeyParameters
- All Implemented Interfaces:
Destroyable, CipherParameters, LMSContextBasedSigner, Encodable
public class LMSPrivateKeyParameters
extends LMSKeyParameters
implements LMSContextBasedSigner, Destroyable
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedLMSPrivateKeyParameters(LMSigParameters lmsParameter, LMOtsParameters otsParameters, int maxQ) A key with no position, identifier or seed of its own - the placeholder an HSS hierarchy is built with for the levels below the root, each of which resetKeyToIndex replaces from the level above before the key is used.LMSPrivateKeyParameters(LMSigParameters lmsParameter, LMOtsParameters otsParameters, int q, byte[] I, int maxQ, byte[] masterSecret) -
Method Summary
Modifier and TypeMethodDescriptionvoiddestroy()Destroy this key, zeroizing the master secret it holds.booleanextractKeyShard(int usageCount) Return a key that can be used usageCount times.byte[]generateSignature(LMSContext context) byte[]Return a byte array representing the implementing object.byte[]getI()intgetIndex()Return the key index (the q value).intstatic LMSPrivateKeyParametersgetInstance(byte[] privEnc, byte[] pubEnc) static LMSPrivateKeyParametersgetInstance(Object src) byte[]longinthashCode()booleanMethods inherited from class AsymmetricKeyParameter
isPrivate
-
Constructor Details
-
LMSPrivateKeyParameters
public LMSPrivateKeyParameters(LMSigParameters lmsParameter, LMOtsParameters otsParameters, int q, byte[] I, int maxQ, byte[] masterSecret) -
LMSPrivateKeyParameters
protected LMSPrivateKeyParameters(LMSigParameters lmsParameter, LMOtsParameters otsParameters, int maxQ) A key with no position, identifier or seed of its own - the placeholder an HSS hierarchy is built with for the levels below the root, each of which resetKeyToIndex replaces from the level above before the key is used. The sentinel values are deliberately ones the public constructor refuses, so a placeholder can never be mistaken for a key that was merely built carelessly; a subclass using this must not present the result as a usable key.
-
-
Method Details
-
getInstance
- Throws:
IOException
-
getInstance
- Throws:
IOException
-
getIndex
public int getIndex()Return the key index (the q value).- Returns:
- private key index number.
-
generateLMSContext
- Specified by:
generateLMSContextin interfaceLMSContextBasedSigner
-
generateSignature
- Specified by:
generateSignaturein interfaceLMSContextBasedSigner
-
extractKeyShard
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.
-
getSigParameters
-
getOtsParameters
-
getI
public byte[] getI() -
getMasterSecret
public byte[] getMasterSecret() -
destroy
public void destroy()Destroy this key, zeroizing the master secret it holds.The key identifier I, the parameter sets, the index and the cached Merkle tree nodes are retained - none of them is secret, and the public key stays derivable where the tree's root is already cached. After destruction
isDestroyed()returns true andgetMasterSecret(),getEncoded(),generateLMSContext()and the derivation of child trees throwIllegalStateException; a signature attempt fails before its one-time index is claimed. Note: keys repositioned within this tree or split off it withextractKeyShard(int)share its master secret array, so destroying this key invalidates them too.- Specified by:
destroyin interfaceDestroyable
-
isDestroyed
public boolean isDestroyed()- Specified by:
isDestroyedin interfaceDestroyable
-
getIndexLimit
public int getIndexLimit() -
getUsagesRemaining
public long getUsagesRemaining()- Specified by:
getUsagesRemainingin interfaceLMSContextBasedSigner
-
getPublicKey
-
equals
-
hashCode
-
getEncoded
Description copied from interface:EncodableReturn a byte array representing the implementing object.- Specified by:
getEncodedin interfaceEncodable- Specified by:
getEncodedin classLMSKeyParameters- Returns:
- a byte array representing the encoding.
- Throws:
IOException- if an issue arises generation the encoding.
-