diff options
-rw-r--r-- | luni/src/test/java/libcore/javax/crypto/CipherTest.java | 27 | ||||
-rw-r--r-- | luni/src/test/java/libcore/javax/crypto/MockCipherSpi.java | 21 |
2 files changed, 48 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/javax/crypto/CipherTest.java b/luni/src/test/java/libcore/javax/crypto/CipherTest.java index 3e81926..73c5f7d 100644 --- a/luni/src/test/java/libcore/javax/crypto/CipherTest.java +++ b/luni/src/test/java/libcore/javax/crypto/CipherTest.java @@ -1050,6 +1050,33 @@ public final class CipherTest extends TestCase { } } + public void testCipher_init_CallsInitIgnoresRuntimeException() throws Exception { + Provider mockProviderRejects = new MockProvider("MockProviderRejects") { + public void setup() { + put("Cipher.FOO", + MockCipherSpi.MustInitWithAlgorithmParameters_ThrowsNull.class.getName()); + put("Cipher.FOO SupportedKeyClasses", MockKey.class.getName()); + } + }; + Provider mockProviderAccepts = new MockProvider("MockProviderAccepts") { + public void setup() { + put("Cipher.FOO", MockCipherSpi.AllKeyTypes.class.getName()); + put("Cipher.FOO SupportedKeyClasses", MockKey.class.getName()); + } + }; + + Security.addProvider(mockProviderRejects); + Security.addProvider(mockProviderAccepts); + try { + Cipher c = Cipher.getInstance("FOO"); + c.init(Cipher.ENCRYPT_MODE, new MockKey(), AlgorithmParameters.getInstance("AES")); + assertEquals(mockProviderAccepts, c.getProvider()); + } finally { + Security.removeProvider(mockProviderRejects.getName()); + Security.removeProvider(mockProviderAccepts.getName()); + } + } + public void testCipher_init_CallsInitWithMode() throws Exception { Provider mockProviderOnlyEncrypt = new MockProvider("MockProviderOnlyEncrypt") { public void setup() { diff --git a/luni/src/test/java/libcore/javax/crypto/MockCipherSpi.java b/luni/src/test/java/libcore/javax/crypto/MockCipherSpi.java index e398b33..c1b1bd2 100644 --- a/luni/src/test/java/libcore/javax/crypto/MockCipherSpi.java +++ b/luni/src/test/java/libcore/javax/crypto/MockCipherSpi.java @@ -81,6 +81,7 @@ public class MockCipherSpi extends CipherSpi { @Override protected void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException { + throw new AssertionError("Must have AlgorithmParameterSpec"); } @Override @@ -96,6 +97,26 @@ public class MockCipherSpi extends CipherSpi { } } + public static class MustInitWithAlgorithmParameters_ThrowsNull extends MockCipherSpi { + @Override + protected void engineInit(int opmode, Key key, SecureRandom random) + throws InvalidKeyException { + throw new NullPointerException("expected rejection"); + } + + @Override + protected void engineInit(int opmode, Key key, AlgorithmParameterSpec params, + SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException { + throw new NullPointerException("expected rejection"); + } + + @Override + protected void engineInit(int opmode, Key key, AlgorithmParameters params, + SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException { + throw new NullPointerException("expected rejection"); + } + } + public static class MustInitForEncryptModeOrRejects extends MockCipherSpi { @Override protected void engineInit(int opmode, Key key, SecureRandom random) |