From 3727e751f6d05ca2cd618ea3d35de855759ae734 Mon Sep 17 00:00:00 2001 From: Vinnie Ryan Date: Thu, 24 Jan 2013 16:44:15 +0000 Subject: [PATCH] 8006855: PKCS12 test failures due to unsupported algorithm Reviewed-by: mullan --- .../sun/security/pkcs12/PKCS12KeyStore.java | 6 +++--- jdk/test/java/security/KeyStore/PBETest.java | 3 ++- .../security/pkcs12/StoreSecretKeyTest.java | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java b/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java index 5d0c0533a1b..f84fe27f20a 100644 --- a/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java +++ b/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java @@ -887,13 +887,13 @@ public final class PKCS12KeyStore extends KeyStoreSpi { /* * Map a PBE algorithm name onto its object identifier */ - private ObjectIdentifier mapPBEAlgorithmToOID(String algorithm) { + private ObjectIdentifier mapPBEAlgorithmToOID(String algorithm) + throws NoSuchAlgorithmException { // Check for PBES2 algorithms if (algorithm.toLowerCase().startsWith("pbewithhmacsha")) { return pbes2_OID; } - - return null; + return AlgorithmId.get(algorithm).getOID(); } /** diff --git a/jdk/test/java/security/KeyStore/PBETest.java b/jdk/test/java/security/KeyStore/PBETest.java index bc12102f230..be437d03bbd 100644 --- a/jdk/test/java/security/KeyStore/PBETest.java +++ b/jdk/test/java/security/KeyStore/PBETest.java @@ -36,7 +36,8 @@ import javax.crypto.spec.*; public class PBETest { private final static String DIR = System.getProperty("test.src", "."); - private static final String PBE_ALGO = "PBEWithHmacSHA1AndAES_128"; + //private static final String PBE_ALGO = "PBEWithHmacSHA1AndAES_128"; + private static final String PBE_ALGO = "PBEWithSHA1AndDESede"; private static final char[] PASSWORD = "passphrase".toCharArray(); private static final String KEYSTORE_TYPE = "JKS"; private static final String KEYSTORE = DIR + "/keystore.jks"; diff --git a/jdk/test/sun/security/pkcs12/StoreSecretKeyTest.java b/jdk/test/sun/security/pkcs12/StoreSecretKeyTest.java index 9a91148a41b..f002ef7506a 100644 --- a/jdk/test/sun/security/pkcs12/StoreSecretKeyTest.java +++ b/jdk/test/sun/security/pkcs12/StoreSecretKeyTest.java @@ -43,6 +43,14 @@ public class StoreSecretKeyTest { public static void main(String[] args) throws Exception { + // Skip test if AES is unavailable + try { + SecretKeyFactory.getInstance("AES"); + } catch (NoSuchAlgorithmException nsae) { + System.out.println("AES is unavailable. Skipping test..."); + return; + } + new File(KEYSTORE).delete(); try { @@ -79,6 +87,17 @@ public class StoreSecretKeyTest { private static SecretKey generateSecretKey(String algorithm, int size) throws NoSuchAlgorithmException { + + // Failover to DES if the requested secret key factory is unavailable + SecretKeyFactory keyFactory; + try { + keyFactory = SecretKeyFactory.getInstance(algorithm); + } catch (NoSuchAlgorithmException nsae) { + keyFactory = SecretKeyFactory.getInstance("DES"); + algorithm = "DES"; + size = 56; + } + KeyGenerator generator = KeyGenerator.getInstance(algorithm); generator.init(size); return generator.generateKey();