151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/* 22c87ad3a45cecf9e344487cad1abfdebe79f2c7cNarayan Kamath * Copyright (C) 2014 The Android Open Source Project 351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it 751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as 851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * published by the Free Software Foundation. Oracle designates this 951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided 1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code. 1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT 1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that 1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accompanied this code). 1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * You should have received a copy of the GNU General Public License version 1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation, 2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any 2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * questions. 2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage java.security; 2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/** 3118c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Legacy security code; do not use. 3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic final class AccessController { 3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski private AccessController() { } 3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 3818c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 40a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak public static <T> T doPrivileged(PrivilegedAction<T> action) { 41f2a67f871e9b6d33420eddb088d10c269c8d6aabPrzemyslaw Szczepaniak return action.run(); 42a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } 4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 4518c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public static <T> T doPrivilegedWithCombiner(PrivilegedAction<T> action) { 48a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return action.run(); 4951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 5051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 5151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 5251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 5318c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 5451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 55a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak public static <T> T doPrivileged(PrivilegedAction<T> action, 56a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak AccessControlContext context) { 57a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return action.run(); 58a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } 5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 6118c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 63a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak public static <T> T 6451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski doPrivileged(PrivilegedExceptionAction<T> action) 65a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak throws PrivilegedActionException { 66a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak try { 67a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return action.run(); 68a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } catch (RuntimeException e) { 69a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak throw e; 70a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } catch (Exception e) { 71a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak throw new PrivilegedActionException(e); 72a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } 73a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } 7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 7718c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public static <T> T doPrivilegedWithCombiner 8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski (PrivilegedExceptionAction<T> action) throws PrivilegedActionException { 81a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return doPrivileged(action); 8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 8618c0914b6e4c3af44504193dbfb142ab94c03b19Przemyslaw Szczepaniak * Calls {@code action.run()}. 8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 88a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak public static <T> T 8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski doPrivileged(PrivilegedExceptionAction<T> action, 9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski AccessControlContext context) 91a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak throws PrivilegedActionException { 92a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return doPrivileged(action); 93a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak } 9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 95a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak public static AccessControlContext getContext() { 96a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak return new AccessControlContext(null); 9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 9851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 9951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public static void checkPermission(Permission perm) 100a2f1c61be6bf4dfb1976f4b385ca4373e8b3f91fPrzemyslaw Szczepaniak throws AccessControlException { 10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski} 103