8006994: Cleanup PKCS12 tests to ensure streams get closed
Reviewed-by: mullan
This commit is contained in:
parent
eea117f3e5
commit
ddbfa5fe53
jdk/test
java/security/KeyStore
sun/security/pkcs12
@ -58,45 +58,46 @@ public class PBETest {
|
||||
|
||||
new File(NEW_KEYSTORE).delete();
|
||||
|
||||
try {
|
||||
KeyStore keystore = load(KEYSTORE_TYPE, KEYSTORE, PASSWORD);
|
||||
KeyStore.Entry entry =
|
||||
keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry named '" + ALIAS + "'");
|
||||
|
||||
// Set entry
|
||||
KeyStore keystore2 = load(NEW_KEYSTORE_TYPE, null, null);
|
||||
keystore2.setEntry(ALIAS, entry,
|
||||
new KeyStore.PasswordProtection(PASSWORD, PBE_ALGO,
|
||||
new PBEParameterSpec(SALT, ITERATION_COUNT,
|
||||
new IvParameterSpec(IV))));
|
||||
System.out.println("Encrypted entry using: " + PBE_ALGO);
|
||||
|
||||
System.out.println("Storing keystore to: " + NEW_KEYSTORE);
|
||||
keystore2.store(new FileOutputStream(NEW_KEYSTORE), PASSWORD);
|
||||
|
||||
keystore2 = load(NEW_KEYSTORE_TYPE, NEW_KEYSTORE, PASSWORD);
|
||||
entry = keystore2.getEntry(ALIAS,
|
||||
KeyStore keystore = load(KEYSTORE_TYPE, KEYSTORE, PASSWORD);
|
||||
KeyStore.Entry entry =
|
||||
keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry named '" + ALIAS + "'");
|
||||
System.out.println("Retrieved entry named '" + ALIAS + "'");
|
||||
|
||||
} finally {
|
||||
new File(NEW_KEYSTORE).delete();
|
||||
System.out.println("Deleted keystore: " + NEW_KEYSTORE);
|
||||
// Set entry
|
||||
KeyStore keystore2 = load(NEW_KEYSTORE_TYPE, null, null);
|
||||
keystore2.setEntry(ALIAS, entry,
|
||||
new KeyStore.PasswordProtection(PASSWORD, PBE_ALGO,
|
||||
new PBEParameterSpec(SALT, ITERATION_COUNT,
|
||||
new IvParameterSpec(IV))));
|
||||
System.out.println("Encrypted entry using: " + PBE_ALGO);
|
||||
|
||||
try (FileOutputStream outStream = new FileOutputStream(NEW_KEYSTORE)) {
|
||||
System.out.println("Storing keystore to: " + NEW_KEYSTORE);
|
||||
keystore2.store(outStream, PASSWORD);
|
||||
}
|
||||
|
||||
keystore2 = load(NEW_KEYSTORE_TYPE, NEW_KEYSTORE, PASSWORD);
|
||||
entry = keystore2.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry named '" + ALIAS + "'");
|
||||
}
|
||||
|
||||
private static KeyStore load(String type, String path, char[] password)
|
||||
throws Exception {
|
||||
|
||||
FileInputStream stream = null;
|
||||
if (path != null) {
|
||||
stream = new FileInputStream(path);
|
||||
}
|
||||
KeyStore keystore = KeyStore.getInstance(type);
|
||||
System.out.println("Loading keystore from: " + path);
|
||||
keystore.load(stream, password);
|
||||
|
||||
if (path != null) {
|
||||
|
||||
try (FileInputStream inStream = new FileInputStream(path)) {
|
||||
System.out.println("Loading keystore from: " + path);
|
||||
keystore.load(inStream, password);
|
||||
System.out.println("Loaded keystore with " + keystore.size() +
|
||||
" entries");
|
||||
}
|
||||
} else {
|
||||
keystore.load(null, null);
|
||||
}
|
||||
|
||||
return keystore;
|
||||
}
|
||||
|
@ -47,40 +47,40 @@ public class StorePasswordTest {
|
||||
|
||||
new File(KEYSTORE).delete();
|
||||
|
||||
try {
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
|
||||
// Set entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.SecretKeyEntry(convertPassword(USER_PASSWORD)),
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
// Set entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.SecretKeyEntry(convertPassword(USER_PASSWORD)),
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
|
||||
try (FileOutputStream outStream = new FileOutputStream(KEYSTORE)) {
|
||||
System.out.println("Storing keystore to: " + KEYSTORE);
|
||||
keystore.store(new FileOutputStream(KEYSTORE), PASSWORD);
|
||||
keystore.store(outStream, PASSWORD);
|
||||
}
|
||||
|
||||
try (FileInputStream inStream = new FileInputStream(KEYSTORE)) {
|
||||
System.out.println("Loading keystore from: " + KEYSTORE);
|
||||
keystore.load(new FileInputStream(KEYSTORE), PASSWORD);
|
||||
keystore.load(inStream, PASSWORD);
|
||||
System.out.println("Loaded keystore with " + keystore.size() +
|
||||
" entries");
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry: " + entry);
|
||||
}
|
||||
|
||||
SecretKey key = (SecretKey) keystore.getKey(ALIAS, PASSWORD);
|
||||
SecretKeyFactory factory =
|
||||
SecretKeyFactory.getInstance(key.getAlgorithm());
|
||||
PBEKeySpec keySpec =
|
||||
(PBEKeySpec) factory.getKeySpec(key, PBEKeySpec.class);
|
||||
char[] pwd = keySpec.getPassword();
|
||||
System.out.println("Recovered credential: " + new String(pwd));
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry: " + entry);
|
||||
|
||||
if (!Arrays.equals(USER_PASSWORD.toCharArray(), pwd)) {
|
||||
throw new Exception("Failed to recover the stored password");
|
||||
}
|
||||
} finally {
|
||||
new File(KEYSTORE).delete();
|
||||
SecretKey key = (SecretKey) keystore.getKey(ALIAS, PASSWORD);
|
||||
SecretKeyFactory factory =
|
||||
SecretKeyFactory.getInstance(key.getAlgorithm());
|
||||
PBEKeySpec keySpec =
|
||||
(PBEKeySpec) factory.getKeySpec(key, PBEKeySpec.class);
|
||||
char[] pwd = keySpec.getPassword();
|
||||
System.out.println("Recovered credential: " + new String(pwd));
|
||||
|
||||
if (!Arrays.equals(USER_PASSWORD.toCharArray(), pwd)) {
|
||||
throw new Exception("Failed to recover the stored password");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,35 +53,34 @@ public class StoreSecretKeyTest {
|
||||
|
||||
new File(KEYSTORE).delete();
|
||||
|
||||
try {
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
|
||||
// Set entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.SecretKeyEntry(generateSecretKey("AES", 128)),
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
// Set entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.SecretKeyEntry(generateSecretKey("AES", 128)),
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
|
||||
try (FileOutputStream outStream = new FileOutputStream(KEYSTORE)) {
|
||||
System.out.println("Storing keystore to: " + KEYSTORE);
|
||||
keystore.store(new FileOutputStream(KEYSTORE), PASSWORD);
|
||||
keystore.store(outStream, PASSWORD);
|
||||
}
|
||||
|
||||
try (FileInputStream inStream = new FileInputStream(KEYSTORE)) {
|
||||
System.out.println("Loading keystore from: " + KEYSTORE);
|
||||
keystore.load(new FileInputStream(KEYSTORE), PASSWORD);
|
||||
keystore.load(inStream, PASSWORD);
|
||||
System.out.println("Loaded keystore with " + keystore.size() +
|
||||
" entries");
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry: " + entry);
|
||||
}
|
||||
|
||||
if (entry instanceof KeyStore.SecretKeyEntry) {
|
||||
System.out.println("Retrieved secret key entry: " +
|
||||
entry);
|
||||
} else {
|
||||
throw new Exception("Not a secret key entry");
|
||||
}
|
||||
} finally {
|
||||
new File(KEYSTORE).delete();
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS,
|
||||
new KeyStore.PasswordProtection(PASSWORD));
|
||||
System.out.println("Retrieved entry: " + entry);
|
||||
|
||||
if (entry instanceof KeyStore.SecretKeyEntry) {
|
||||
System.out.println("Retrieved secret key entry: " + entry);
|
||||
} else {
|
||||
throw new Exception("Not a secret key entry");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,59 +49,57 @@ public class StoreTrustedCertTest {
|
||||
|
||||
new File(KEYSTORE).delete();
|
||||
|
||||
try {
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
KeyStore keystore = KeyStore.getInstance("PKCS12");
|
||||
keystore.load(null, null);
|
||||
|
||||
Certificate cert = loadCertificate(CERT);
|
||||
Set<KeyStore.Entry.Attribute> attributes = new HashSet<>();
|
||||
attributes.add(new PKCS12Attribute("1.3.5.7.9", "that's odd"));
|
||||
attributes.add(new PKCS12Attribute("2.4.6.8.10", "that's even"));
|
||||
Certificate cert = loadCertificate(CERT);
|
||||
Set<KeyStore.Entry.Attribute> attributes = new HashSet<>();
|
||||
attributes.add(new PKCS12Attribute("1.3.5.7.9", "that's odd"));
|
||||
attributes.add(new PKCS12Attribute("2.4.6.8.10", "that's even"));
|
||||
|
||||
// Set trusted certificate entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.TrustedCertificateEntry(cert), null);
|
||||
// Set trusted certificate entry
|
||||
keystore.setEntry(ALIAS,
|
||||
new KeyStore.TrustedCertificateEntry(cert), null);
|
||||
|
||||
// Set trusted certificate entry with attributes
|
||||
keystore.setEntry(ALIAS2,
|
||||
new KeyStore.TrustedCertificateEntry(cert, attributes), null);
|
||||
// Set trusted certificate entry with attributes
|
||||
keystore.setEntry(ALIAS2,
|
||||
new KeyStore.TrustedCertificateEntry(cert, attributes), null);
|
||||
|
||||
try (FileOutputStream outStream = new FileOutputStream(KEYSTORE)) {
|
||||
System.out.println("Storing keystore to: " + KEYSTORE);
|
||||
keystore.store(new FileOutputStream(KEYSTORE), PASSWORD);
|
||||
keystore.store(outStream, PASSWORD);
|
||||
}
|
||||
|
||||
try (FileInputStream inStream = new FileInputStream(KEYSTORE)) {
|
||||
System.out.println("Loading keystore from: " + KEYSTORE);
|
||||
keystore.load(new FileInputStream(KEYSTORE), PASSWORD);
|
||||
keystore.load(inStream, PASSWORD);
|
||||
System.out.println("Loaded keystore with " + keystore.size() +
|
||||
" entries");
|
||||
}
|
||||
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS, null);
|
||||
if (entry instanceof KeyStore.TrustedCertificateEntry) {
|
||||
System.out.println("Retrieved trusted certificate entry: " +
|
||||
entry);
|
||||
KeyStore.Entry entry = keystore.getEntry(ALIAS, null);
|
||||
if (entry instanceof KeyStore.TrustedCertificateEntry) {
|
||||
System.out.println("Retrieved trusted certificate entry: " + entry);
|
||||
} else {
|
||||
throw new Exception("Not a trusted certificate entry");
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
entry = keystore.getEntry(ALIAS2, null);
|
||||
if (entry instanceof KeyStore.TrustedCertificateEntry) {
|
||||
KeyStore.TrustedCertificateEntry trustedEntry =
|
||||
(KeyStore.TrustedCertificateEntry) entry;
|
||||
Set<KeyStore.Entry.Attribute> entryAttributes =
|
||||
trustedEntry.getAttributes();
|
||||
|
||||
if (entryAttributes.containsAll(attributes)) {
|
||||
System.out.println("Retrieved trusted certificate entry " +
|
||||
"with attributes: " + entry);
|
||||
} else {
|
||||
throw new Exception("Not a trusted certificate entry");
|
||||
throw new Exception("Failed to retrieve entry attributes");
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
entry = keystore.getEntry(ALIAS2, null);
|
||||
if (entry instanceof KeyStore.TrustedCertificateEntry) {
|
||||
KeyStore.TrustedCertificateEntry trustedEntry =
|
||||
(KeyStore.TrustedCertificateEntry) entry;
|
||||
Set<KeyStore.Entry.Attribute> entryAttributes =
|
||||
trustedEntry.getAttributes();
|
||||
|
||||
if (entryAttributes.containsAll(attributes)) {
|
||||
System.out.println("Retrieved trusted certificate entry " +
|
||||
"with attributes: " + entry);
|
||||
} else {
|
||||
throw new Exception("Failed to retrieve entry attributes");
|
||||
}
|
||||
} else {
|
||||
throw new Exception("Not a trusted certificate entry");
|
||||
}
|
||||
|
||||
} finally {
|
||||
new File(KEYSTORE).delete();
|
||||
} else {
|
||||
throw new Exception("Not a trusted certificate entry");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user