Bouncy Castle Cryptography Library 1.86

org.bouncycastle.crypto.params
Class SM9SigMasterPrivateKeyParameters

java.lang.Object
  extended byorg.bouncycastle.crypto.params.AsymmetricKeyParameter
      extended byorg.bouncycastle.crypto.params.SM9SigMasterPrivateKeyParameters
All Implemented Interfaces:
CipherParameters, javax.security.auth.Destroyable, SM9SigUserKeyParametersGenerator

public class SM9SigMasterPrivateKeyParameters
extends AsymmetricKeyParameter
implements javax.security.auth.Destroyable, SM9SigUserKeyParametersGenerator

SM9 signature master private key ks (GM/T 0044.2-2016). Held by the Key Generation Center (KGC); derives the master public key P_pub-s = [ks]P2 and users' signature private keys from their identities.


Field Summary
static byte HID
          The signature private-key generation function identifier hid, fixed to 0x01 for the SM9 signature algorithm (GM/T 0044.2-2016, Annex A).
 
Constructor Summary
SM9SigMasterPrivateKeyParameters(java.math.BigInteger ks)
           
 
Method Summary
 void destroy()
          Destroy this object, dropping its reference to the master secret ks.
static SM9SigMasterPrivateKeyParameters fromEncoded(byte[] enc)
           
 SM9SigPrivateKeyParameters generateUserKey(byte[] identity)
          Derive the signature private key for the user identified by (GM/T 0044.2-2016, 5.3): t1 = H1(identity||hid, N) + ks; if t1 = 0 the master key must be regenerated; otherwise t2 = ks*t1^-1 and ds = [t2]P1.
 byte[] getEncoded()
          The master private key ks as a 32-byte big-endian scalar.
 SM9SigMasterPublicKeyParameters getPublicKeyParameters()
           
 boolean isDestroyed()
           
 
Methods inherited from class org.bouncycastle.crypto.params.AsymmetricKeyParameter
isPrivate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HID

public static final byte HID
The signature private-key generation function identifier hid, fixed to 0x01 for the SM9 signature algorithm (GM/T 0044.2-2016, Annex A).

See Also:
Constant Field Values
Constructor Detail

SM9SigMasterPrivateKeyParameters

public SM9SigMasterPrivateKeyParameters(java.math.BigInteger ks)
Method Detail

getPublicKeyParameters

public SM9SigMasterPublicKeyParameters getPublicKeyParameters()

getEncoded

public byte[] getEncoded()
The master private key ks as a 32-byte big-endian scalar.


fromEncoded

public static SM9SigMasterPrivateKeyParameters fromEncoded(byte[] enc)

generateUserKey

public SM9SigPrivateKeyParameters generateUserKey(byte[] identity)
Derive the signature private key for the user identified by (GM/T 0044.2-2016, 5.3): t1 = H1(identity||hid, N) + ks; if t1 = 0 the master key must be regenerated; otherwise t2 = ks*t1^-1 and ds = [t2]P1.

Specified by:
generateUserKey in interface SM9SigUserKeyParametersGenerator
Parameters:
identity - the user's identity.
Returns:
the user's signature private key.

destroy

public void destroy()
Destroy this object, dropping its reference to the master secret ks.

As BigInteger is immutable the secret value cannot be zeroized in place; destruction drops the reference and marks the key destroyed, after which getEncoded() and generateUserKey(byte[]) throw IllegalStateException. The public key parameters remain available.

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

isDestroyed

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

Bouncy Castle Cryptography Library 1.86