All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.globus.gsi.CertUtil Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 1999-2010 University of Chicago
 *
 * 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 org.globus.gsi;

import org.globus.gsi.util.CertificateIOUtil;
import org.globus.gsi.util.CertificateLoadUtil;
import org.globus.gsi.util.CertificateUtil;
import org.globus.gsi.util.ProxyCertificateUtil;




import java.security.Security;
import java.security.Provider;
import java.security.GeneralSecurityException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.security.cert.X509CRL;
import java.security.Principal;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import org.globus.util.I18n;
import org.globus.common.CoGProperties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.bouncycastle.jce.provider.BouncyCastleProvider;


/**
 * Contains various security-related utility methods.
 * @deprecated Use the various utils that are used here.
 */
public class CertUtil {

    /**
     * A no-op function that can be used to force the class
     * to load and initialize.
     */
    public static void init() {
        CertificateUtil.init();
        CertificateLoadUtil.init();
    }

    /**
     * Installs SecureRandom provider.
     * This function is automatically called when this class is loaded.
     */
    public static void installSecureRandomProvider() {
        CertificateUtil.installSecureRandomProvider();
    }

    /**
     * Sets a provider name to use for loading certificates
     * and for generating key pairs.
     *
     * @param providerName provider name to use.
     */
    public static void setProvider(String providerName) {
        CertificateUtil.setProvider(providerName);
        CertificateLoadUtil.setProvider(providerName);
    }

    /**
     * Loads a X509 certificate from the specified input stream.
     * Input stream must contain DER-encoded certificate.
     *
     * @param in the input stream to read the certificate from.
     * @return X509Certificate the loaded certificate.
     * @exception GeneralSecurityException if certificate failed to load.
     */
    public static X509Certificate loadCertificate(InputStream in)
        throws GeneralSecurityException {
        return CertificateLoadUtil.loadCertificate(in);
    }

    /**
     * Loads an X.509 certificate from the specified file.
     * The certificate file must be in PEM/Base64 format and start with
     * "BEGIN CERTIFICATE" and end with "END CERTIFICATE" line.
     *
     * @param file the file to load the certificate from.
     * @return java.security.cert.X509Certificate
     *         the loaded certificate.
     * @exception IOException if I/O error occurs
     * @exception GeneralSecurityException if security problems occurs.
     */
    public static X509Certificate loadCertificate(String file)
        throws IOException, GeneralSecurityException {
        return CertificateLoadUtil.loadCertificate(file);
    }

    /**
     * Loads multiple X.509 certificates from the specified file.
     * Each certificate must be in PEM/Base64 format and start with
     * "BEGIN CERTIFICATE" and end with "END CERTIFICATE" line.
     *
     * @param file the certificate file to load the certificate from.
     * @return an array of certificates loaded from the file.
     * @exception IOException if I/O error occurs
     * @exception GeneralSecurityException if security problems occurs.
     */
    public static X509Certificate[] loadCertificates(String file)
        throws IOException, GeneralSecurityException {
        return CertificateLoadUtil.loadCertificates(file);
    }

    /**
     * Loads a X.509 certificate from the specified reader.
     * The certificate contents must start with "BEGIN CERTIFICATE" line
     * and end with "END CERTIFICATE" line, and be in PEM/Base64 format.
     *
     * This function does not close the input stream.
     *
     * @param reader the stream from which load the certificate.
     * @return the loaded certificate or null if there was no certificate
     *         in the stream or the stream is closed.
     * @exception IOException if I/O error occurs
     * @exception GeneralSecurityException if security problems occurs.
     */
    public static X509Certificate readCertificate(BufferedReader reader)
        throws IOException, GeneralSecurityException {
        return CertificateLoadUtil.readCertificate(reader);
    }

    /**
     * Writes certificate to the specified output stream in PEM format.
     */
    public static void writeCertificate(OutputStream out,
                                        X509Certificate cert)
        throws IOException, CertificateEncodingException {
        CertificateIOUtil.writeCertificate(out, cert);
    }

