init.java
来自「JAVA 所有包」· Java 代码 · 共 421 行 · 第 1/2 页
JAVA
421 行
/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package com.sun.org.apache.xml.internal.security;import java.io.InputStream;import java.security.AccessController;import java.security.PrivilegedAction;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import com.sun.org.apache.xml.internal.security.algorithms.JCEMapper;import com.sun.org.apache.xml.internal.security.algorithms.SignatureAlgorithm;import com.sun.org.apache.xml.internal.security.c14n.Canonicalizer;import com.sun.org.apache.xml.internal.security.keys.KeyInfo;import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolver;import com.sun.org.apache.xml.internal.security.transforms.Transform;import com.sun.org.apache.xml.internal.security.utils.I18n;//import com.sun.org.apache.xml.internal.security.utils.PRNG;import com.sun.org.apache.xml.internal.security.utils.XMLUtils;import com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;/** * This class does the configuration of the library. This includes creating * the mapping of Canonicalization and Transform algorithms. Initialization is * done by calling {@link Init#init} which should be done in any static block * of the files of this library. We ensure that this call is only executed once. * * @author $Author: raul $ */public final class Init { /** {@link java.util.logging} logging facility */ static java.util.logging.Logger log = java.util.logging.Logger.getLogger(Init.class.getName()); /** Field _initialized */ private static boolean _alreadyInitialized = false; /** The namespace for CONF file **/ public static final String CONF_NS="http://www.xmlsecurity.org/NS/#configuration"; /** * Method isInitialized * @return true if the librairy is already initialized. * */ public static final boolean isInitialized() { return Init._alreadyInitialized; } /** * Method init * */ public synchronized static void init() { if (_alreadyInitialized) { return; } long XX_configure_i18n_end=0; long XX_configure_reg_c14n_start=0; long XX_configure_reg_c14n_end=0; long XX_configure_reg_jcemapper_end=0; long XX_configure_reg_keyInfo_start=0; long XX_configure_reg_keyResolver_end=0; long XX_configure_reg_prefixes_start=0; long XX_configure_reg_resourceresolver_start=0; long XX_configure_reg_sigalgos_end=0; long XX_configure_reg_transforms_end=0; long XX_configure_reg_keyInfo_end=0; long XX_configure_reg_keyResolver_start=0; _alreadyInitialized = true; try { long XX_init_start = System.currentTimeMillis(); long XX_prng_start = System.currentTimeMillis(); //PRNG.init(new java.security.SecureRandom()); long XX_prng_end = System.currentTimeMillis(); /* read library configuration file */ long XX_parsing_start = System.currentTimeMillis(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); dbf.setValidating(false); DocumentBuilder db = dbf.newDocumentBuilder(); // We don't allow users to override the Apache XML Security // configuration in the JRE. Users should use the standard security // provider mechanism instead if implementing their own // transform or canonicalization algorithms. // String cfile = System.getProperty("com.sun.org.apache.xml.internal.security.resource.config"); // InputStream is = // Class.forName("com.sun.org.apache.xml.internal.security.Init") // .getResourceAsStream(cfile != null ? cfile : "resource/config.xml"); InputStream is = (InputStream) AccessController.doPrivileged( new PrivilegedAction() { public Object run() { return getClass().getResourceAsStream ("resource/config.xml"); } }); Document doc = db.parse(is); long XX_parsing_end = System.currentTimeMillis(); long XX_configure_i18n_start = 0; { XX_configure_reg_keyInfo_start = System.currentTimeMillis(); try { KeyInfo.init(); } catch (Exception e) { e.printStackTrace(); throw e; } XX_configure_reg_keyInfo_end = System.currentTimeMillis(); } long XX_configure_reg_transforms_start=0; long XX_configure_reg_jcemapper_start=0; long XX_configure_reg_sigalgos_start=0; long XX_configure_reg_resourceresolver_end=0; long XX_configure_reg_prefixes_end=0; Node config=doc.getFirstChild(); for (;config!=null;config=config.getNextSibling()) { if ("Configuration".equals(config.getLocalName())) { break; } } for (Node el=config.getFirstChild();el!=null;el=el.getNextSibling()) { if (!(el instanceof Element)) { continue; } String tag=el.getLocalName();// // Commented out: not supported in the JDK. We use the default locale.//// if (tag.equals("ResourceBundles")){// XX_configure_i18n_start = System.currentTimeMillis();// Element resource=(Element)el;// /* configure internationalization */// Attr langAttr = resource.getAttributeNode("defaultLanguageCode");// Attr countryAttr = resource.getAttributeNode("defaultCountryCode");// String languageCode = (langAttr == null)// ? null// : langAttr.getNodeValue();// String countryCode = (countryAttr == null)// ? null// : countryAttr.getNodeValue();//// I18n.init(languageCode, countryCode);// XX_configure_i18n_end = System.currentTimeMillis();// } if (tag.equals("CanonicalizationMethods")){ XX_configure_reg_c14n_start = System.currentTimeMillis(); Canonicalizer.init(); Element[] list=XMLUtils.selectNodes(el.getFirstChild(),CONF_NS,"CanonicalizationMethod"); for (int i = 0; i < list.length; i++) { String URI = list[i].getAttributeNS(null, "URI"); String JAVACLASS = list[i].getAttributeNS(null, "JAVACLASS"); try { Class.forName(JAVACLASS);/* Method methods[] = c.getMethods(); for (int j = 0; j < methods.length; j++) { Method currMeth = methods[j]; if (currMeth.getDeclaringClass().getName() .equals(JAVACLASS)) { log.log(java.util.logging.Level.FINE, currMeth.getDeclaringClass().toString()); } }*/ if (true) if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "Canonicalizer.register(" + URI + ", " + JAVACLASS + ")"); Canonicalizer.register(URI, JAVACLASS); } catch (ClassNotFoundException e) { Object exArgs[] = { URI, JAVACLASS }; log.log(java.util.logging.Level.SEVERE, I18n.translate("algorithm.classDoesNotExist",
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?