in jsign-core/src/main/java/net/jsign/AuthenticodeSigner.java [368:397]
protected CMSSignedData createSignedData(Signable file) throws Exception {
// compute the signature
AuthenticodeSignedDataGenerator generator = createSignedDataGenerator();
CMSSignedData sigData = generator.generate(AuthenticodeObjectIdentifiers.SPC_INDIRECT_DATA_OBJID, file.createIndirectData(digestAlgorithm));
// verify the signature
DigestCalculatorProvider digestCalculatorProvider = new AuthenticodeDigestCalculatorProvider();
SignerInformationVerifier verifier = new JcaSignerInfoVerifierBuilder(digestCalculatorProvider).build(chain[0].getPublicKey());
sigData.getSignerInfos().iterator().next().verify(verifier);
// timestamping
if (timestamping) {
Timestamper ts = timestamper;
if (ts == null) {
ts = Timestamper.create(tsmode);
}
if (tsaurlOverride != null) {
ts.setURLs(tsaurlOverride);
}
if (timestampingRetries != -1) {
ts.setRetries(timestampingRetries);
}
if (timestampingRetryWait != -1) {
ts.setRetryWait(timestampingRetryWait);
}
sigData = ts.timestamp(digestAlgorithm, sigData);
}
return sigData;
}