public class SM9Engine
extends java.lang.Object
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).
| Modifier and Type | Class and Description |
|---|---|
static class |
SM9Engine.Mode
The GM/T 0044.4-2016 data-encapsulation method.
|
| Constructor and Description |
|---|
SM9Engine()
Base constructor: SM4 data encapsulation (
SM9Engine.Mode.SM4). |
SM9Engine(SM9Engine.Mode mode) |
| Modifier and Type | Method and 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) |
public SM9Engine()
SM9Engine.Mode.SM4).public SM9Engine(SM9Engine.Mode mode)
public void init(boolean forEncryption,
CipherParameters param)
SM9EncPublicKeyParameters, optionally wrapped in a
ParametersWithRandom; for decryption pass the user's
SM9EncPrivateKeyParameters.public int getOutputSize(int inputLen)
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).public byte[] processBlock(byte[] in,
int inOff,
int inLen)
throws InvalidCipherTextException
InvalidCipherTextException