Browse Source

SEC-3002: Add JUnit Assume to GCM encryption tests

Not all JDKs have GCM installed on them.
Rob Winch 10 năm trước cách đây
mục cha
commit
3db01bd9d6

+ 18 - 0
crypto/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java

@@ -5,12 +5,19 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.security.GeneralSecurityException;
+
+import javax.crypto.Cipher;
+
+import org.junit.Assume;
 import org.junit.Test;
 
 public class EncryptorsTests {
 
 	@Test
 	public void stronger() throws Exception {
+		Assume.assumeTrue("GCM must be available for this test", isAesGcmAvailable());
+
 		BytesEncryptor encryptor = Encryptors.stronger("password", "5c0744940b5c369b");
 		byte[] result = encryptor.encrypt("text".getBytes("UTF-8"));
 		assertNotNull(result);
@@ -33,6 +40,8 @@ public class EncryptorsTests {
 
 	@Test
 	public void preferred() {
+		Assume.assumeTrue("GCM must be available for this test", isAesGcmAvailable());
+
 		TextEncryptor encryptor = Encryptors.delux("password", "5c0744940b5c369b");
 		String result = encryptor.encrypt("text");
 		assertNotNull(result);
@@ -68,4 +77,13 @@ public class EncryptorsTests {
 		assertEquals("text", encryptor.encrypt("text"));
 		assertEquals("text", encryptor.decrypt("text"));
 	}
+
+	private boolean isAesGcmAvailable() {
+		try {
+			Cipher.getInstance("AES/GCM/NoPadding");
+			return true;
+		} catch (GeneralSecurityException e) {
+			return false;
+		}
+	}
 }