Org.BouncyCastle.Cms.CmsSignedData.GetSignerInfos C# (CSharp) Method

GetSignerInfos() public method

public GetSignerInfos ( ) : SignerInformationStore
return SignerInformationStore
		public SignerInformationStore GetSignerInfos()
		{
			if (signerInfoStore == null)
			{
                IList signerInfos = Platform.CreateArrayList();
				Asn1Set s = signedData.SignerInfos;

				foreach (object obj in s)
				{
					SignerInfo info = SignerInfo.GetInstance(obj);
					DerObjectIdentifier contentType = signedData.EncapContentInfo.ContentType;

					if (hashes == null)
					{
						signerInfos.Add(new SignerInformation(info, contentType, signedContent, null));
					}
					else
					{
						byte[] hash = (byte[]) hashes[info.DigestAlgorithm.ObjectID.Id];

						signerInfos.Add(new SignerInformation(info, contentType, null, new BaseDigestCalculator(hash)));
					}
				}

				signerInfoStore = new SignerInformationStore(signerInfos);
			}

			return signerInfoStore;
		}

Usage Example

Beispiel #1
1
        static void Main(string[] args)
        {
            //if (args.Length > 0)
            //string fullFileName = Path.GetFullPath(args[0]);
            foreach (string fileName in Directory.GetFiles("p7m"))
            {

                FileStream file = new FileStream(fileName, FileMode.Open);
                bool isValid = true;
                Console.WriteLine("File to decrypt: " + fileName);
                try
                {
                    CmsSignedData signedFile = new CmsSignedData(file);
                    IX509Store certStore = signedFile.GetCertificates("Collection");
                    ICollection certs = certStore.GetMatches(new X509CertStoreSelector());
                    SignerInformationStore signerStore = signedFile.GetSignerInfos();
                    ICollection signers = signerStore.GetSigners();

                    foreach (object tempCertification in certs)
                    {
                        X509Certificate certification = tempCertification as X509Certificate;

                        foreach (object tempSigner in signers)
                        {
                            SignerInformation signer = tempSigner as SignerInformation;
                            if (!signer.Verify(certification.GetPublicKey()))
                            {
                                isValid = false;
                                break;
                            }
                        }
                    }
                    string newFileName = Path.Combine(Directory.CreateDirectory("p7m-extracted").Name, Path.GetFileNameWithoutExtension(fileName));
                    using (var fileStream = new FileStream(newFileName, FileMode.Create, FileAccess.Write))
                    {
                        signedFile.SignedContent.Write(fileStream);
                        Console.WriteLine("File decrypted: " + newFileName);
                    }

                }
                catch (Exception ex)
                {
                    isValid = false;
                }

                Console.WriteLine("File valid: " + isValid);

            ;            }
            Console.ReadLine();
        }
All Usage Examples Of Org.BouncyCastle.Cms.CmsSignedData::GetSignerInfos