Esempio n. 1
0
        public KeyInfoX509Data(X509Certificate cert, IEnumerable <X509Certificate> additional, X509IncludeOption includeOption)
        {
            if (cert == null)
            {
                throw new ArgumentNullException(nameof(cert));
            }

            X509Certificate         certificate = CryptoUtils.CloneCertificate(cert);
            IList <X509Certificate> chain       = null;

            switch (includeOption)
            {
            case X509IncludeOption.ExcludeRoot:
                chain = CryptoUtils.BuildCertificateChain(cert, additional);

                for (int index = 0; index < (CryptoUtils.IsSelfSigned(chain) ? 1 : chain.Count - 1); index++)
                {
                    AddCertificate(chain[index]);
                }
                break;

            case X509IncludeOption.EndCertOnly:
                AddCertificate(certificate);
                break;

            case X509IncludeOption.WholeChain:
                chain = CryptoUtils.BuildCertificateChain(cert, additional);

                foreach (var element in chain)
                {
                    AddCertificate(element);
                }
                break;
            }
        }