Package org.bouncycastle.crypto.engines
Class SM9Engine
- java.lang.Object
-
- org.bouncycastle.crypto.engines.SM9Engine
-
public class SM9Engine extends java.lang.ObjectThe 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
SM2Enginepattern: construct with the desired mode,init(true, new ParametersWithRandom(recipientKey, random))to encrypt orinit(false, userKey)to decrypt, thenprocessBlock(byte[], int, int).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSM9Engine.ModeThe GM/T 0044.4-2016 data-encapsulation method.
-
Constructor Summary
Constructors Constructor Description SM9Engine()Base constructor: SM4 data encapsulation (SM9Engine.Mode.SM4).SM9Engine(SM9Engine.Mode mode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetOutputSize(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 Detail
-
SM9Engine
public SM9Engine()
Base constructor: SM4 data encapsulation (SM9Engine.Mode.SM4).
-
SM9Engine
public SM9Engine(SM9Engine.Mode mode)
-
-
Method Detail
-
init
public void init(boolean forEncryption, CipherParameters param)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
public byte[] processBlock(byte[] in, int inOff, int inLen) throws InvalidCipherTextException- Throws:
InvalidCipherTextException
-
-