import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.cacert.gigi.Certificate.CSRType;
import org.cacert.gigi.database.DatabaseConnection;
-import org.cacert.gigi.output.CertificateValiditySelector;
+import org.cacert.gigi.output.DateSelector;
public class SimpleSigner {
private static Thread runner;
private static SimpleDateFormat sdf = new SimpleDateFormat("YYMMddHHmmss'Z'");
+
static {
+ TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
}
throw new IllegalStateException("already running");
}
running = true;
- readyCerts = DatabaseConnection.getInstance().prepare("SELECT certs.id AS id, certs.csr_name, certs.subject, jobs.id AS jobid, csr_type, md, keyUsage, extendedKeyUsage, executeFrom, executeTo FROM jobs " + //
+ readyCerts = DatabaseConnection.getInstance().prepare("SELECT certs.id AS id, certs.csr_name, certs.subject, jobs.id AS jobid, csr_type, md, keyUsage, extendedKeyUsage, executeFrom, executeTo, rootcert FROM jobs " + //
"INNER JOIN certs ON certs.id=jobs.targetId " + //
"INNER JOIN profiles ON profiles.id=certs.profile " + //
"WHERE jobs.state='open' "//
private static void signCertificates() throws SQLException {
ResultSet rs = readyCerts.executeQuery();
+
+ Calendar c = Calendar.getInstance();
+ c.setTimeZone(TimeZone.getTimeZone("UTC"));
+
while (rs.next()) {
String csrname = rs.getString("csr_name");
int id = rs.getInt("id");
String keyUsage = rs.getString("keyUsage");
String ekeyUsage = rs.getString("extendedKeyUsage");
- java.sql.Date from = rs.getDate("executeFrom");
+
+ Timestamp from = rs.getTimestamp("executeFrom");
String length = rs.getString("executeTo");
Date fromDate;
Date toDate;
if (length.endsWith("m") || length.endsWith("y")) {
String num = length.substring(0, length.length() - 1);
int inter = Integer.parseInt(num);
- Calendar c = Calendar.getInstance();
- c.setTimeZone(TimeZone.getTimeZone("UTC"));
c.setTime(fromDate);
if (length.endsWith("m")) {
c.add(Calendar.MONTH, inter);
}
toDate = c.getTime();
} else {
- toDate = CertificateValiditySelector.getDateFormat().parse(length);
+ toDate = DateSelector.getDateFormat().parse(length);
}
- System.out.println(from);
- System.out.println(sdf.format(fromDate));
getSANSs.setInt(1, id);
ResultSet san = getSANSs.executeQuery();
cfg.println("extendedKeyUsage=" + ekeyUsage);
cfg.close();
+ int rootcert = rs.getInt("rootcert");
+ String ca = "unassured";
+ if (rootcert == 0) {
+ ca = "unassured";
+ } else if (rootcert == 1) {
+ ca = "assured";
+ }
+
String[] call = new String[] {
"openssl", "ca",//
"-in",
"../../" + csrname,//
"-cert",
- "../unassured.crt",//
+ "../" + ca + ".crt",//
"-keyfile",
- "../unassured.key",//
+ "../" + ca + ".key",//
"-out",
"../../" + crt.getPath(),//
"-utf8",