2 Replies Latest reply: Jan 23, 2013 2:08 AM by gimbal2 RSS

    help with java digital signing code

      hello people.
      can anybody help me?
      i have find a java code to resolve my problem with sending pay in soap envelope with digital signature and attached certificate. i compiled it with jdk jdk1.6.0_37. and it works.
      i need it to work in built-in jvm in oracle 9i. in oracle 9i jvm release is 1.3.1. Java code does not work there. there is an error
      class import com.sun.org.apache.xerces.internal.impl.dv.util.Base64 not found in import.
      i did not find this class in network.

      can anybody help with rewriting it for jvm 1.3.1?

      thanks in advance.

      code below:

      import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
      import java.io.*;
      import java.security.Key;
      import java.security.KeyStore;
      import java.security.PrivateKey;
      import java.security.Signature;
      import java.security.cert.Certificate;
      public class Sign {
      public static void main(String[] args) throws Exception {
      // TODO code application logic here
      BufferedReader reader = new BufferedReader(new FileReader("c:\\cert.p12"));
      StringBuilder fullText = new StringBuilder();
      String line = reader.readLine();
      while (line != null) {
      line = reader.readLine();
      KeyStore p12 = KeyStore.getInstance("pkcs12");
      p12.load(new FileInputStream("c:\\cert.p12"), "Hfrtnf$5".toCharArray());

      //????????? ????????? ????, ??? ????? ????? ???????????? alias ? ??????
      //Key key = p12.getKey("my kkb key", "ryba-mech".toCharArray());
      Key key = (Key) p12.getKey("my kkb key", "Hfrtnf$5".toCharArray());
      Certificate userCert = (Certificate) p12.getCertificate("my kkb key");
      String base64Cert = new String(Base64.encode(userCert.getEncoded()));
      Signature signer = Signature.getInstance("SHA1withRSA");
      signer.initSign((PrivateKey) key);
      byte[] digitalSignature = signer.sign();
      String base64sign = new String(Base64.encode(digitalSignature));
      String base64Xml = new String(Base64.encode(fullText.toString().getBytes()));

      System.out.println("<certificate>" + base64Cert+"</certificate>");
      System.out.println("<xmlBody>" + base64Xml+"</xmlBody>");
      System.out.println("<signature>" + base64sign+"</signature>");

      Edited by: user13622283 on 22.01.2013 22:08