Affecto.Pdf.Toolkit.PdfSigner.SignFile C# (CSharp) Method

SignFile() public static method

public static SignFile ( string fileName, PdfSignatureParameters parameters, IDigitalSignatureCertificateSelector certificateSelector ) : string
fileName string
parameters PdfSignatureParameters
certificateSelector IDigitalSignatureCertificateSelector
return string
        public static string SignFile(string fileName, PdfSignatureParameters parameters, IDigitalSignatureCertificateSelector certificateSelector)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentException("Filename must be given", nameof(fileName));
            }
            if (!File.Exists(fileName))
            {
                throw new ArgumentException($"File {fileName} not found.");
            }
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }
            if (certificateSelector == null)
            {
                throw new ArgumentNullException(nameof(certificateSelector));
            }

            string tempPath = string.Empty;
            try
            {
                tempPath = GetTempPath(parameters.TempFolderPath);

                string targetFilePath = GetTargetFilePath(parameters.TempFolderPath, parameters.TargetFilePath);

                var signingCertificates = CertificateHelper.GetSigningCertificates(certificateSelector);

                // Two clients for checking certificate revocation
                // * Online Certificate Status Protocol (OCSP) client
                // * Certificate Revocation Lists (CRL) client with online checking
                // Certificate will be checked when the signature is made
                OcspClientBouncyCastle oscpClient = new OcspClientBouncyCastle(null);
                List<ICrlClient> clrClients = new List<ICrlClient> { new CrlClientOnline(signingCertificates.FinalChain) };

                using (FileStream targetFileStream = new FileStream(targetFilePath, FileMode.Create))
                using (PdfReader reader = new PdfReader(fileName))
                {
                    PdfStamper stamper = PdfStamper.CreateSignature(reader, targetFileStream, '0', tempPath, true);
                    PdfSignatureAppearance appearance = GetPdfSignatureAppearance(signingCertificates, stamper, reader, parameters);

                    CreateSignature(signingCertificates, appearance, clrClients, oscpClient);
                }
                
                return targetFilePath;
            }
            finally
            {
                if (!string.IsNullOrWhiteSpace(tempPath) && File.Exists(tempPath))
                {
                    File.Delete(tempPath);
                }
            }
        }