Class SM9Engine
java.lang.Object
org.bouncycastle.crypto.engines.SM9Engine
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 ClassesModifier and TypeClassDescriptionstatic final classThe GM/T 0044.4-2016 data-encapsulation method. -
Constructor Summary
ConstructorsConstructorDescriptionBase constructor: SM4 data encapsulation (SM9Engine.Mode.SM4).SM9Engine(SM9Engine.Mode mode) -
Method Summary
Modifier and TypeMethodDescriptionintgetOutputSize(int inputLen) Return an upper bound for the output produced byprocessBlock(byte[], int, int)oninputLeninput bytes (exact for encryption and stream-mode decryption, an upper bound for SM4-mode decryption, whose padding length is unknown until removed).voidinit(boolean forEncryption, CipherParameters param) Initialise the engine.byte[]processBlock(byte[] in, int inOff, int inLen)
-
Constructor Details
-
SM9Engine
public SM9Engine()Base constructor: SM4 data encapsulation (SM9Engine.Mode.SM4). -
SM9Engine
-
-
Method Details
-
init
Initialise the engine. For encryption pass the recipient'sSM9EncPublicKeyParameters, optionally wrapped in aParametersWithRandom; for decryption pass the user'sSM9EncPrivateKeyParameters. -
getOutputSize
public int getOutputSize(int inputLen) Return an upper bound for the output produced byprocessBlock(byte[], int, int)oninputLeninput bytes (exact for encryption and stream-mode decryption, an upper bound for SM4-mode decryption, whose padding length is unknown until removed). -
processBlock
- Throws:
InvalidCipherTextException
-