mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-18 18:12:14 +00:00
Replace BouncyCastle's deprecated AESFastEngine with the default AESEngine
- Update AESEngine to use the default AES engine, following BouncyCastle's recommendations (see release-1-56 of changelog: https://www.bouncycastle.org/download/bouncy-castle-java/?filter=java%3Drelease-1-56). - Migrate to the latest API 'newInstance()' method to allow removal of @SuppressWarnings("deprecation") - Remove @SuppressWarnings("deprecation")
This commit is contained in:
parent
5f833fa236
commit
2b22cf2877
@ -18,6 +18,7 @@ package org.springframework.security.crypto.encrypt;
|
|||||||
|
|
||||||
import org.bouncycastle.crypto.BufferedBlockCipher;
|
import org.bouncycastle.crypto.BufferedBlockCipher;
|
||||||
import org.bouncycastle.crypto.InvalidCipherTextException;
|
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||||||
|
import org.bouncycastle.crypto.engines.AESEngine;
|
||||||
import org.bouncycastle.crypto.modes.CBCBlockCipher;
|
import org.bouncycastle.crypto.modes.CBCBlockCipher;
|
||||||
import org.bouncycastle.crypto.paddings.PKCS7Padding;
|
import org.bouncycastle.crypto.paddings.PKCS7Padding;
|
||||||
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
|
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
|
||||||
@ -45,23 +46,21 @@ public class BouncyCastleAesCbcBytesEncryptor extends BouncyCastleAesBytesEncryp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public byte[] encrypt(byte[] bytes) {
|
public byte[] encrypt(byte[] bytes) {
|
||||||
byte[] iv = this.ivGenerator.generateKey();
|
byte[] iv = this.ivGenerator.generateKey();
|
||||||
PaddedBufferedBlockCipher blockCipher = new PaddedBufferedBlockCipher(
|
PaddedBufferedBlockCipher blockCipher = new PaddedBufferedBlockCipher(
|
||||||
new CBCBlockCipher(new org.bouncycastle.crypto.engines.AESFastEngine()), new PKCS7Padding());
|
CBCBlockCipher.newInstance(AESEngine.newInstance()), new PKCS7Padding());
|
||||||
blockCipher.init(true, new ParametersWithIV(this.secretKey, iv));
|
blockCipher.init(true, new ParametersWithIV(this.secretKey, iv));
|
||||||
byte[] encrypted = process(blockCipher, bytes);
|
byte[] encrypted = process(blockCipher, bytes);
|
||||||
return (iv != null) ? EncodingUtils.concatenate(iv, encrypted) : encrypted;
|
return (iv != null) ? EncodingUtils.concatenate(iv, encrypted) : encrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public byte[] decrypt(byte[] encryptedBytes) {
|
public byte[] decrypt(byte[] encryptedBytes) {
|
||||||
byte[] iv = EncodingUtils.subArray(encryptedBytes, 0, this.ivGenerator.getKeyLength());
|
byte[] iv = EncodingUtils.subArray(encryptedBytes, 0, this.ivGenerator.getKeyLength());
|
||||||
encryptedBytes = EncodingUtils.subArray(encryptedBytes, this.ivGenerator.getKeyLength(), encryptedBytes.length);
|
encryptedBytes = EncodingUtils.subArray(encryptedBytes, this.ivGenerator.getKeyLength(), encryptedBytes.length);
|
||||||
PaddedBufferedBlockCipher blockCipher = new PaddedBufferedBlockCipher(
|
PaddedBufferedBlockCipher blockCipher = new PaddedBufferedBlockCipher(
|
||||||
new CBCBlockCipher(new org.bouncycastle.crypto.engines.AESFastEngine()), new PKCS7Padding());
|
CBCBlockCipher.newInstance(AESEngine.newInstance()), new PKCS7Padding());
|
||||||
blockCipher.init(false, new ParametersWithIV(this.secretKey, iv));
|
blockCipher.init(false, new ParametersWithIV(this.secretKey, iv));
|
||||||
return process(blockCipher, encryptedBytes);
|
return process(blockCipher, encryptedBytes);
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package org.springframework.security.crypto.encrypt;
|
package org.springframework.security.crypto.encrypt;
|
||||||
|
|
||||||
import org.bouncycastle.crypto.InvalidCipherTextException;
|
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||||||
|
import org.bouncycastle.crypto.engines.AESEngine;
|
||||||
import org.bouncycastle.crypto.modes.AEADBlockCipher;
|
import org.bouncycastle.crypto.modes.AEADBlockCipher;
|
||||||
import org.bouncycastle.crypto.modes.GCMBlockCipher;
|
import org.bouncycastle.crypto.modes.GCMBlockCipher;
|
||||||
import org.bouncycastle.crypto.params.AEADParameters;
|
import org.bouncycastle.crypto.params.AEADParameters;
|
||||||
@ -44,21 +45,19 @@ public class BouncyCastleAesGcmBytesEncryptor extends BouncyCastleAesBytesEncryp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public byte[] encrypt(byte[] bytes) {
|
public byte[] encrypt(byte[] bytes) {
|
||||||
byte[] iv = this.ivGenerator.generateKey();
|
byte[] iv = this.ivGenerator.generateKey();
|
||||||
GCMBlockCipher blockCipher = new GCMBlockCipher(new org.bouncycastle.crypto.engines.AESFastEngine());
|
GCMBlockCipher blockCipher = (GCMBlockCipher) GCMBlockCipher.newInstance(AESEngine.newInstance());
|
||||||
blockCipher.init(true, new AEADParameters(this.secretKey, 128, iv, null));
|
blockCipher.init(true, new AEADParameters(this.secretKey, 128, iv, null));
|
||||||
byte[] encrypted = process(blockCipher, bytes);
|
byte[] encrypted = process(blockCipher, bytes);
|
||||||
return (iv != null) ? EncodingUtils.concatenate(iv, encrypted) : encrypted;
|
return (iv != null) ? EncodingUtils.concatenate(iv, encrypted) : encrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public byte[] decrypt(byte[] encryptedBytes) {
|
public byte[] decrypt(byte[] encryptedBytes) {
|
||||||
byte[] iv = EncodingUtils.subArray(encryptedBytes, 0, this.ivGenerator.getKeyLength());
|
byte[] iv = EncodingUtils.subArray(encryptedBytes, 0, this.ivGenerator.getKeyLength());
|
||||||
encryptedBytes = EncodingUtils.subArray(encryptedBytes, this.ivGenerator.getKeyLength(), encryptedBytes.length);
|
encryptedBytes = EncodingUtils.subArray(encryptedBytes, this.ivGenerator.getKeyLength(), encryptedBytes.length);
|
||||||
GCMBlockCipher blockCipher = new GCMBlockCipher(new org.bouncycastle.crypto.engines.AESFastEngine());
|
GCMBlockCipher blockCipher = (GCMBlockCipher) GCMBlockCipher.newInstance(AESEngine.newInstance());
|
||||||
blockCipher.init(false, new AEADParameters(this.secretKey, 128, iv, null));
|
blockCipher.init(false, new AEADParameters(this.secretKey, 128, iv, null));
|
||||||
return process(blockCipher, encryptedBytes);
|
return process(blockCipher, encryptedBytes);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user