--- a/src/java.base/macosx/classes/apple/security/KeychainStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/java.base/macosx/classes/apple/security/KeychainStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -102,6 +102,8 @@
private static final int iterationCount = 1024;
private static final int SALT_LEN = 20;
+ private static final Debug debug = Debug.getInstance("keystore");
+
static {
AccessController.doPrivileged(
new PrivilegedAction<Void>() {
@@ -773,6 +775,10 @@
entries.clear();
_scanKeychain();
+ if (debug != null) {
+ debug.println("KeychainStore load entry count: " +
+ entries.size());
+ }
}
}
--- a/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,8 @@
package com.sun.crypto.provider;
+import sun.security.util.Debug;
+
import java.io.*;
import java.util.*;
import java.security.AccessController;
@@ -59,6 +61,7 @@
public final class JceKeyStore extends KeyStoreSpi {
+ private static final Debug debug = Debug.getInstance("keystore");
private static final int JCEKS_MAGIC = 0xcececece;
private static final int JKS_MAGIC = 0xfeedfeed;
private static final int VERSION_1 = 0x01;
@@ -680,6 +683,7 @@
Hashtable<String, CertificateFactory> cfs = null;
ByteArrayInputStream bais = null;
byte[] encoded = null;
+ int trustedKeyCount = 0, privateKeyCount = 0, secretKeyCount = 0;
if (stream == null)
return;
@@ -726,7 +730,7 @@
tag = dis.readInt();
if (tag == 1) { // private-key entry
-
+ privateKeyCount++;
PrivateKeyEntry entry = new PrivateKeyEntry();
// read the alias
@@ -786,7 +790,7 @@
entries.put(alias, entry);
} else if (tag == 2) { // trusted certificate entry
-
+ trustedKeyCount++;
TrustedCertEntry entry = new TrustedCertEntry();
// read the alias
@@ -825,7 +829,7 @@
entries.put(alias, entry);
} else if (tag == 3) { // secret-key entry
-
+ secretKeyCount++;
SecretKeyEntry entry = new SecretKeyEntry();
// read the alias
@@ -858,10 +862,18 @@
entries.put(alias, entry);
} else {
- throw new IOException("Unrecognized keystore entry");
+ throw new IOException("Unrecognized keystore entry: " +
+ tag);
}
}
+ if (debug != null) {
+ debug.println("JceKeyStore load: private key count: " +
+ privateKeyCount + ". trusted key count: " +
+ trustedKeyCount + ". secret key count: " +
+ secretKeyCount);
+ }
+
/*
* If a password has been provided, we check the keyed digest
* at the end. If this check fails, the store has been tampered
--- a/src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -2231,18 +2231,9 @@
}
if (debug != null) {
- if (privateKeyCount > 0) {
- debug.println("Loaded " + privateKeyCount +
- " protected private key(s)");
- }
- if (secretKeyCount > 0) {
- debug.println("Loaded " + secretKeyCount +
- " protected secret key(s)");
- }
- if (certificateCount > 0) {
- debug.println("Loaded " + certificateCount +
- " certificate(s)");
- }
+ debug.println("PKCS12KeyStore load: private key count: " +
+ privateKeyCount + ". secret key count: " + secretKeyCount +
+ ". certificate count: " + certificateCount);
}
certEntries.clear();
--- a/src/java.base/share/classes/sun/security/provider/JavaKeyStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/java.base/share/classes/sun/security/provider/JavaKeyStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,6 +34,7 @@
import sun.security.pkcs.EncryptedPrivateKeyInfo;
import sun.security.pkcs12.PKCS12KeyStore;
+import sun.security.util.Debug;
import sun.security.util.IOUtils;
import sun.security.util.KeyStoreDelegator;
@@ -74,6 +75,7 @@
}
}
+ private static final Debug debug = Debug.getInstance("keystore");
private static final int MAGIC = 0xfeedfeed;
private static final int VERSION_1 = 0x01;
private static final int VERSION_2 = 0x02;
@@ -643,6 +645,7 @@
Hashtable<String, CertificateFactory> cfs = null;
ByteArrayInputStream bais = null;
byte[] encoded = null;
+ int trustedKeyCount = 0, privateKeyCount = 0;
if (stream == null)
return;
@@ -681,7 +684,7 @@
tag = dis.readInt();
if (tag == 1) { // private key entry
-
+ privateKeyCount++;
KeyEntry entry = new KeyEntry();
// Read the alias
@@ -730,7 +733,7 @@
entries.put(alias, entry);
} else if (tag == 2) { // trusted certificate entry
-
+ trustedKeyCount++;
TrustedCertEntry entry = new TrustedCertEntry();
// Read the alias
@@ -765,10 +768,16 @@
entries.put(alias, entry);
} else {
- throw new IOException("Unrecognized keystore entry");
+ throw new IOException("Unrecognized keystore entry: " +
+ tag);
}
}
+ if (debug != null) {
+ debug.println("JavaKeyStore load: private key count: " +
+ privateKeyCount + ". trusted key count: " + trustedKeyCount);
+ }
+
/*
* If a password has been provided, we check the keyed digest
* at the end. If this check fails, the store has been tampered
--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11KeyStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11KeyStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -772,6 +772,8 @@
}
if (debug != null) {
dumpTokenMap();
+ debug.println("P11KeyStore load. Entry count: " +
+ aliasMap.size());
}
} catch (KeyStoreException | PKCS11Exception e) {
throw new IOException("load failed", e);
--- a/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/CKeyStore.java Thu Feb 07 12:35:45 2019 +0100
+++ b/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/CKeyStore.java Thu Feb 07 12:09:17 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,6 +45,8 @@
import java.security.interfaces.RSAPrivateCrtKey;
import java.util.*;
+import sun.security.util.Debug;
+
/**
* Implementation of key store for Windows using the Microsoft Crypto API.
*
@@ -180,6 +182,7 @@
private static final String KEYSTORE_COMPATIBILITY_MODE_PROP =
"sun.security.mscapi.keyStoreCompatibilityMode";
private final boolean keyStoreCompatibilityMode;
+ private static final Debug debug = Debug.getInstance("keystore");
/*
* The keystore entries.
@@ -710,6 +713,11 @@
} catch (KeyStoreException e) {
throw new IOException(e);
}
+
+ if (debug != null) {
+ debug.println("MSCAPI keystore load: entry count: " +
+ entries.size());
+ }
}
/**