diff --git a/src/share/classes/sun/security/pkcs11/SunPKCS11.java b/src/share/classes/sun/security/pkcs11/SunPKCS11.java index 88d8d4b73939b6e2fb76887e49e16d08d74f495e..b6eb1c258f457342f8a8dc3819f1d6ca79d03172 100644 --- a/src/share/classes/sun/security/pkcs11/SunPKCS11.java +++ b/src/share/classes/sun/security/pkcs11/SunPKCS11.java @@ -720,9 +720,13 @@ public final class SunPKCS11 extends AuthProvider { } private boolean hasValidToken() { + /* Commented out to work with Solaris softtoken impl which + returns 0-value flags, e.g. both REMOVABLE_DEVICE and + TOKEN_PRESENT are false, when it can't access the token. if (removable == false) { return true; } + */ Token token = this.token; return (token != null) && token.isValid(); } @@ -752,7 +756,7 @@ public final class SunPKCS11 extends AuthProvider { if (slotInfo == null) { slotInfo = p11.C_GetSlotInfo(slotID); } - if ((slotInfo.flags & CKF_TOKEN_PRESENT) == 0) { + if (removable && (slotInfo.flags & CKF_TOKEN_PRESENT) == 0) { createPoller(); return; }