SuperX-Kernmodul
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

119 lines
4.1 KiB

package de.superx.bin;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;
import de.memtext.util.DSAHandler;
import de.memtext.util.GetOpts;
public class PublicPrivateKeyManager {
public static void main(String[] args) {
GetOpts.setOpts(args);
String isdrin = GetOpts
.isAllRequiredOptionsPresent("-dbproperties,-function");
if (isdrin != null) {
System.err.println("Folgende Optionen fehlen: " + isdrin);
System.exit(1);
}
SxConnection sxcon = new SxConnection();
sxcon.setPropfile(GetOpts.getValue("-dbproperties"));
String function = GetOpts.getValue("-function");
try {
if (function.equals("install"))
{ install(sxcon);
check(sxcon);
}
if (function.equals("delete"))
{
delete(sxcon);
System.out.println("public/private key entfernt");
}
if (function.equals("check"))
{
System.out.println("Suche keys ...");
check(sxcon);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void check(SxConnection sxcon) throws Exception
{
Connection con = sxcon.getConnection();
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select count(*) from sx_repository where id='privatekey'");
int countprivate=0;
while (rs.next())
countprivate=rs.getInt(1);
rs.close();
rs=st.executeQuery("select count(*) from sx_repository where id='publickey'");
int countpublic=0;
while (rs.next())
countpublic=rs.getInt(1);
rs.close();
st.close();
con.close();
if (countprivate==0) System.out.println("private key nicht installiert");
if (countprivate==1) System.out.println("private key installiert");
if (countprivate>1)
{
System.out.println("mehr als ein private key gefunden - alle keys werden gelöscht");
delete(sxcon);
}
if (countpublic==0) System.out.println("public key nicht installiert");
if (countpublic==1) System.out.println("public key installiert");
if (countpublic>1)
{
System.out.println("mehr als ein public key gefunden - alle keys werden gelöscht");
delete(sxcon);
}
}
private static void delete(SxConnection sxcon) throws Exception {
Connection con = sxcon.getConnection();
Statement st = con.createStatement();
st
.executeUpdate("delete from sx_repository where id in ('privatekey','publickey')");
st.close();
con.close();
}
private static void install(SxConnection sxcon) throws Exception {
delete(sxcon);
Connection con = sxcon.getConnection();
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select max(tid) from sx_repository");
int tid=0;
while (rs.next())
tid=rs.getInt(1);
rs.close();
Hashtable table = DSAHandler.generateKeyPair();
//PreparedStatement pst = con .prepareStatement("insert into testmb (tid,id,content,active) (?,?,2)");
//
PreparedStatement pst = con
.prepareStatement("insert into sx_repository (tid,id,content,aktiv) values (?,?,?,2)");
pst.setInt(1, ++tid);
pst.setString(2, "privatekey");
pst.setString(3, table.get("privatekey").toString());
//System.out.println(pst.get);
pst.execute();
pst.setInt(1, ++tid);
pst.setString(2, "publickey");
pst.setString(3, table.get("publickey").toString());
pst.execute();
pst.close();
con.close();
}
}
//Created on 21.10.2006 at 10:03:41