private static int AddSignCades(AddSignCadesOptions opts) { string eidLib = string.IsNullOrEmpty(opts.LibPath) ? FindEidLibrary() : opts.LibPath; Console.WriteLine("Load: {0}", eidLib); using CardDeviceController cardDeviceController = new CardDeviceController(eidLib, CreatePinprovider(opts.UseAppPinInput)); CardSigningCertificate signedCertificate = cardDeviceController.GetSignedCertificates().Single(); using X509Certificate2 certificate = signedCertificate.GetCertificate(); Console.WriteLine("Signing certificate with subject: {0}", certificate.Subject); ICadesExternalSignature externalSignature = new CadesExternalSignature(signedCertificate); ExtendedCadesSigner signer = new ExtendedCadesSigner(opts.ContainerFile); if (!string.IsNullOrEmpty(opts.SourceFile)) { string mimeType = string.IsNullOrEmpty(opts.SourceFileMimeType) ? MimeType.GetMimeTypeFromFileName(Path.GetFileName(opts.SourceFile)) : opts.SourceFileMimeType; signer.AddFile(new FileInfo(opts.SourceFile), mimeType); } signer.CreateContainer(externalSignature, opts.DestinationFile); Console.WriteLine("Add signature to {0} and saved to {1}", Path.GetFileName(opts.ContainerFile), opts.DestinationFile); return(0); }
private static int SignPdf(SignPdfOptions opts) { string eidLib = string.IsNullOrEmpty(opts.LibPath) ? FindEidLibrary() : opts.LibPath; Console.WriteLine("Load: {0}", eidLib); using CardDeviceController cardDeviceController = new CardDeviceController(eidLib, CreatePinprovider(opts.UseAppPinInput)); CardSigningCertificate signedCertificate = cardDeviceController.GetSignedCertificates().Single(); using X509Certificate2 certificate = signedCertificate.GetCertificate(); Console.WriteLine("Signing certificate with subject: {0}", certificate.Subject); Pkcs11ExternalSignature pkcs11ExternalSignature = new Pkcs11ExternalSignature(signedCertificate); PdfSignerHelper.Sign(pkcs11ExternalSignature, certificate, opts.SourcePdf, opts.DestinationFile); Console.WriteLine("{0} signed and saved to {1}", Path.GetFileName(opts.SourcePdf), opts.DestinationFile); return(0); }