in jsign-core/src/main/java/net/jsign/asn1/authenticode/AuthenticodeSignedDataGenerator.java [42:62]
public CMSSignedData generate(ASN1ObjectIdentifier contentTypeOID, ASN1Encodable content) throws CMSException, IOException {
digests.clear();
SignerInfo signerInfo;
if (!_signers.isEmpty()) {
signerInfo = ((SignerInformation) _signers.get(0)).toASN1Structure();
} else {
CMSSignedData sigData = super.generate(new CMSProcessableByteArray(contentTypeOID, content.toASN1Primitive().getEncoded("DER")));
signerInfo = sigData.getSignerInfos().iterator().next().toASN1Structure();
}
ContentInfo encInfo = new ContentInfo(contentTypeOID, content);
ASN1Set certificates = new DERSet((ASN1Encodable[]) certs.toArray(new ASN1Encodable[0]));
ASN1Encodable signedData = new AuthenticodeSignedData(signerInfo.getDigestAlgorithm(), encInfo, certificates, signerInfo);
ContentInfo contentInfo = new ContentInfo(CMSObjectIdentifiers.signedData, signedData);
return new CMSSignedData(new CMSProcessableByteArray(contentTypeOID, content.toASN1Primitive().getEncoded("DER")), contentInfo);
}