diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java index 670820c4ba4c0294fda0a8a8e06c970e4f6ecc47..90e7f08a2064fa3ef349b742f50dcd161238cc7a 100644 --- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java +++ b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java @@ -15,6 +15,7 @@ import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; +import java.security.Provider; import java.security.PublicKey; import java.security.SecureRandom; import java.security.Security; @@ -136,13 +137,15 @@ class CryptoComponentImpl implements CryptoComponent { private static final ECParameterSpec P_384_PARAMS = new ECParameterSpec(P_384_CURVE, P_384_G, P_384_N, P_384_H); + private final Provider provider; private final KeyParser agreementKeyParser, signatureKeyParser; private final KeyPairGenerator agreementKeyPairGenerator; private final KeyPairGenerator signatureKeyPairGenerator; private final SecureRandom secureRandom; CryptoComponentImpl() { - Security.addProvider(new BouncyCastleProvider()); + provider = new BouncyCastleProvider(); + Security.addProvider(provider); try { KeyFactory agreementKeyFactory = KeyFactory.getInstance( AGREEMENT_KEY_PAIR_ALGO, PROVIDER); @@ -356,7 +359,7 @@ class CryptoComponentImpl implements CryptoComponent { } public Cipher getTagCipher() { - return new CipherFromSpi(new AES.ECB(), TAG_CIPHER_ALGO); + return new CipherFromSpi(new AES.ECB(), provider, TAG_CIPHER_ALGO); } public AuthenticatedCipher getFrameCipher() { @@ -511,7 +514,8 @@ class CryptoComponentImpl implements CryptoComponent { ErasableKey key = new ErasableKeyImpl(secret, SECRET_KEY_ALGO); try { CipherSpi spi = new AES.ECB(); - Cipher cipher = new CipherFromSpi(spi, KEY_DERIVATION_ALGO); + Cipher cipher = new CipherFromSpi(spi, provider, + KEY_DERIVATION_ALGO); cipher.init(Cipher.ENCRYPT_MODE, key, iv); byte[] output = cipher.doFinal(KEY_DERIVATION_BLANK_PLAINTEXT); assert output.length == SECRET_KEY_BYTES; @@ -550,8 +554,9 @@ class CryptoComponentImpl implements CryptoComponent { private static class CipherFromSpi extends Cipher { - private CipherFromSpi(CipherSpi spi, String transformation) { - super(spi, null, transformation); + private CipherFromSpi(CipherSpi spi, Provider provider, + String transformation) { + super(spi, provider, transformation); } } }