    /**
     * Converts DN of the form "CN=A, OU=B, O=C" into Globus
     * format "/CN=A/OU=B/O=C".
* This function might return incorrect Globus-formatted ID when one of * the RDNs in the DN contains commas. * @see #toGlobusID(String, boolean) * * @param dn the DN to convert to Globus format. * @return the converted DN in Globus format. */ public static String toGlobusID(String dn) { return CertificateUtil.toGlobusID(dn); } /** * Converts DN of the form "CN=A, OU=B, O=C" into Globus * format "/CN=A/OU=B/O=C" or "/O=C/OU=B/CN=A" depending on the * noreverse option. If noreverse is true * the order of the DN components is not reveresed - "/CN=A/OU=B/O=C" is * returned. If noreverse is false, the order of the * DN components is reversed - "/O=C/OU=B/CN=A" is returned.
* This function might return incorrect Globus-formatted ID when one of * the RDNs in the DN contains commas. * * @param dn the DN to convert to Globus format. * @param noreverse the direction of the conversion. * @return the converted DN in Globus format. */ public static String toGlobusID(String dn, boolean noreverse) { return CertificateUtil.toGlobusID(dn, noreverse); } /** * Converts the specified principal into Globus format. * If the principal is of unrecognized type a simple string-based * conversion is made using the {@link #toGlobusID(String) toGlobusID()} * function. * * @see #toGlobusID(String) * * @param name the principal to convert to Globus format. * @return the converted DN in Globus format. */ public static String toGlobusID(Principal name) { return CertificateUtil.toGlobusID(name); } // proxy utilies /** * Determines if a specified certificate type indicates a GSI-2, * GSI-3 or GSI-4proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-2 or GSI-3 or GSI-4 proxy, false * otherwise. */ public static boolean isProxy(int certType) { return ProxyCertificateUtil.isProxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-4 proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-4 proxy, false * otherwise. */ public static boolean isGsi4Proxy(int certType) { return ProxyCertificateUtil.isGsi4Proxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-3 proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-3 proxy, false * otherwise. */ public static boolean isGsi3Proxy(int certType) { return ProxyCertificateUtil.isGsi3Proxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-2 proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-2 proxy, false * otherwise. */ public static boolean isGsi2Proxy(int certType) { return ProxyCertificateUtil.isGsi2Proxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-2 or GSI-3 or GSI=4 limited proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-2 or GSI-3 or GSI-4 limited proxy, * false otherwise. */ public static boolean isLimitedProxy(int certType) { return ProxyCertificateUtil.isLimitedProxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-3 or GS-4 limited proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-3 or GSI-4 independent proxy, * false otherwise. */ public static boolean isIndependentProxy(int certType) { return ProxyCertificateUtil.isIndependentProxy(GSIConstants.CertificateType.get(certType)); } /** * Determines if a specified certificate type indicates a * GSI-2 or GSI-3 or GSI-4 impersonation proxy certificate. * * @param certType the certificate type to check. * @return true if certType is a GSI-2 or GSI-3 or GSI-4 * impersonation proxy, false otherwise. */ public static boolean isImpersonationProxy(int certType) { return ProxyCertificateUtil.isImpersonationProxy(GSIConstants.CertificateType.get(certType)); } /** * Returns a string description of a specified proxy * type. * * @param proxyType the proxy type to get the string * description of. * @return the string description of the proxy type. */ public static String getProxyTypeAsString(int proxyType) { return ProxyCertificateUtil.getProxyTypeAsString(GSIConstants.CertificateType.get(proxyType)); } /** * Checks if GSI-3 mode is enabled. * * @return true if "org.globus.gsi.version" system property * is set to "3". Otherwise, false. */ public static boolean isGsi3Enabled() { return VersionUtil.isGsi3Enabled(); } /** * Checks if GSI-2 mode is enabled. * * @return true if "org.globus.gsi.version" system property * is set to "2". Otherwise, false. */ public static boolean isGsi2Enabled() { return VersionUtil.isGsi2Enabled(); } // CRL Utilities JGLOBUS-91 public static X509CRL loadCrl(String file) throws IOException, GeneralSecurityException { return CertificateLoadUtil.loadCrl(file); } public static X509CRL loadCrl(InputStream in) throws GeneralSecurityException { return CertificateLoadUtil.loadCrl(in); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy