Buongiorno,
sto avendo tante difficoltà nella firma del file da depositare (previa cifratura) su sftp.
Il mio tool utilizza Bouncy Castle per la firma e la cifratura ma SOGEI mi dice che cifratura è OK ma verifica firma fallisce.
La cosa strana è che verificando il file firmato così come da loro procedura, la firma risulta verificata
openssl smime -verify -in signature.p7m -inform der -binary -out verificato -CAfile CAEntrate.pem
qualcuno ha avuto esperienza in merito? Siete riusciti ad utilizzare BouncyCastle?
di seguito lo snippet usato
public static byte[] signData(byte[] data, X509Certificate signingCertificate, PrivateKey signingKey)
throws EncryptionException {
Validate.notNull(data);
Validate.notNull(signingCertificate);
Validate.notNull(signingKey);
List<X509Certificate> certList = new ArrayList<>();
CMSTypedData cmsData = new CMSProcessableByteArray(data);
certList.add(signingCertificate);
JcaCertStore certs;
try {
certs = new JcaCertStore(certList);
} catch (CertificateEncodingException e) {
throw new EncryptionException(e);
}
CMSSignedDataGenerator cmsGenerator = new CMSSignedDataGenerator();
ContentSigner contentSigner;
try {
contentSigner = new JcaContentSignerBuilder("SHA256withRSA").build(signingKey);
cmsGenerator.addSignerInfoGenerator(
new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder()
.setProvider(new BouncyCastleProvider())
.build())
.build(contentSigner, signingCertificate));
cmsGenerator.addCertificates(certs);
CMSSignedData cms = cmsGenerator.generate(cmsData, true);
return cms.getEncoded();
} catch (OperatorCreationException | CMSException | IOException | CertificateEncodingException e) {
throw new EncryptionException(e);
}
}