CARead.java文件代碼:
公共類CARead擴展JPanel {
私有字符串CA _ Name
私有字符串CA_ItemData[][] =新字符串[9][2];
Private String[] columnNames = { "證書字段標記","內容" };
公共CARead(字符串證書名稱){
CA _ Name = CertName
/*三個面板用於顯示證書內容*/
JTabbedPane tabbedPane = new JTabbedPane();
JPanel panel normal = new JPanel();
tab bepane . add tab("壹般信息",panel normal);
JPanel panel all = new JPanel();
panel all . set layout(new BorderLayout());
tab bepane . add tab("所有信息",窗格);
JPanel panel base 64 = new JPanel();
panel base 64 . set layout(new BorderLayout());
tab bepane . add tab(" base64編碼形式的信息",panel base64);
/*閱讀證書的壹般信息*/
read _ Normal(panel Normal);
/*讀取證書文件字符串的內容*/
read _ Bin(panel all);
/*讀取Base64編碼格式的證書文件信息*/
read _ Raw(panel base 64);
tabbedepane . setselectedindex(0);
set layout(new GridLayout(1,1));
添加(tabbedepane);
}
private int Read_Normal(JPanel面板){
字符串字段;
嘗試{
認證工廠certificate_factory =認證工廠
。getInstance(" x . 509 ");
file inputstream file _ inputstream = new file inputstream(CA _ Name);
x509 certificate x509 certificate =(x509 certificate)certificate _ factory
。generate certificate(file _ inputstream);
field = x509 certificate . gettype();
CA _ item data[0][0]= " type ";
CA _ item data[0][1]= Field;
field = integer . tostring(x509 certificate . getversion());
CA _ item data[1][0]= " version ";
CA _ item data[1][1]= Field;
field = x509 certificate . getsubjectdn()。getName();
CA _ item data[2][0]= " title ";
CA _ item data[2][1]= Field;
field = x509 certificate . getnotbefore()。toString();//獲取開始生效日期
CA_ItemData[3][0] = "開始生效日期";
CA _ item data[3][1]= Field;
Field =證書。getNotAfter()。toString();//獲取截止日期
CA _ item data[4][0]= " Deadline ";
CA _ item data[4][1]= Field;
field = x509 certificate . get serial number()。toString(16);//獲取序列號
CA_ItemData[5][0] = "序列號";
CA _ item data[5][1]= Field;
field = x509 certificate . getissuerdn()。getName();//獲取發布者名稱
CA_ItemData[6][0] = "發布者名稱";
CA _ item data[6][1]= Field;
field = x509 certificate . getsigalgname();//獲取簽名算法
CA_ItemData[7][0] = "簽名算法";
CA _ item data[7][1]= Field;
field = x509 certificate . get public key()。getAlgorithm();//獲取公鑰算法
CA_ItemData[8][0] = "公鑰算法";
CA _ item data[8][1]= Field;
//關閉輸入流對象
file _ inputstream . close();
final JTable table = new JTable(CA _ item data,column names);
TableColumn tc = null//表格列控件
tc = table.getColumnModel()。getColumn(1);//獲取標題
TC . setpreferedwidth(600);//設置寬度
panel.add(表格);//添加到布局面板
} catch(異常異常){
exception . printstacktrace();//異常捕獲,
return-1;
}
返回0;
}
//讀取二進制指紋文件
private int Read_Bin(JPanel面板){
嘗試{
file inputstream file _ inputstream = new file inputstream(CA _ Name);
data inputstream data _ inputstream = new data inputstream(
file _ inputstream);
認證工廠認證工廠=認證工廠
。getInstance(" x . 509 ");
byte[]bytes = new byte[data _ inputstream . available()];
data_inputstream.readFully(字節);
bytearray inputstream Bais = new bytearray inputstream(字節);
JEditorPane Cert _ EditorPane
cert _ editor pane = new jeditor pane();
X509Certificate cert = null
//遍歷以獲取所有證書屬性。
if(Bais . available()>;0)
{
cert = (X509Certificate)證書工廠。生成證書(Bais);
cert _ editor pane . settext(cert . tostring());
}
cert _ editor pane . disable();
JScrollPane edit _ scroll = new JScrollPane(Cert _ editor pane);
panel . add(edit _ scroll);
file _ inputstream . close();
data _ inputstream . close();
} catch(異常異常){
exception . printstacktrace();
return-1;
}
返回0;
}
private int Read_Raw(JPanel面板){
嘗試{
JEditorPane Cert _ editor pane = new JEditorPane();
string buffer strBuffer = new string buffer();
File inputFile =新文件(CA _ Name);
file reader in = new file reader(input file);
char[]buf = new char[2000];
int len = in.read(buf,0,2000);
for(int I = 1;我& ltleni++) {
strbuffer . append(buf[I]);
}
in . close();
cert _ editor pane . settext(strbuffer . tostring());
cert _ editor pane . disable();
JScrollPane edit _ scroll = new JScrollPane(Cert _ editor pane);
panel . add(edit _ scroll);
} catch(異常異常){
exception . printstacktrace();
return-1;
}
返回0;
}
}