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

org.globus.tools.CertInfo 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.tools;

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


import java.security.cert.X509Certificate;
import java.util.TimeZone;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import org.globus.common.CoGProperties;
import org.globus.common.Version;

/** Returns information about the Cert
 * 
 * Syntax: java CertInfo [-help] [-file certfile] [-all] [-subject] [...]
 * Displays certificate information. Unless the optional -file
 * argument is given, the default location of the file containing the
 * certficate is assumed:
 *   --  Config.getUserCertFile()
 * Options
 *   -help, -usage                Display usage
 *   -version                     Display version
 *   -file certfile               Use 'certfile' at non-default location
 *   -globus                      Prints information in globus format
 * Options determining what to print from certificate
 *   -all                        Whole certificate
 *   -subject                    Subject string of the cert
 *   -issuer                     Issuer
 *   -startdate                  Validity of cert: start date
 *   -enddate                    Validity of cert: end date
 * 
*/ public class CertInfo { private static final int SUBJECT = 2; private static final int ISSUER = 4; private static final int SDATE = 8; private static final int EDATE = 16; private static final int ALL = 32; private static String message = "\n" + "Syntax: java CertInfo [-help] [-file certfile] [-all] [-subject] [...]\n\n" + "\tDisplays certificate information. Unless the optional \n" + "\tfile argument is given, the default location of the file\n" + "\tcontaining the certficate is assumed:\n\n" + "\t -- " + CoGProperties.getDefault().getUserCertFile() + "\n\n" + "\tOptions\n" + "\t-help | -usage\n" + "\t\tDisplay usage.\n" + "\t-version\n" + "\t\tDisplay version.\n" + "\t-file certfile\n" + "\t\tUse 'certfile' at non-default location.\n" + "\t-globus\n" + "\t\tPrints information in globus format.\n\n" + "\tOptions determining what to print from certificate\n\n" + "\t-all\n" + "\t\tWhole certificate.\n" + "\t-subject\n" + "\t\tSubject string of the cert.\n" + "\t-issuer\n" + "\t\tIssuer.\n" + "\t-startdate\n" + "\t\tValidity of cert: start date.\n" + "\t-enddate\n" + "\t\tValidity of cert: end date.\n\n"; public static void main(String args[]) { String file = null; int options = 0; boolean error = false; boolean globusStyle = false; boolean debug = false; for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase("-file")) { file = args[++i]; } else if (args[i].equalsIgnoreCase("-subject")) { options |= SUBJECT; } else if (args[i].equalsIgnoreCase("-issuer")) { options |= ISSUER; } else if (args[i].equalsIgnoreCase("-startdate")) { options |= SDATE; } else if (args[i].equalsIgnoreCase("-enddate")) { options |= EDATE; } else if (args[i].equalsIgnoreCase("-all")) { options |= ALL; } else if (args[i].equalsIgnoreCase("-globus")) { globusStyle = true; } else if (args[i].equalsIgnoreCase("-version")) { System.err.println(Version.getVersion()); System.exit(1); } else if (args[i].equalsIgnoreCase("-help") || args[i].equalsIgnoreCase("-usage")) { System.err.println(message); System.exit(1); } else { System.err.println("Error: argument not recognized : " + args[i]); error = true; } } if (error) { System.err.println("\nUsage: java CertInfo [-help] [-file certfile] [-all] [-subject] [...]\n"); System.err.println("Use -help to display full usage."); System.exit(1); } if (file == null) { file = CoGProperties.getDefault().getUserCertFile(); } X509Certificate cert = null; try { cert = CertificateLoadUtil.loadCertificate(file); } catch(Exception e) { System.err.println("Unable to load the certificate : " + e.getMessage()); System.exit(1); } if (options == 0) { options = SUBJECT | ISSUER | SDATE | EDATE; } if ((options & SUBJECT) != 0) { String dn = null; if (globusStyle) { dn = CertificateUtil.toGlobusID(cert.getSubjectDN()); } else { dn = cert.getSubjectDN().getName(); } System.out.println("subject : " + dn); } if ((options & ISSUER) != 0) { String dn = null; if (globusStyle) { dn = CertificateUtil.toGlobusID(cert.getIssuerDN()); } else { dn = cert.getIssuerDN().getName(); } System.out.println("issuer : " + dn); } TimeZone tz = null; DateFormat df = null; if (globusStyle) { tz = TimeZone.getTimeZone("GMT"); df = new SimpleDateFormat("MMM dd HH:mm:ss yyyy z"); df.setTimeZone(tz); } if ((options & SDATE) != 0) { String dt = null; if (globusStyle) { dt = df.format(cert.getNotBefore()); } else { dt = cert.getNotBefore().toString(); } System.out.println("start date : " + dt); } if ((options & EDATE) != 0) { String dt = null; if (globusStyle) { dt = df.format(cert.getNotAfter()); } else { dt = cert.getNotAfter().toString(); } System.out.println("end date : " + dt); } if ((options & ALL) != 0) { System.out.println("certificate :"); System.out.println(cert.toString()); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy