Package org.ejbca.config

Source Code of org.ejbca.config.ExtendedKeyUsageConfiguration

/*************************************************************************
*                                                                       *
*  EJBCA: The OpenSource Certificate Authority                          *
*                                                                       *
*  This software is free software; you can redistribute it and/or       *
*  modify it under the terms of the GNU Lesser General Public           *
*  License as published by the Free Software Foundation; either         *
*  version 2.1 of the License, or any later version.                    *
*                                                                       *
*  See terms of license at gnu.org.                                     *
*                                                                       *
*************************************************************************/

package org.ejbca.config;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.commons.configuration.Configuration;
import org.apache.log4j.Logger;

/**
* This file handles configuration from conf/extendedkeyusage.properties
*
* @version $Id: ExtendedKeyUsageConfiguration.java 11079 2011-01-07 08:43:47Z anatom $
*/
public final class ExtendedKeyUsageConfiguration {

  private static final Logger log = Logger.getLogger(ExtendedKeyUsageConfiguration.class);
 
  /** This is a singleton so it's not allowed to create an instance explicitly */
  private ExtendedKeyUsageConfiguration() {}

    /**
     * Map for texts that maps OIDs in extendedKeyUsageOids to text strings that can be displayed.
     * If an extended key usage should not be displayed in the GUI, put null as value in the
     * properties file. This is done for deprecated IPSec key usages below. "IPSECENDSYSTEM",
     * "IPSECTUNNEL", "IPSECUSER".
     *
     * The standard OIDs for extended key usages mostly comes from KeyPurposeId.id_kp_clientAuth
     * etc, or CertTools.EFS_OBJECTID, EFSR_OBJECTID, MS_DOCUMENT_SIGNING_OBJECTID, Intel_amt
     */
    private static Map<String, String> extendedKeyUsageOidsAndNames = null;
   
    /**
     * Array of all OIDs for Extended Key Usage, is filled by below and must therefore appear
     * before the below line in this file.
     */
    private static List<String> extendedKeyUsageOids = null;

    public static synchronized Map<String, String> getExtendedKeyUsageOidsAndNames() {
      if (extendedKeyUsageOidsAndNames == null) {
        fillExtendedKeyUsageOidsAndTexts();
      }
    return extendedKeyUsageOidsAndNames;
  }
     
    public static synchronized List<String> getExtendedKeyUsageOids() {
      if (extendedKeyUsageOids == null) {
        fillExtendedKeyUsageOidsAndTexts();
      }
    return extendedKeyUsageOids;
  }

    /**
     * Fill the map and list with OIDs from the configuration file
     */
  private static synchronized void fillExtendedKeyUsageOidsAndTexts() {
      final ListOrderedMap map = new ListOrderedMap();
      final Configuration conf = ConfigurationHolder.instance();
      final String ekuname = "extendedkeyusage.name.";
      final String ekuoid = "extendedkeyusage.oid.";
      for (int i = 0; i < 255; i++) {
        final String oid = conf.getString(ekuoid+i);
        if (oid != null) {
          String name = conf.getString(ekuname+i);
          if (name != null) {
            // A null value in the properties file means that we should not use this value, so set it to null for real
            if (name.equalsIgnoreCase("null")) {
              name = null;
            }
            map.put(oid, name);
          } else {
            log.error("Found extended key usage oid "+oid+", but no name defined. Not adding to list of extended key usages.");
          }
        } else {
          // No eku with that number = no more ekus so break,
          log.debug("Read "+i+" extended key usages.");
          break;
        }
      }
      extendedKeyUsageOids = map.asList();
      if (extendedKeyUsageOids == null) {
        log.error("Extended key usage OIDs is null, there is a serious error with extendedkeyusage.properties");
        extendedKeyUsageOids = new ArrayList<String>();
      }
      extendedKeyUsageOidsAndNames = Collections.synchronizedMap(map);
    }

}
TOP

Related Classes of org.ejbca.config.ExtendedKeyUsageConfiguration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.