Class SM9Engine


  • public class SM9Engine
    extends java.lang.Object
    The SM9 public key encryption algorithm (GM/T 0044.4-2016, clause 7). Two data-encapsulation methods are supported: a KDF-based stream cipher (SM9Engine.Mode.STREAM) and SM4 in ECB mode with PKCS#7 padding (SM9Engine.Mode.SM4). The ciphertext is C = C1 || C3 || C2, where C1 is the G1 point [r]Q_B encoded as x||y, C3 = MAC(K2, C2), and C2 is the encapsulated message.

    Usage follows the SM2Engine pattern: construct with the desired mode, init(true, new ParametersWithRandom(recipientKey, random)) to encrypt or init(false, userKey) to decrypt, then processBlock(byte[], int, int).

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  SM9Engine.Mode
      The GM/T 0044.4-2016 data-encapsulation method.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getOutputSize​(int inputLen)
      Return an upper bound for the output produced by processBlock(byte[], int, int) on inputLen input bytes (exact for encryption and stream-mode decryption, an upper bound for SM4-mode decryption, whose padding length is unknown until removed).
      void init​(boolean forEncryption, CipherParameters param)
      Initialise the engine.
      byte[] processBlock​(byte[] in, int inOff, int inLen)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait