Я видел аналогичный ответ на вопрос C# о том, что данные подписи хэшируются дважды, однако не уверен, почему мои данные подписи здесь.
C# PKCS7 Smartchard Digital Signature поврежден
String provider = sdk.getProviderName();
List certList = new ArrayList();
certList.add(signerCert);
Store certs = new JcaCertStore(certList);
CMSSignedDataGenerator cmsSignedDataGenerator = new CMSSignedDataGenerator();
DigestCalculatorProvider digProvider = new JcaDigestCalculatorProviderBuilder().setProvider(provider).build();
JcaSignerInfoGeneratorBuilder signerInfoGeneratorBuilder = new JcaSignerInfoGeneratorBuilder(digProvider);
ContentSigner sha256Signer = new JcaContentSignerBuilder("SHA256withRSA").setProvider(provider).build(signerKey);
cmsSignedDataGenerator.addSignerInfoGenerator(signerInfoGeneratorBuilder.build(sha256Signer, signerCert));
cmsSignedDataGenerator.addCertificates(certs);
CMSTypedData msg = new CMSProcessableByteArray(digest);
CMSSignedData cmsSignedData = cmsSignedDataGenerator.generate(msg);
Map hashes = new HashMap();
hashes.put(CMSAlgorithm.SHA256, digest);
CMSSignedData finalCMSSignedData = new CMSSignedData(hashes, cmsSignedData.getEncoded());
return finalCMSSignedData.getEncoded();`