
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