https://www.c-sharpcorner.com/article/visual-studio-creating-and-managing-digital-certificates-in-c-sharp/ https://www.programmersought.com/article/757711306/ var store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); var certificates = store.Certificates; foreach (var certificate in certificates) { var friendlyName = certificate.FriendlyName; var xname = certificate.GetName(); //obsolete Console.WriteLine(friendlyName); } / STEP 1 mycerRoot = generateRootCertV1("MY_CA"); // Tried also generateRootCertV2(BouncyCastle) addCertToStore(mycerRoot, StoreName.Root, StoreLocation.LocalMachine); // STEP 2 mycer = generateCert("127.0.0.1", mycerRoot); // ?????? <-- Something like that How to implement generateCert?? addCertToStore(mycer, StoreName.My, StoreLocation.LocalMachine); public static Org.BouncyCastle.X509.X509Certificate generateRootCertV2(string certName) { X509V1CertificateGenerator certGen = new X509V1CertificateGenerator(); X509Name CN = new X509Name("CN=" + certName); RsaKeyPairGenerator keypairgen = new RsaKeyPairGenerator(); keypairgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024)); AsymmetricCipherKeyPair keypair = keypairgen.GenerateKeyPair(); certGen.SetSerialNumber(BigInteger.ProbablePrime(120, new Random())); certGen.SetIssuerDN(CN); certGen.SetNotAfter(DateTime.MaxValue); certGen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0))); certGen.SetSubjectDN(CN); certGen.SetPublicKey(keypair.Public); certGen.SetSignatureAlgorithm("MD5WithRSA"); Org.BouncyCastle.X509.X509Certificate newCert = certGen.Generate(keypair.Private); return newCert; } public static X509Certificate2 GenerateRootCertV1(string HostNameOrIP_or_CertName) { X509Certificate2 cert = null; try { using (CryptContext ctx = new CryptContext()) { ctx.Open(); cert = ctx.CreateSelfSignedCertificate( new SelfSignedCertProperties { IsPrivateKeyExportable = true, KeyBitLength = 4096, Name = new X500DistinguishedName("cn=" + HostNameOrIP_or_CertName), ValidFrom = DateTime.Today.AddDays(-1), ValidTo = DateTime.Today.AddYears(20), }); } } catch (Exception ex) { } return cert; } public static bool addCertToStore(X509Certificate2 cert, StoreName st, StoreLocation sl) { bool bRet = false; try { X509Store store = new X509Store(st, sl); store.Open(OpenFlags.ReadWrite); if (cert != null) { byte[] pfx = cert.Export(X509ContentType.Pfx); cert = new X509Certificate2(pfx, (string)null, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet); if (!certExists(store, cert.SubjectName.Name)) { store.Add(cert); bRet = true; } } store.Close(); } catch { } return bRet; } c# .net PdfLoadedDocument document = new PdfLoadedDocument("D:\\How to set Variable in eBMR Software.pdf"); //Load digital ID with password. PdfCertificate certificate = new PdfCertificate("D:\\fred.pfx", "apples"); //Create a signature with loaded digital ID. PdfSignature signature = new PdfSignature(document, document.Pages[0], certificate, "DigitalSignature"); //Set bounds to the signature. signature.Bounds = new System.Drawing.RectangleF(40, 40, 350, 100); //Load image from file. PdfImage image = PdfImage.FromFile("D:\\signature.png"); //Create a font to draw text. PdfStandardFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 15); //Drawing text, shape, and image into the signature appearance. signature.Appearance.Normal.Graphics.DrawRectangle(PdfPens.Black, PdfBrushes.White, new System.Drawing.RectangleF(50, 0, 300, 100)); signature.Appearance.Normal.Graphics.DrawImage(image, 0, 0, 100, 100); signature.Appearance.Normal.Graphics.DrawString("Digitally Signed by SOHAM", font, PdfBrushes.Black, 120, 17); signature.Appearance.Normal.Graphics.DrawString("Reason: Cheing signature", font, PdfBrushes.Black, 120, 39); signature.Appearance.Normal.Graphics.DrawString("Location: Ahmedabad", font, PdfBrushes.Black, 120, 60); //Save the PDF document. document.Save("D:\\SignedAppearance.pdf"); //Close the document. document.Close(true); using Syncfusion.Pdf.Graphics; using Syncfusion.Pdf.Parsing; using Syncfusion.Pdf.Security; https://www.gemboxsoftware.com/pdf/examples/c-sharp-vb-net-pdf-digital-signature/1102 public Image byteArrayToImage(byte[] bytesArr) { using (MemoryStream memstr = new MemoryStream(bytesArr)) { Image img = Image.FromStream(memstr); return img; } }