正 文

通过 SOAP 和 HTTP 发送安全/非安全附件


www.7dspace.com  更新日期:2006-2-13 22:58:35  七度空间


在服务器端,将从接收到的 DataHanlder 对象提取 MimeMessage,以了解事务的详细信息。有关详细信息,请参阅下面的清单 7。

清单 7. 从 DataHandler 提取 MimeMessage——服务器端

public void sendSignedDocument(javax.activation.DataHandler datahandler)
 throws java.rmi.RemoteException
{
     try{
        MimeMessage mimeMessage = null;
        java.io.InputStream is = datahandler.getInputStream();
        int start = 0;
        int num =0;
        byte[] image = new byte[50000];
        byte[] temp = new byte[1024];
        while ((num = is.read(temp)) > 0){
          System.out.println("Count ");
          System.arraycopy(temp,0,image,start,num);
          start+=num;
        }
        mimeMessage = new javax.mail.internet.MimeMessage
          (javax.mail.Session.getDefaultInstance(new Properties(),null),
               new ByteArrayInputStream(image));
        MimeMultipart mmp = (MimeMultipart)mimeMessage.getContent();
        MimeBodyPart part = (MimeBodyPart)mmp.getBodyPart(0);
        Object partobj = part.getContent();
        InputStream is1 = part.getRawInputStream(); //getContentStream();
        byte[] isData = new byte[is1.available()];
        is1.read(isData);
        is1.close();
        byte[] contents1 = isData;
        verifySignature(contents1,"This is the Temp Data".getBytes());
        java.io.FileOutputStream fos =
          new java.io.FileOutputStream("C:\\output.txt");
        fos.write(image);
        fos.close();
     }catch(Exception ex){
        ex.printStackTrace();
     }
 }

清单 8 显示了 VerifySignature 方法:

清单 8. VerifySignature 方法

public static  int verifySignature(byte [] signature, byte[] messageContent)
{
     int ret=100;
     SignerInfo[] signers=null; 
     SignedData signedData = null;
     SignerInfo  signer=null; 
     Properties vcp=null; 
     X509Certificate cert = null; 
     try
     {
        ContentInfo  contentInfoEnvData = new ContentInfo(signature);
        signedData = (SignedData)contentInfoEnvData.getContent();
        cert = loadX509Certificate("C:/temp/PKITS/signingExpPartner.der");
        signer = signedData.getSignerInfo(cert);  
        boolean result = signer.verify(cert,messageContent);
        System.out.println("verifySignature result is "+result);
        if(result) ret = 100;
        else ret = 001; 
     }
     catch (Exception e){
        e.printStackTrace();
        ret=001;
     }
     return ret;
}

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:DVD备份之王花落谁家 Divx6 VS RatDVD
下一篇:使用AJAX调用SOAP Web服务:构建Web服务客户机
标题:通过 SOAP 和 HTTP 发送安全/非安全附件 作者:Vikas Arora 来源:developerWorks 中国
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