Beispiel #1
0
		/// <summary>
		/// Initializes a new <see cref="CertificateChain"/> instance from a <see cref="Certificate"/>.
		/// </summary>
		/// <param name="cert">The certificate for which a chain is being built.</param>
		/// <param name="additional">Any additional store to be searched for supporting certificates and CTLs.</param>
		/// <param name="options">Additional certificate chain options.</param>
		/// <remarks><paramref name="cert"/> will always be the end certificate.</remarks>
		/// <exception cref="ArgumentNullException"><paramref name="cert"/> is a null reference (<b>Nothing</b> in Visual Basic).</exception>
		/// <exception cref="CertificateException">An error occurs while building the certificate chain.</exception>
		public CertificateChain(Certificate cert, CertificateStore additional, CertificateChainOptions options) {
			if (cert == null)
				throw new ArgumentNullException();
			IntPtr addstore = additional == null ? IntPtr.Zero : additional.Handle;
			ChainParameters para = new ChainParameters();
			para.cbSize = Marshal.SizeOf(typeof(ChainParameters));
			para.RequestedUsagecUsageIdentifier = 0;
			para.RequestedUsagedwType = 0;
			para.RequestedUsagergpszUsageIdentifier = IntPtr.Zero;
			if (SspiProvider.CertGetCertificateChain(IntPtr.Zero, cert.Handle, IntPtr.Zero, addstore, ref para, (int)options, IntPtr.Zero, ref m_Handle) == 0)
				throw new CertificateException("Unable to find the certificate chain.");
			m_Certificate = cert;
		}
        /// <summary>
        /// Initializes a new <see cref="CertificateChain"/> instance from a <see cref="Certificate"/>.
        /// </summary>
        /// <param name="cert">The certificate for which a chain is being built.</param>
        /// <param name="additional">Any additional store to be searched for supporting certificates and CTLs.</param>
        /// <param name="options">Additional certificate chain options.</param>
        /// <remarks><paramref name="cert"/> will always be the end certificate.</remarks>
        /// <exception cref="ArgumentNullException"><paramref name="cert"/> is a null reference (<b>Nothing</b> in Visual Basic).</exception>
        /// <exception cref="CertificateException">An error occurs while building the certificate chain.</exception>
        public CertificateChain(Certificate cert, CertificateStore additional, CertificateChainOptions options)
        {
            if (cert == null)
            {
                throw new ArgumentNullException();
            }
            IntPtr          addstore = additional == null ? IntPtr.Zero : additional.Handle;
            ChainParameters para     = new ChainParameters();

            para.cbSize = Marshal.SizeOf(typeof(ChainParameters));
            para.RequestedUsagecUsageIdentifier     = 0;
            para.RequestedUsagedwType               = 0;
            para.RequestedUsagergpszUsageIdentifier = IntPtr.Zero;
            if (SspiProvider.CertGetCertificateChain(IntPtr.Zero, cert.Handle, IntPtr.Zero, addstore, ref para, (int)options, IntPtr.Zero, ref m_Handle) == 0)
            {
                throw new CertificateException("Unable to find the certificate chain.");
            }
            m_Certificate = cert;
        }