⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psiapp.java

📁 这个是自由下载的
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
// 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 + -