Class CipherSpi
- java.lang.Object
-
- javax.crypto.CipherSpi
-
- org.bouncycastle.jcajce.provider.asymmetric.sm9.CipherSpi
-
public class CipherSpi extends javax.crypto.CipherSpiJCACipherfor SM9 public-key encryption (GM/T 0044.4).Encrypt with the recipient's public key, formed from the published master public key and the recipient's identity via
SM9EncMasterPublicKey.getUserPublicKey(byte[])(the same recipient key the SM9-KEM encapsulates to); decrypt with the recipient's private key. The ciphertext is a DERSM9CipherwhoseenTyperecords the data-encapsulation mode, so decryption selects the mode automatically. The default encryption mode is SM4/ECB/PKCS#7 (enType= 1); callsetMode("XOR")for the KDF stream mode.The ciphertext is the GM/T 0080-2020 SM9Cipher structure (see
SM9Cipher).
-
-
Constructor Summary
Constructors Constructor Description CipherSpi()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected byte[]engineDoFinal(byte[] input, int inputOffset, int inputLen)protected intengineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)protected intengineGetBlockSize()protected byte[]engineGetIV()protected intengineGetOutputSize(int inputLen)protected java.security.AlgorithmParametersengineGetParameters()protected voidengineInit(int opmode, java.security.Key key, java.security.AlgorithmParameters params, java.security.SecureRandom random)protected voidengineInit(int opmode, java.security.Key key, java.security.SecureRandom random)protected voidengineInit(int opmode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params, java.security.SecureRandom random)protected voidengineSetMode(java.lang.String modeName)protected voidengineSetPadding(java.lang.String padding)protected byte[]engineUpdate(byte[] input, int inputOffset, int inputLen)protected intengineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
-
-
-
Method Detail
-
engineSetMode
protected void engineSetMode(java.lang.String modeName) throws java.security.NoSuchAlgorithmException- Specified by:
engineSetModein classjavax.crypto.CipherSpi- Throws:
java.security.NoSuchAlgorithmException
-
engineSetPadding
protected void engineSetPadding(java.lang.String padding) throws javax.crypto.NoSuchPaddingException- Specified by:
engineSetPaddingin classjavax.crypto.CipherSpi- Throws:
javax.crypto.NoSuchPaddingException
-
engineGetBlockSize
protected int engineGetBlockSize()
- Specified by:
engineGetBlockSizein classjavax.crypto.CipherSpi
-
engineGetOutputSize
protected int engineGetOutputSize(int inputLen)
- Specified by:
engineGetOutputSizein classjavax.crypto.CipherSpi
-
engineGetIV
protected byte[] engineGetIV()
- Specified by:
engineGetIVin classjavax.crypto.CipherSpi
-
engineGetParameters
protected java.security.AlgorithmParameters engineGetParameters()
- Specified by:
engineGetParametersin classjavax.crypto.CipherSpi
-
engineInit
protected void engineInit(int opmode, java.security.Key key, java.security.SecureRandom random) throws java.security.InvalidKeyException- Specified by:
engineInitin classjavax.crypto.CipherSpi- Throws:
java.security.InvalidKeyException
-
engineInit
protected void engineInit(int opmode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params, java.security.SecureRandom random) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException- Specified by:
engineInitin classjavax.crypto.CipherSpi- Throws:
java.security.InvalidKeyExceptionjava.security.InvalidAlgorithmParameterException
-
engineInit
protected void engineInit(int opmode, java.security.Key key, java.security.AlgorithmParameters params, java.security.SecureRandom random) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException- Specified by:
engineInitin classjavax.crypto.CipherSpi- Throws:
java.security.InvalidKeyExceptionjava.security.InvalidAlgorithmParameterException
-
engineUpdate
protected byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)- Specified by:
engineUpdatein classjavax.crypto.CipherSpi
-
engineUpdate
protected int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)- Specified by:
engineUpdatein classjavax.crypto.CipherSpi
-
engineDoFinal
protected byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException- Specified by:
engineDoFinalin classjavax.crypto.CipherSpi- Throws:
javax.crypto.IllegalBlockSizeExceptionjavax.crypto.BadPaddingException
-
engineDoFinal
protected int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException- Specified by:
engineDoFinalin classjavax.crypto.CipherSpi- Throws:
javax.crypto.ShortBufferExceptionjavax.crypto.IllegalBlockSizeExceptionjavax.crypto.BadPaddingException
-
-