JSignPdf0.9.0批处理及用于Java web项目时的bug
2009-12-18 21:11:23 来源:WEB开发网核心提示:最近做的一个项目中客户有个需求,要求对给他们的客户下载的证书进行数字签名,JSignPdf0.9.0批处理及用于Java web项目时的bug,因此,项目中用到开源项目JSignPdf 0.9.0版(以下简称:J09)实现对pdf文件的数字签名,如果不嫌麻烦,每签名一次就将项目重启一次,在使用的过程中,发现了J09的一
最近做的一个项目中客户有个需求,要求对给他们的客户下载的证书进行数字签名。因此,项目中用到开源项目JSignPdf 0.9.0版(以下简称:J09)实现对pdf文件的数字签名。在使用的过程中,发现了J09的一个bug。
J09声称在命令行模式(command line batch mode)下可以实现批处理操作,其中,有一个参数“-ka”用于指定密钥文件(keystore file)中的密钥别名(key alias),若不指定则默认取文件中的第一个密钥。
环境:密钥文件使用Adobe pdf Reader 9生成,类型为PKCS12(.pfx文件);后面说的java web项目基于Struts2 + SPRing框架,将J09的入口类Signer做简单修改后作为Action类的成员变量,模拟命令行参数实现对pdf文件进行数字签名。
问题:当执行批处理(参数中有多个待签名pdf文件),同时又指定了“-ka”参数(如“-ka 1”,此时理论上应该和不指定该参数是一样的,但实际上不一样)时,对第一个pdf文件签名一切正常,到第二个的时候就抛出如下异常
java.lang.NullPointerException
at com.lowagie.text.pdf.PdfPKCS7.<init>(Unknown Source)
at com.lowagie.text.pdf.PdfSigGenericPKCS.setSignInfo(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfStamper.close(Unknown Source)
at net.sf.jsignpdf.SignerLogic.run(SignerLogic.java:168)
at net.sf.jsignpdf.Signer.signFiles(Signer.java:120)
at net.sf.jsignpdf.Signer.main(Signer.java:68)
而只有不指定“-ka”参数时,才能实现真正的批处理操作。因此,要想实现批处理,一定不能指定-ka参数,此时意味着密钥文件中只能有一个密钥(严格地说应该是只能使用密钥文件中的第一个密钥)。
以上是在Windows命令行下直接使用其jar包的情况。而当把J09源码用于应用了Struts2+Spring框架的Java web项目时(Spring 版本2.5,对于其他情况,本人没有实践无发言权),则无论如何一定不能指定“-ka”参数,否则即使一次只签名一个文件,到第二次签名操作时,一定会抛出上述异常,即使每次操作都将整个类重新new一个也无法幸免!(呵呵,如果不嫌麻烦,每签名一次就将项目重启一次,这
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/notjusttech/archive/2009/12/17/5028184.aspx
J09声称在命令行模式(command line batch mode)下可以实现批处理操作,其中,有一个参数“-ka”用于指定密钥文件(keystore file)中的密钥别名(key alias),若不指定则默认取文件中的第一个密钥。
环境:密钥文件使用Adobe pdf Reader 9生成,类型为PKCS12(.pfx文件);后面说的java web项目基于Struts2 + SPRing框架,将J09的入口类Signer做简单修改后作为Action类的成员变量,模拟命令行参数实现对pdf文件进行数字签名。
问题:当执行批处理(参数中有多个待签名pdf文件),同时又指定了“-ka”参数(如“-ka 1”,此时理论上应该和不指定该参数是一样的,但实际上不一样)时,对第一个pdf文件签名一切正常,到第二个的时候就抛出如下异常
java.lang.NullPointerException
at com.lowagie.text.pdf.PdfPKCS7.<init>(Unknown Source)
at com.lowagie.text.pdf.PdfSigGenericPKCS.setSignInfo(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfStamper.close(Unknown Source)
at net.sf.jsignpdf.SignerLogic.run(SignerLogic.java:168)
at net.sf.jsignpdf.Signer.signFiles(Signer.java:120)
at net.sf.jsignpdf.Signer.main(Signer.java:68)
而只有不指定“-ka”参数时,才能实现真正的批处理操作。因此,要想实现批处理,一定不能指定-ka参数,此时意味着密钥文件中只能有一个密钥(严格地说应该是只能使用密钥文件中的第一个密钥)。
以上是在Windows命令行下直接使用其jar包的情况。而当把J09源码用于应用了Struts2+Spring框架的Java web项目时(Spring 版本2.5,对于其他情况,本人没有实践无发言权),则无论如何一定不能指定“-ka”参数,否则即使一次只签名一个文件,到第二次签名操作时,一定会抛出上述异常,即使每次操作都将整个类重新new一个也无法幸免!(呵呵,如果不嫌麻烦,每签名一次就将项目重启一次,这
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/notjusttech/archive/2009/12/17/5028184.aspx
[]
- ››用于监控DB2实例和数据库的新的DB2 UDB工具
- ››JSignPdf0.9.0批处理及用于Java web项目时的bug
- ››用于屏幕监测转发、摄像监控转发的清扬视频会议软...
- ››用于个人信息保护的国内外解决方案之比较
- ››批处理文件避免关机后忘记取出光盘
- ››批处理文件判断哪些IP地址Ping不通
- ››用于生成SQL Server数据库对象脚本的选项
- ››用于监控 DB2 实例和数据库的新的 DB2 UDB 工具
- ››用于备份和恢复的SQL Server文件组
- ››用于解决Windows XP中的打印问题的资源
- ››用于截取特定长度的字符串的php函数
- ››用于正则表达式的抽象Java API
更多精彩
赞助商链接