28package com.jogamp.common.util;
30import java.security.AllPermission;
31import java.security.CodeSource;
32import java.security.Permission;
33import java.security.PrivilegedAction;
34import java.security.ProtectionDomain;
35import java.security.cert.Certificate;
37import jogamp.common.os.PlatformPropsImpl;
40 @SuppressWarnings(
"removal")
41 private static final SecurityManager securityManager;
42 private static final Permission allPermissions;
43 private static final boolean DEBUG =
false;
55 @SuppressWarnings({
"deprecation",
"removal" })
57 if( PlatformPropsImpl.JAVA_17 ) {
60 return System.getSecurityManager();
77 @SuppressWarnings({
"deprecation",
"removal" })
79 if( PlatformPropsImpl.JAVA_17 ) {
82 return java.security.AccessController.doPrivileged( o );
87 allPermissions =
new AllPermission();
93 final ProtectionDomain insecPD =
doPrivileged(
new PrivilegedAction<ProtectionDomain>() {
95 public ProtectionDomain run() {
98 boolean _hasAllPermissions;
100 insecPD.implies(allPermissions);
101 _hasAllPermissions =
true;
102 }
catch(
final SecurityException ace ) {
103 _hasAllPermissions =
false;
108 System.err.println(
"SecurityUtil: Has SecurityManager: "+ (
null != securityManager ) ) ;
110 final Certificate[] certs =
doPrivileged(
new PrivilegedAction<Certificate[]>() {
112 public Certificate[] run() {
113 return getCerts(SecurityUtil.class);
115 System.err.println(
"SecurityUtil: Cert count: "+ (
null != certs ? certs.length : 0 ));
116 if(
null != certs ) {
117 for(
int i=0; i<certs.length; i++) {
118 System.err.println(
"\t cert["+i+
"]: "+certs[i].toString());
142 }
catch(
final SecurityException ace ) {
159 public static final void checkPermission(
final Permission perm)
throws SecurityException {
160 if(
null != securityManager ) {
161 securityManager.checkPermission(perm);
174 }
catch(
final SecurityException ace ) {
184 if(
null != securityManager ) {
185 securityManager.checkLink(libName);
194 if(
null != securityManager ) {
195 securityManager.checkPermission(allLinkPermission);
198 private static final RuntimePermission allLinkPermission =
new RuntimePermission(
"loadLibrary.*");
205 public static final Certificate[]
getCerts(
final Class<?> clz)
throws SecurityException {
206 final ProtectionDomain pd = clz.getProtectionDomain();
207 final CodeSource cs = (
null != pd) ? pd.getCodeSource() :
null;
208 final Certificate[] certs = (
null != cs) ? cs.getCertificates() :
null;
209 return (
null != certs && certs.length>0) ? certs :
null;
212 public static final boolean equals(
final Certificate[] a,
final Certificate[] b) {
216 if(a==
null || b==
null) {
219 if(a.length != b.length) {
224 while( i < a.length && a[i].equals(b[i]) ) {
227 return i == a.length;
static final SecurityManager getSecurityManager()
Call wrapper for System#getSecurityManager().
static final boolean hasLinkPermission(final String libName)
Returns true if no SecurityManager has been installed or the installed SecurityManager's checkLink(li...
static< T > T doPrivileged(final PrivilegedAction< T > o)
Call wrapper for java.security.AccessController#doPrivileged(PrivilegedAction).
static final void checkPermission(final Permission perm)
Throws an SecurityException if an installed SecurityManager does not permit the requested Permission.
static final boolean hasAllPermissions()
Returns true if no SecurityManager has been installed or the installed SecurityManager's checkPermiss...
static final boolean hasPermission(final Permission perm)
Returns true if no SecurityManager has been installed or the installed SecurityManager's checkPermiss...
static final boolean equals(final Certificate[] a, final Certificate[] b)
static final Certificate[] getCerts(final Class<?> clz)
static final void checkAllPermissions()
Throws an SecurityException if an installed SecurityManager does not permit the requested AllPermissi...
static final void checkLinkPermission(final String libName)
Throws an SecurityException if an installed SecurityManager does not permit to dynamically link the g...
static final void checkAllLinkPermission()
Throws an SecurityException if an installed SecurityManager does not permit to dynamically link to al...