db85090553
Co-authored-by: Sean Mullan <mullan@openjdk.org> Co-authored-by: Alan Bateman <alanb@openjdk.org> Co-authored-by: Weijun Wang <weijun@openjdk.org> Co-authored-by: Aleksei Efimov <aefimov@openjdk.org> Co-authored-by: Brian Burkhalter <bpb@openjdk.org> Co-authored-by: Daniel Fuchs <dfuchs@openjdk.org> Co-authored-by: Harshitha Onkar <honkar@openjdk.org> Co-authored-by: Joe Wang <joehw@openjdk.org> Co-authored-by: Jorn Vernee <jvernee@openjdk.org> Co-authored-by: Justin Lu <jlu@openjdk.org> Co-authored-by: Kevin Walls <kevinw@openjdk.org> Co-authored-by: Lance Andersen <lancea@openjdk.org> Co-authored-by: Naoto Sato <naoto@openjdk.org> Co-authored-by: Roger Riggs <rriggs@openjdk.org> Co-authored-by: Brent Christian <bchristi@openjdk.org> Co-authored-by: Stuart Marks <smarks@openjdk.org> Co-authored-by: Ian Graves <igraves@openjdk.org> Co-authored-by: Phil Race <prr@openjdk.org> Co-authored-by: Erik Gahlin <egahlin@openjdk.org> Co-authored-by: Jaikiran Pai <jpai@openjdk.org> Reviewed-by: kevinw, aivanov, rriggs, lancea, coffeys, dfuchs, ihse, erikj, cjplummer, coleenp, naoto, mchung, prr, weijun, joehw, azvegint, psadhukhan, bchristi, sundar, attila
340 lines
12 KiB
Java
340 lines
12 KiB
Java
/*
|
|
* Copyright (c) 2000, 2024, 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 -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());
|
|
}
|
|
|
|
// test 9 was on Subject.getSubject(null);
|
|
|
|
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");
|
|
}
|
|
}
|