From 0a3151163432e319c02a23c2005393833ac1ff55 Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Mon, 1 Sep 2025 18:07:51 +0530 Subject: [PATCH] commit code samples --- ...rieve-signer-data-from-the-. p7m-files.sln | 25 ++++++++ .../Data/XCORE-DocumentoTest.pdf.p7m | Bin 0 -> 12163 bytes ...ve-signer-data-from-the-. p7m-files.csproj | 15 +++++ .../Program.cs | 59 ++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.sln create mode 100644 Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Data/XCORE-DocumentoTest.pdf.p7m create mode 100644 Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.csproj create mode 100644 Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Program.cs diff --git a/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.sln b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.sln new file mode 100644 index 00000000..72ffeef4 --- /dev/null +++ b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36401.2 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "How-to-retrieve-signer-data-from-the-. p7m-files", "How-to-retrieve-signer-data-from-the-. p7m-files\How-to-retrieve-signer-data-from-the-. p7m-files.csproj", "{F0EB3137-9B02-4781-8770-250AAECA4DC6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F0EB3137-9B02-4781-8770-250AAECA4DC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0EB3137-9B02-4781-8770-250AAECA4DC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0EB3137-9B02-4781-8770-250AAECA4DC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0EB3137-9B02-4781-8770-250AAECA4DC6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4CB798B6-B529-4ED0-8F9E-C5F26579318D} + EndGlobalSection +EndGlobal diff --git a/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Data/XCORE-DocumentoTest.pdf.p7m b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Data/XCORE-DocumentoTest.pdf.p7m new file mode 100644 index 0000000000000000000000000000000000000000..5e4cd0ba90ee4012e3da2b1657a6b1a140e00d33 GIT binary patch literal 12163 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 BF*pDK literal 0 HcmV?d00001 diff --git a/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.csproj b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.csproj new file mode 100644 index 00000000..5c7cfc79 --- /dev/null +++ b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + How_to_retrieve_signer_data_from_the_._p7m_files + enable + enable + + + + + + + diff --git a/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Program.cs b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Program.cs new file mode 100644 index 00000000..4cc47eed --- /dev/null +++ b/Digital Signature/How-to-retrieve-signer-data-from-the-. p7m-files/How-to-retrieve-signer-data-from-the-. p7m-files/Program.cs @@ -0,0 +1,59 @@ +using System.Security.Cryptography; +using System.Security.Cryptography.Pkcs; +using System.Security.Cryptography.X509Certificates; + +namespace How_to_retrieve_signer_data_from_the_. p7m_files +{ + internal class Program + { + static void Main(string[] args) + { + // Load the signed CMS (assumes signedCmsBytes contains the Signed CMS data) + byte[] signedCmsBytes = File.ReadAllBytes(Path.GetFullPath("Data/XCORE-DocumentoTest.pdf.p7m")); + + SignedCms signedCms = new SignedCms(); + + // Decode the Signed CMS data + signedCms.Decode(signedCmsBytes); + + // Verify the signature without considering the certificate chain + signedCms.CheckSignature(true); + + // Extract the original content + byte[] originalMessage = signedCms.ContentInfo.Content; + File.WriteAllBytes(Path.GetFullPath("Data/Decoded.pdf"), originalMessage); + + // Extract signer information + foreach (SignerInfo signerInfo in signedCms.SignerInfos) + { + // Get the signing certificate + X509Certificate2 signerCertificate = signerInfo.Certificate; + + // Extract signer's name + string signerName = signerCertificate?.Subject ?? "Unknown Signer"; + Console.WriteLine($"Signer Name: {signerName}"); + + // Extract signing date (signing time attribute) + Pkcs9SigningTime signingTime = null; + foreach (var data in from CryptographicAttributeObject attr in signerInfo.SignedAttributes + from AsnEncodedData data in attr.Values + where data is Pkcs9SigningTime + select data) + { + signingTime = (Pkcs9SigningTime)data; + break; + } + + if (signingTime != null) + { + Console.WriteLine($"Signing Time: {signingTime.SigningTime}"); + } + else + { + Console.WriteLine("Signing Time: Not available in the attributes."); + } + } + } + } + +}