Class SM9SigMasterPrivateKeyParameters

java.lang.Object
org.bouncycastle.crypto.params.AsymmetricKeyParameter
org.bouncycastle.crypto.params.SM9SigMasterPrivateKeyParameters
All Implemented Interfaces:
Destroyable, CipherParameters, SM9SigUserKeyParametersGenerator

public class SM9SigMasterPrivateKeyParameters extends AsymmetricKeyParameter implements 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 Details

    • 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:
  • Constructor Details

    • SM9SigMasterPrivateKeyParameters

      public SM9SigMasterPrivateKeyParameters(BigInteger ks)
  • Method Details

    • 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 identity (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 Destroyable
    • isDestroyed

      public boolean isDestroyed()
      Specified by:
      isDestroyed in interface Destroyable