
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