1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.CodeSource; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PermissionCollection; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.ProtectionDomain; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SecureClassLoader; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.Certificate; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.jar.JarFile; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.luni.util.InputStreamHelper; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_GetLocal; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SecureClassLoader2Test extends junit.framework.TestCase { 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @tests java.security.SecureClassLoader#getPermissions(java.security.CodeSource) 398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void test_getPermissionsLjava_security_CodeSource() throws IOException { 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath class MyClassLoader extends SecureClassLoader { 428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public PermissionCollection getPerms() { 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return super.getPermissions(new CodeSource(null, 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath (Certificate[]) null)); 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public Class define(String name, byte[] bytes) { 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return defineClass(name, bytes, 0, bytes.length, 498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath (ProtectionDomain) null); 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MyClassLoader myloader = new MyClassLoader(); 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PermissionCollection pc = myloader.getPerms(); 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Enumeration e1 = pc.elements(); 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int count = 0; 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while (e1.hasMoreElements()) { 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e1.nextElement(); 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath count++; 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("expected no permissions", 0, count); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File file = Support_GetLocal.getLocalFile("hyts_security.jar"); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JarFile jar = new JarFile(file); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream in = jar.getInputStream(jar.getEntry("packA/SecurityTest.class")); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bytes = InputStreamHelper.readFullyAndClose(in); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class c = myloader.define("packA.SecurityTest", bytes); 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ProtectionDomain pd = c.getProtectionDomain(); 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull("Expected dynamic policy", pd.getClassLoader()); 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull("Expected null permissions", pd.getPermissions()); 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}