Я собираюсь подписать PDF с сайта клиента.
Я создам веб-сервис для генерации хеша PDF с использованием itext5.5 (Java), а затем отправлю клиентскому агенту подписать этот хеш (с помощью iTextSharp-5.5) и отправлю обратно подписанный хеш в веб-сервис для закрытия состояние подписи.
Но подписанный PDF получил следующую ошибку при проверке подписи:
Error during signature verification.
Error encountered while BER decoding:
на стороне сервера (Java):
ExternalDigest externalDigest = new BouncyCastleDigest();
PdfPKCS7 sign = new PdfPKCS7(null, chain, "SHA1", null, externalDigest, false);
InputStream data = appearance.getRangeStream();
byte[] digestHash = DigestAlgorithms.digest(data, externalDigest.getMessageDigest(hashAlgorithm));
ocsp = null;
if (chain.length >= 2 && ocspClient != null) {
ocsp = ocspClient.getEncoded((X509Certificate)chain[0], (X509Certificate)chain[1], null);
}
byte[] sh = sign.getAuthenticatedAttributeBytes(digestHash, signCal, ocsp, crlBytes, SIGN_TYPE);
this.hash = digestHash;
this.hashForSign = sh;
в C #, я использовал следующий код для подписи:
IExternalSignature es = new X509Certificate2Signature(cert, "SHA1");
byte[] signedHash = es.Sign(hashForSign);
Где this.hashForSign - это хэш, сгенерированный из Java, а signatureHash подписан в C #.
Пожалуйста, помогите!
С наилучшими пожеланиями,
Eric