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
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
|
|
|