我正在构建一个必须符合欧盟数字签名指令的数字签名模块。
我从一个旧的但运行良好的 Java 模块开始以CAdES
格式对文档进行签名。此外,该应用程序由客户端(桌面 JAR 可执行文件)和服务器部分组成。客户端仅被开发用于与连接到 USB 读卡器的智能卡进行交互,其余的发生在 Web 服务器上。
当前的签名客户端支持两种对文件进行签名和时间戳记的方式:我可以使用“签名和时间戳记”功能,或者我可以先对文档进行签名,然后再为其添加时间戳记。
从法律的角度来看,两者都产生相同的结果。
我的问题是:从技术的角度来看,当我用 CAdES 签署文件(RFC 5126,140 页我无法全部阅读)时,输出文件是否正确,当我使用组合的“符号和时间戳”功能或按顺序使用这两个功能?
让我换个说法:根据标准是否不可能有一个既代表数字签名又代表时间戳的附件?标准是否要求对已签名的文件加时间戳,反之亦然?
我想要实现的是在客户端签署文档(使用智能卡),然后在服务器上为文件添加时间戳(不接触旧的客户端代码)并产生与我在客户端上对文件进行签名和时间戳相同的确切结果。