/* * Copyright (c) 2000, 2012, 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 * 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 * @author Charlie Lai * @bug 4394746 * @summary Resources should not be loaded until necessar * @run main/othervm/policy=Format.policy -Djava.security.auth.login.config=file:${test.src}/Format.config Format * */ import javax.security.auth.*; import javax.security.auth.login.*; import javax.security.auth.callback.*; import java.io.*; import java.util.*; import com.sun.security.auth.*; public class Format implements java.io.Serializable, java.security.Principal { public String getName() { return null; } public static void main(String[] args) { try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("test", "write"); throw new SecurityException("test 1 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 1: " + iae.getMessage()); } try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("Format", "read"); throw new SecurityException("test 2 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 2: " + iae.getMessage()); } try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("Format Format", "read"); throw new SecurityException("test 3 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 3: " + iae.getMessage()); } try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("Format Format Format", "read"); throw new SecurityException("test 4 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 4: " + iae.getMessage()); } try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("Format Format \"Format", "read"); throw new SecurityException("test 5 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 5: " + iae.getMessage()); } try { PrivateCredentialPermission pcp = new PrivateCredentialPermission ("Format * \"Format\"", "read"); throw new SecurityException("test 6 failed"); } catch (IllegalArgumentException iae) { // good System.out.println("Test 6: " + iae.getMessage()); } try { javax.security.auth.x500.X500Principal p = new javax.security.auth.x500.X500Principal((String)null); throw new SecurityException("test 7 failed"); } catch (NullPointerException npe) { // good System.out.println("Test 7: " + npe.getMessage()); } try { Subject s = new Subject(false, null, null, null); throw new SecurityException("test 8 failed"); } catch (NullPointerException npe) { // good System.out.println("Test 8: " + npe.getMessage()); } try { Subject.getSubject(null); throw new SecurityException("test 9 failed"); } catch (NullPointerException npe) { // good System.out.println("Test 9: " + npe.getMessage()); } try { Subject.doAs(null, (java.security.PrivilegedAction)null); throw new SecurityException("test 10 failed"); } catch (NullPointerException npe) { // good System.out.println("Test 10: " + npe.getMessage()); } try { Subject s = new Subject(); s.getPrincipals(null); throw new SecurityException("test 11 failed"); } catch (NullPointerException npe) { // good System.out.println("Test 11: " + npe.getMessage()); } try { Subject s = new Subject(); s.getPrincipals().add(new javax.security.auth.x500.X500Principal ("cn=test1")); s.getPublicCredentials().add(new Format()); s.getPrivateCredentials().add(new Format()); System.out.println("Test 12, s.toString() = " + s.toString()); } catch (Exception e) { throw new SecurityException("test 12 failed: e.toString()", e); } try { Subject s = new Subject(); s.getPrincipals().add(new javax.security.auth.x500.X500Principal ("cn=test1")); s.setReadOnly(); java.util.Iterator i = s.getPrincipals().iterator(); i.next(); i.remove(); throw new SecurityException("test 13 failed"); } catch (IllegalStateException ise) { // good System.out.println("Test 13: " + ise.getMessage()); } try { Subject s = new Subject(); s.getPrincipals().add(new Format()); throw new SecurityException("test 14 failed"); } catch (SecurityException se) { // good System.out.println("Test 14: " + se.getMessage()); } try { Subject s = new Subject(); s.getPrincipals((Class)Format.class).add(new Subject()); throw new SecurityException("test 15 failed"); } catch (SecurityException se) { // good System.out.println("Test 15: " + se.getMessage()); } try { LoginContext lc = new LoginContext(null); throw new SecurityException("test 16 failed"); } catch (LoginException le) { // good System.out.println("Test 16: " + le.getMessage()); } try { LoginContext lc = new LoginContext("nothing"); throw new SecurityException("test 17 failed"); } catch (LoginException le) { // good System.out.println("Test 17: " + le.getMessage()); } try { LoginContext lc = new LoginContext("test", (Subject)null); throw new SecurityException("test 18 failed"); } catch (LoginException le) { // good System.out.println("Test 18: " + le.getMessage()); } try { LoginContext lc = new LoginContext("test", (CallbackHandler)null); throw new SecurityException("test 19 failed"); } catch (LoginException le) { // good System.out.println("Test 19: " + le.getMessage()); } try { LoginContext lc = new LoginContext("test"); lc.logout(); throw new SecurityException("test 20 failed"); } catch (LoginException le) { // good System.out.println("Test 20: " + le.getMessage()); } try { LoginContext lc = new LoginContext("test2"); lc.login(); throw new SecurityException("test 21 failed"); } catch (LoginException le) { // good System.out.println("Test 21: " + le.getMessage()); } /*** TESTS FOR THE COM PACKAGE RESOURCES ***/ try { NTDomainPrincipal p = new NTDomainPrincipal(null); throw new SecurityException("test 22 failed"); } catch (NullPointerException e) { // good System.out.println("Test 22: " + e.getMessage()); } try { NTDomainPrincipal p = new NTDomainPrincipal("test"); System.out.println("NTDomainPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 23 failed"); } try { NTNumericCredential p = new NTNumericCredential(1L); System.out.println("NTNumericCredential = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 24 failed"); } try { NTSid p = new NTSid(""); throw new SecurityException("test 25 failed"); } catch (IllegalArgumentException e) { // good System.out.println("Test 25: " + e.getMessage()); } try { NTSid p = new NTSid("test"); System.out.println("NTSid = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 26 failed"); } try { NTSidDomainPrincipal p = new NTSidDomainPrincipal("test"); System.out.println("NTSidDomainPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 27 failed"); } try { NTSidGroupPrincipal p = new NTSidGroupPrincipal("test"); System.out.println("NTSidGroupPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 28 failed"); } try { NTSidPrimaryGroupPrincipal p = new NTSidPrimaryGroupPrincipal("test"); System.out.println("NTSidPrimaryGroupPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 29 failed"); } try { NTSidUserPrincipal p = new NTSidUserPrincipal("test"); System.out.println("NTSidUserPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 30 failed"); } try { NTUserPrincipal p = new NTUserPrincipal("test"); System.out.println("NTUserPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 31 failed"); } try { UnixNumericGroupPrincipal p = new UnixNumericGroupPrincipal("0", true); System.out.println("NTPrimaryGroupPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 32 failed"); } try { UnixNumericGroupPrincipal p = new UnixNumericGroupPrincipal("1", false); System.out.println("UnixNumericGroupPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 33 failed"); } try { UnixNumericUserPrincipal p = new UnixNumericUserPrincipal("2"); System.out.println("UnixNumericUserPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 34 failed"); } try { UnixPrincipal p = new UnixPrincipal("test"); System.out.println("UnixPrincipal = " + p.toString()); } catch (Exception e) { throw new SecurityException("test 35 failed"); } System.out.println("Format test succeeded"); } }