/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4919147
* @summary Support for token-based KeyStores
*/
public class OptionTest {
private static final char[] STORE_PASS = new char[]
{ 's', 't', 'o', 'r', 'e', 'P', 'a', 's', 's' }; // sync with file
private static final char[] KEY_PASS =
{ 'k', 'e', 'y', 'P', 'a', 's', 's' }; // sync with file
init();
}
TEST +
".keystore");
TEST +
".storePass");
TEST +
".keyPass");
}
// if keyStoreType is PKCS11, keyStoreURL must be NONE
KeyStoreLoginModule m = new KeyStoreLoginModule();
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// if keyStoreType is PKCS11, keyStoreURL is NONE,
// then privateKeyPasswordURL must not be specified
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// if protected is true, keyStorePasswordURL must not be specified
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// if protected is true, privateKeyPasswordURL must not be specified
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
}
// no options (missing alias)
KeyStoreLoginModule m = new KeyStoreLoginModule();
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// missing passwords
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// no private key password
// (private key password is different from store password)
try {
m.login();
throw new SecurityException("expected exception");
} catch (LoginException le) {
// good
//le.printStackTrace();
}
// all necessary options
// (private key password is different from store password)
m.login();
}
KeyStoreLoginModule m = new KeyStoreLoginModule();
m.login();
try {
m.login();
throw new SecurityException("expected LoginException");
} catch (LoginException le) {
// good
}
}
private final boolean good;
}
throws IOException, UnsupportedCallbackException {
if (callbacks[i] instanceof NameCallback) {
if (good) {
} else {
}
} else if (callbacks[i] instanceof PasswordCallback) {
// this is dependent on KeyStoreLoginModule
}
} else if (callbacks[i] instanceof ConfirmationCallback) {
// this is dependent on KeyStoreLoginModule confirmation
}
}
}
}
}