iText7使用IExternalSignatureContainer进行签名和验签
时间: 2023-07-11 12:18:55 浏览: 53
好的,关于使用 iText7 进行签名和验签,可以使用 IExternalSignatureContainer 接口进行操作。该接口可以用于实现自定义的数字签名算法。
具体操作步骤如下:
1. 实现 IExternalSignatureContainer 接口,该接口包含两个方法:
```
public byte[] sign(InputStream data);
public void modifySigningDictionary(PdfDictionary signDic);
```
2. 在实现类中实现 sign 方法,该方法用于计算签名值。在该方法中,可以使用自定义的数字签名算法进行签名操作。
3. 在实现类中实现 modifySigningDictionary 方法,该方法用于修改签名字典中的值。在该方法中,可以设置签名算法、证书等相关信息。
4. 调用 PdfSigner 类中的 signDetached 方法进行签名,该方法接受三个参数:
```
public void signDetached(IExternalSignatureContainer externalSignatureContainer,
IExternalDigest externalDigest,
byte[] documentBytes,
Collection<CrlClient> crlList,
OcspClient ocspClient,
TSAClient tsaClient,
int estimatedSize,
MakeSignature.CryptoStandard sigtype,
PdfName fieldname,
PdfSignatureAppearance appearance,
Collection<ICrlClient> crlClients)
```
其中,externalSignatureContainer 参数为实现了 IExternalSignatureContainer 接口的类的实例,externalDigest 参数为实现了 IExternalDigest 接口的类的实例,documentBytes 参数为 PDF 文件的二进制数据。
5. 调用 PdfSigner 类中的 verifySignature 方法进行验签,该方法接受一个参数:
```
public void verifySignature(IExternalSignatureVerifier externalSigVerifier)
```
其中,externalSigVerifier 参数为实现了 IExternalSignatureVerifier 接口的类的实例,该类用于验证签名。
以上就是使用 iText7 进行签名和验签的基本步骤。