diff --git a/Digital Signature/Add-a-digital-signature-to-an-existing-document/.NET/Add-a-digital-signature-to-an-existing-document/Data/signature.png b/Digital Signature/Add-a-digital-signature-to-an-existing-document/.NET/Add-a-digital-signature-to-an-existing-document/Data/signature.png index e700dd88..470cf510 100644 Binary files a/Digital Signature/Add-a-digital-signature-to-an-existing-document/.NET/Add-a-digital-signature-to-an-existing-document/Data/signature.png and b/Digital Signature/Add-a-digital-signature-to-an-existing-document/.NET/Add-a-digital-signature-to-an-existing-document/Data/signature.png differ diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation.slnx b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation.slnx new file mode 100644 index 00000000..d888825c --- /dev/null +++ b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Input.pdf b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Input.pdf new file mode 100644 index 00000000..b49af593 Binary files /dev/null and b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Input.pdf differ diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate0.cer b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate0.cer new file mode 100644 index 00000000..be0a2671 Binary files /dev/null and b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate0.cer differ diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate1.cer b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate1.cer new file mode 100644 index 00000000..484a6529 Binary files /dev/null and b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Intermediate1.cer differ diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Root.cer b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Root.cer new file mode 100644 index 00000000..ce27297a Binary files /dev/null and b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Data/Root.cer differ diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Digital-Signature-Validation.csproj b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Digital-Signature-Validation.csproj new file mode 100644 index 00000000..369e3baf --- /dev/null +++ b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Digital-Signature-Validation.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + Digital_Signature_Validation + enable + enable + + + + + + + diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Output/gitkeep.txt b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Output/gitkeep.txt new file mode 100644 index 00000000..e69de29b diff --git a/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Program.cs b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Program.cs new file mode 100644 index 00000000..422fe9ec --- /dev/null +++ b/Digital Signature/Digital-Signature-Validation/.NET/Digital-Signature-Validation/Program.cs @@ -0,0 +1,112 @@ +using Syncfusion.Pdf.Parsing; +using Syncfusion.Pdf.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +string dataPath = Path.GetFullPath(@"Data/"); + +// Load signed PDF document +using PdfLoadedDocument ldoc = new PdfLoadedDocument(Path.GetFullPath(@"Data/Input.pdf")); + +// Get signature field +PdfLoadedSignatureField lSigFld = ldoc.Form.Fields[0] as PdfLoadedSignatureField; + +// Root and Intermediate Certificates +X509CertificateCollection collection = new X509CertificateCollection(); + +string[] certificates = +{ + "Root.cer", + "Intermediate0.cer", + "Intermediate1.cer" +}; + +foreach (string certFile in certificates) +{ + byte[] certData = File.ReadAllBytes(Path.Combine(dataPath, certFile)); + + X509Certificate2 certificate = new X509Certificate2(certData); + + collection.Add(certificate); +} + +// Validate signature +PdfSignatureValidationResult result = lSigFld.ValidateSignature(collection); + +StringBuilder builder = new StringBuilder(); + +builder.AppendLine("Signature is " + result.SignatureStatus); +builder.AppendLine(); +builder.AppendLine("----------Validation Summary----------"); +builder.AppendLine(); + +// Modified check +if (result.IsDocumentModified) +{ + builder.AppendLine("The document has been altered or corrupted since the signature was applied."); +} +else +{ + builder.AppendLine("The document has not been modified since the signature was applied."); +} + +// Certificate details +builder.AppendLine("Digitally signed by: " + lSigFld.Signature.Certificate.IssuerName); + +builder.AppendLine("Valid From: " + lSigFld.Signature.Certificate.ValidFrom); + +builder.AppendLine("Valid To: " + lSigFld.Signature.Certificate.ValidTo); + +builder.AppendLine("Signature Algorithm: " + result.SignatureAlgorithm); + +builder.AppendLine("Hash Algorithm: " + result.DigestAlgorithm); + +// Revocation details +builder.AppendLine("OCSP Revocation Status: " + result.RevocationResult.OcspRevocationStatus); + +if (result.RevocationResult.OcspRevocationStatus == RevocationStatus.None && result.RevocationResult.IsRevokedCRL) +{ + builder.AppendLine("CRL is revoked."); +} + +builder.AppendLine(); +builder.AppendLine("--------Revocation Information---------"); +builder.AppendLine(); + +foreach (PdfSignerCertificate signerCertificate in result.SignerCertificates) +{ + if (signerCertificate.OcspCertificate != null) + { + builder.AppendLine("------------OCSP Certificate-------------"); + + foreach (X509Certificate2 item in signerCertificate.OcspCertificate.Certificates) + { + builder.AppendLine("The OCSP Response was signed by: " + item.SubjectName.Name); + } + + builder.AppendLine("Is Embedded: " + signerCertificate.OcspCertificate.IsEmbedded); + + builder.AppendLine("Valid From: " + signerCertificate.OcspCertificate.ValidFrom); + + builder.AppendLine("Valid To: " + signerCertificate.OcspCertificate.ValidTo); + + builder.AppendLine(); + } + + if (signerCertificate.CrlCertificate != null) + { + builder.AppendLine("------------CRL Certificate--------------"); + + foreach (X509Certificate2 item in signerCertificate.CrlCertificate.Certificates) + { + builder.AppendLine("The CRL was signed by: " + item.SubjectName.Name); + } + + builder.AppendLine("Is Embedded: " + signerCertificate.CrlCertificate.IsEmbedded); + builder.AppendLine("Valid From: " + signerCertificate.CrlCertificate.ValidFrom); + builder.AppendLine("Valid To: " + signerCertificate.CrlCertificate.ValidTo); + builder.AppendLine(); + } +} +//Save to file +File.WriteAllText(Path.GetFullPath(@"Output/Output.txt"),builder.ToString()); \ No newline at end of file diff --git a/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Output/.gitkeep b/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Program.cs b/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Program.cs index 8bc444f2..8098de48 100644 --- a/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Program.cs +++ b/Text Extraction/Extract-text-from-the-entire-PDF-document/.NET/Extract-text-from-the-entire-PDF-document/Program.cs @@ -11,6 +11,6 @@ { extractedText += page.ExtractText(); } - // Display the extracted text in the console - Console.WriteLine("Extracted text from the entire document: " + extractedText); + // Save the extracted text content to a TXT file + File.WriteAllText(Path.GetFullPath(@"Output/Output.txt"), extractedText); }