?? psiapp.java
字號:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov Date: 2004-4-7 14:50:25
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: PSIApp.java
package psic;
import java.io.*;
import java.util.*;
// Referenced classes of package psic:
// ClientConf, PSIJni, PKI_DATA, LDAPProcess,
// XMLParse, PA_CERTINFO, ATTR_CERTINFO
public class PSIApp {
public PSIApp() {
conf = new ClientConf();
CurStatus = -18000;
try {
keyLabel = conf.getParamValue("KeyLabel");
psi = new PSIJni();
CurStatus = psi.pkiInit();
if (CurStatus != 0)
CurStatus = -18000;
}
catch (Exception err) {
CurStatus = -18000;
}
}
public boolean release() {
int flag = -18000;
flag = psi.pkiEnd();
CurStatus = flag;
return flag == 0;
}
public int GetCurStatus() {
return CurStatus;
}
public String AdvBase64Encode(byte i_inData[]) {
String outStr = "";
int flag = -18000;
try {
PKI_DATA inData = new PKI_DATA();
PKI_DATA outData = new PKI_DATA();
inData.setSize(i_inData.length);
inData.setValue(i_inData);
flag = psi.pkiBase64Encode(inData, outData);
if (flag == 0)
outStr = outData.getValueString();
CurStatus = flag;
}
catch (Exception err) {
CurStatus = -18000;
}
return outStr;
}
public byte[] AdvBase64Decode(String i_inData) {
int flag = -18000;
PKI_DATA inData = new PKI_DATA();
PKI_DATA outData = new PKI_DATA();
byte b_out[];
try {
inData.setSize(i_inData.length());
inData.setValueString(i_inData);
flag = psi.pkiBase64Decode(inData, outData);
CurStatus = flag;
}
catch (Exception err) {
CurStatus = -18000;
b_out = new byte[0];
}
if (flag == 0)
b_out = outData.getValue();
else
b_out = new byte[0];
return b_out;
}
public String AdvGetCert(int certType) {
String outStr = "";
int flag = -18000;
try {
PKI_DATA outData = new PKI_DATA();
PKI_DATA encData = new PKI_DATA();
switch (certType) {
case 1: // '\001'
// flag = psi.pkiReadLabel(keyLabel + "_ENC", 1, outData);
flag = psi.pkiExportCert(keyLabel , 1, 1, outData);
break;
case 2: // '\002'
// flag = psi.pkiReadLabel(keyLabel + "_SIG", 1, outData);
flag = psi.pkiExportCert(keyLabel , 1, 2, outData);
break;
default:
flag = -1;
break;
}
if (flag == 0)
flag = psi.pkiBase64Encode(outData, encData);
if (flag == 0)
outStr = encData.getValueString();
CurStatus = flag;
}
catch (Exception err) {
CurStatus = -18000;
}
return outStr;
}
public boolean AdvCheckCert(String i_inCert) {
byte b_nil[] = new byte[0];
PKI_DATA i_cacer = new PKI_DATA(b_nil, 0);
PKI_DATA i_certsChain = new PKI_DATA(b_nil, 0);
PKI_DATA i_cacrl = new PKI_DATA(b_nil, 0);
int flag = -18000;
try {
i_cacer = new PKI_DATA( this.read("/usr/local/Config/ca.cer") );
i_cacrl = new PKI_DATA( this.read("/usr/local/Config/ca.crl") );
PKI_DATA inCert = new PKI_DATA();
PKI_DATA decCert = new PKI_DATA();
inCert.setSize(i_inCert.length());
inCert.setValueString(i_inCert);
flag = psi.pkiBase64Decode(inCert, decCert);
if (flag == 0)
flag = psi.pkiCheckCert(decCert, i_cacer, i_certsChain, i_cacrl);
CurStatus = flag;
}
catch (Exception err) {
CurStatus = -18000;
}
return (flag==0) ;
}
public String AdvGetCertInfo(String i_inData) {
PKI_DATA inCert = new PKI_DATA();
PKI_DATA outCert = new PKI_DATA();
String outData = "";
try {
inCert.setSize(i_inData.length());
inCert.setValueString(i_inData);
int flag = psi.pkiBase64Decode(inCert, outCert);
PKI_DATA o_certInfo = new PKI_DATA();
if (flag == 0)
flag = psi.pkiGetXMLCertInfo(outCert, o_certInfo);
if (flag == 0)
outData = o_certInfo.getValueString();
CurStatus = flag;
}
catch (Exception err) {
CurStatus = -18000;
}
return outData;
}
public String AdvSealEnvelope(String i_encCert, int i_symmAlgo, byte i_inData[]) {
String outStr = "";
int flag = ABERROR;
try {
if (i_symmAlgo == 0) {
String ownerCert = AdvGetCert(1);
if (ownerCert.length() <= 0) {
CurStatus = ABERROR;
return outStr;
}
int algo = AdvGetAlgoFromPA(ownerCert, i_encCert, 2, -1);
if (! (algo <= 0)) {
i_symmAlgo = algo;
}
}
PKI_DATA inCert = new PKI_DATA();
PKI_DATA outCert = new PKI_DATA();
inCert.setSize(i_encCert.length());
inCert.setValueString(i_encCert);
flag = psi.pkiBase64Decode(inCert, outCert);
PKI_DATA inData = new PKI_DATA();
inData.setSize(i_inData.length);
inData.setValue(i_inData);
PKI_DATA outData = new PKI_DATA();
PKI_DATA encData = new PKI_DATA();
if (flag == 0)
flag = psi.pkiSealEnvelope(outCert, i_symmAlgo, inData, outData);
if (flag == 0)
flag = psi.pkiBase64Encode(outData, encData);
if (flag == 0)
outStr = encData.getValueString();
CurStatus = flag;
}
catch (Exception err) {
CurStatus = ABERROR;
}
return outStr;
}
public boolean fAdvSealEnvelope(String i_encCert, int i_symmAlgo,
String i_inFile, String i_outFile) {
boolean retv = false;
int flag = -18000;
byte b_readData[] = null;
if (i_inFile == null || i_inFile.length() <= 0) {
CurStatus = -18500;
return retv;
}
if (i_outFile == null || i_outFile.length() <= 0) {
CurStatus = -18501;
return retv;
}
try {
PKI_DATA inCert = new PKI_DATA();
PKI_DATA outCert = new PKI_DATA();
inCert.setSize(i_encCert.length());
inCert.setValueString(i_encCert);
flag = psi.pkiBase64Decode(inCert, outCert);
if (flag == 0)
b_readData = read(i_inFile);
if (CurStatus == 0) {
PKI_DATA inData = new PKI_DATA();
inData.setSize(b_readData.length);
inData.setValue(b_readData);
PKI_DATA outData = new PKI_DATA();
if (flag == 0)
flag = psi.pkiSealEnvelope(outCert, i_symmAlgo, inData, outData);
if (flag == 0)
write(outData.getValue(), i_outFile);
else
CurStatus = flag;
}
}
catch (Exception err) {
CurStatus = -18000;
}
if (CurStatus == 0)
retv = true;
else
retv = false;
return retv;
}
public String AdvSealEnvelopeEx(String i_encCert, int i_encCertNum,
int i_symmAlgo, byte i_inData[]) {
String outStr = "";
int flag = ABERROR;
try {
StringTokenizer st = new StringTokenizer(i_encCert, "|", false);
int num = st.countTokens();
if (num != i_encCertNum) {
CurStatus = ENCCERT_NUM_ERROR;
return outStr;
}
PKI_DATA[] inCert = new PKI_DATA[i_encCertNum];
for (int j = 0; j < i_encCertNum; j++)
inCert[j] = new PKI_DATA();
int i = 0;
while (st.hasMoreTokens()) {
String str = st.nextToken().trim();
PKI_DATA temp = new PKI_DATA();
temp.setSize(str.length());
temp.setValueString(str);
flag = psi.pkiBase64Decode(temp, inCert[i]);
if (flag == 0)
i++;
}
PKI_DATA inData = new PKI_DATA();
inData.setSize(i_inData.length);
inData.setValue(i_inData);
PKI_DATA outData = new PKI_DATA();
PKI_DATA encData = new PKI_DATA();
//去PA取策略,但是只由多張證書的第一張決定對稱算法(不太合理)
if (i_symmAlgo == 0) {
String ownerCert = AdvGetCert(1);
if (ownerCert.length() <= 0) {
CurStatus = ABERROR;
return outStr;
}
String i_otherCert = AdvBase64Encode(inCert[0].getValue());
int algo = AdvGetAlgoFromPA(ownerCert, i_otherCert, 2, -1);
if (! (algo <= 0)) {
i_symmAlgo = algo;
}
}
flag = psi.pkiSealEnvelopeEx(inCert, i_encCertNum, i_symmAlgo, inData,
outData);
if (flag == 0)
flag = psi.pkiBase64Encode(outData, encData);
if (flag == 0)
outStr = encData.getValueString();
CurStatus = flag;
}
catch (Exception err) {
CurStatus = ABERROR;
}
return outStr;
}
public boolean fAdvSealEnvelopeEx(String i_encCert, int i_encCertNum,
int i_symmAlgo, String i_inFile,
String i_outFile) {
boolean retv = false;
int flag;
byte b_readData[];
retv = false;
flag = -18000;
b_readData = null;
if (i_inFile == null || i_inFile.length() <= 0) {
CurStatus = -18500;
return retv;
}
if (i_outFile == null || i_outFile.length() <= 0) {
CurStatus = -18501;
return retv;
}
StringTokenizer st;
st = new StringTokenizer(i_encCert, "|");
int num = st.countTokens();
if (num != i_encCertNum){
CurStatus = -18001;
return retv;
}
try {
PKI_DATA inCert[] = new PKI_DATA[i_encCertNum];
for (int j = 0; j < i_encCertNum; j++)
inCert[j] = new PKI_DATA();
int i = 0;
while (st.hasMoreTokens()) {
String str = st.nextToken();
PKI_DATA temp = new PKI_DATA();
temp.setSize(str.length());
temp.setValueString(str);
flag = psi.pkiBase64Decode(temp, inCert[i]);
if (flag == 0)
i++;
}
if (flag == 0)
b_readData = read(i_inFile);
if (CurStatus == 0) {
PKI_DATA inData = new PKI_DATA();
inData.setSize(b_readData.length);
inData.setValue(b_readData);
PKI_DATA outData = new PKI_DATA();
if (flag == 0)
flag = psi.pkiSealEnvelopeEx(inCert, i_encCertNum, i_symmAlgo, inData,
outData);
if (flag == 0)
write(outData.getValue(), i_outFile);
else
CurStatus = flag;
}
}
catch (Exception err) {
CurStatus = -18000;
}
if (CurStatus == 0)
retv = true;
else
retv = false;
return retv;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -