SignerInfoGenerator
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Cms
{
public class SignerInfoGenerator
{
private readonly SignerIdentifier m_sigID;
private readonly ISignatureFactory m_signatureFactory;
private readonly CmsAttributeTableGenerator m_signedGen;
private readonly CmsAttributeTableGenerator m_unsignedGen;
private readonly X509Certificate m_certificate;
public X509Certificate Certificate => m_certificate;
public int GeneratedVersion {
get {
if (!m_sigID.IsTagged)
return 1;
return 3;
}
}
public ISignatureFactory SignatureFactory => m_signatureFactory;
public CmsAttributeTableGenerator SignedAttributeTableGenerator => m_signedGen;
public SignerIdentifier SignerID => m_sigID;
public CmsAttributeTableGenerator UnsignedAttributeTableGenerator => m_unsignedGen;
internal SignerInfoGenerator(SignerIdentifier sigID, ISignatureFactory signatureFactory, CmsAttributeTableGenerator signedGen, CmsAttributeTableGenerator unsignedGen, X509Certificate certificate)
{
m_sigID = sigID;
m_signatureFactory = signatureFactory;
m_signedGen = signedGen;
m_unsignedGen = unsignedGen;
m_certificate = certificate;
}
public SignerInfoGeneratorBuilder NewBuilder()
{
SignerInfoGeneratorBuilder signerInfoGeneratorBuilder = new SignerInfoGeneratorBuilder();
signerInfoGeneratorBuilder.WithSignedAttributeGenerator(m_signedGen);
signerInfoGeneratorBuilder.WithUnsignedAttributeGenerator(m_unsignedGen);
signerInfoGeneratorBuilder.SetDirectSignature(m_signedGen == null);
return signerInfoGeneratorBuilder;
}
}
}