Exemplo n.º 1
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (chain != null)
         {
             chain.Dispose();
             chain = null;
         }
         if (storeCtx != null)
         {
             storeCtx.Dispose();
             storeCtx = null;
         }
         if (untrustedChain != null)
         {
             untrustedChain.Dispose();
             untrustedChain = null;
         }
         if (untrusted != null)
         {
             foreach (var cert in untrusted)
             {
                 cert.Dispose();
             }
         }
     }
     base.Dispose(disposing);
 }
Exemplo n.º 2
0
        public void Initialize(MonoBtlsX509Store store, MonoBtlsX509Chain chain)
        {
            var ret = mono_btls_x509_store_ctx_init(
                Handle.DangerousGetHandle(),
                store.Handle.DangerousGetHandle(),
                chain.Handle.DangerousGetHandle());

            CheckError(ret);
        }
 public override bool Verify(X509Certificate2 thisCertificate)
 {
     using (var chain = new MonoBtlsX509Chain()) {
         chain.AddCertificate(x509.Copy());
         if (intermediateCerts != null)
         {
             for (int i = 0; i < intermediateCerts.Count; i++)
             {
                 var intermediate = (X509CertificateImplBtls)intermediateCerts [i];
                 chain.AddCertificate(intermediate.x509.Copy());
             }
         }
         return(MonoBtlsProvider.ValidateCertificate(chain, null));
     }
 }
Exemplo n.º 4
0
        public static MonoBtlsX509Chain GetNativeChain(X509CertificateCollection certificates)
        {
            var chain = new MonoBtlsX509Chain();

            try {
                foreach (var cert in certificates)
                {
                    using (var x509 = GetBtlsCertificate(cert))
                        chain.AddCertificate(x509);
                }
                return(chain);
            } catch {
                chain.Dispose();
                throw;
            }
        }
Exemplo n.º 5
0
        internal static bool ValidateCertificate(MonoBtlsX509Chain chain, MonoBtlsX509VerifyParam param)
        {
            using (var store = new MonoBtlsX509Store())
                using (var storeCtx = new MonoBtlsX509StoreCtx()) {
                    SetupCertificateStore(store);

                    storeCtx.Initialize(store, chain);

                    if (param != null)
                    {
                        storeCtx.SetVerifyParam(param);
                    }

                    var ret = storeCtx.Verify();

                    return(ret == 1);
                }
        }
Exemplo n.º 6
0
		internal X509ChainImplBtls (MonoBtlsX509StoreCtx storeCtx)
		{
			this.storeCtx = storeCtx.Copy ();
			this.chain = storeCtx.GetChain ();

			policy = new X509ChainPolicy ();

			untrustedChain = storeCtx.GetUntrusted ();

			if (untrustedChain != null) {
				untrusted = new X509Certificate2Collection ();
				policy.ExtraStore = untrusted;
				for (int i = 0; i < untrustedChain.Count; i++) {
					var cert = untrustedChain.GetCertificate (i);
					using (var impl = new X509CertificateImplBtls (cert))
						untrusted.Add (new X509Certificate2 (impl));
				}
			}
		}
Exemplo n.º 7
0
        internal X509ChainImplBtls(MonoBtlsX509StoreCtx storeCtx)
        {
            this.storeCtx = storeCtx.Copy();
            this.chain    = storeCtx.GetChain();

            policy = new X509ChainPolicy();

            untrustedChain = storeCtx.GetUntrusted();

            if (untrustedChain != null)
            {
                untrusted         = new X509Certificate2Collection();
                policy.ExtraStore = untrusted;
                for (int i = 0; i < untrustedChain.Count; i++)
                {
                    var cert = untrustedChain.GetCertificate(i);
                    using (var impl = new X509CertificateImplBtls(cert))
                        untrusted.Add(new X509Certificate2(impl));
                }
            }
        }
Exemplo n.º 8
0
        internal static bool ValidateCertificate(MonoBtlsX509Chain chain, MonoBtlsX509VerifyParam param)
        {
            using (var store = new MonoBtlsX509Store())
                using (var storeCtx = new MonoBtlsX509StoreCtx()) {
                    /*
                     * We're called from X509Certificate2.Verify() via X509CertificateImplBtls.Verify().
                     *
                     * Use the default settings and assume client-mode.
                     */
                    SetupCertificateStore(store, MonoTlsSettings.DefaultSettings, false);

                    storeCtx.Initialize(store, chain);

                    if (param != null)
                    {
                        storeCtx.SetVerifyParam(param);
                    }

                    var ret = storeCtx.Verify();

                    return(ret == 1);
                }
        }
Exemplo n.º 9
0
        public static X509Chain GetManagedChain(MonoBtlsX509Chain chain)
        {
            var impl = new X509ChainImplBtls(chain);

            return(new X509Chain(impl));
        }
Exemplo n.º 10
0
		public static MonoBtlsX509Chain GetNativeChain (X509CertificateCollection certificates)
		{
			var chain = new MonoBtlsX509Chain ();
			try {
				foreach (var cert in certificates) {
					using (var x509 = GetBtlsCertificate (cert))
						chain.AddCertificate (x509);
				}
				return chain;
			} catch {
				chain.Dispose ();
				throw;
			}
		}
Exemplo n.º 11
0
 internal X509ChainImplBtls()
 {
     chain    = new MonoBtlsX509Chain();
     elements = new X509ChainElementCollection();
     policy   = new X509ChainPolicy();
 }
Exemplo n.º 12
0
 internal X509ChainImplBtls(MonoBtlsX509Chain chain)
 {
     this.chain = chain.Copy();
     policy     = new X509ChainPolicy();
 }
Exemplo n.º 13
0
		public override bool Verify (X509Certificate2 thisCertificate)
		{
			using (var chain = new MonoBtlsX509Chain ()) {
				chain.AddCertificate (x509.Copy ());
				if (intermediateCerts != null) {
					for (int i = 0; i < intermediateCerts.Count; i++) {
						var intermediate = (X509CertificateImplBtls)intermediateCerts [i];
						chain.AddCertificate (intermediate.x509.Copy ());
					}
				}
				return MonoBtlsProvider.ValidateCertificate (chain, null);
			}
		}
Exemplo n.º 14
0
		protected override void Dispose (bool disposing)
		{
			if (disposing) {
				if (chain != null) {
					chain.Dispose ();
					chain = null;
				}
				if (storeCtx != null) {
					storeCtx.Dispose ();
					storeCtx = null;
				}
				if (untrustedChain != null) {
					untrustedChain.Dispose ();
					untrustedChain = null;
				}
				if (untrusted != null) {
					foreach (var cert in untrusted)
						cert.Dispose ();
					untrusted = null;
				}
				if (certificates != null) {
					foreach (var cert in certificates)
						cert.Dispose ();
					certificates = null;
				}
			}
			base.Dispose (disposing);
		}
Exemplo n.º 15
0
		internal static bool ValidateCertificate (MonoBtlsX509Chain chain, MonoBtlsX509VerifyParam param)
		{
			using (var store = new MonoBtlsX509Store ())
			using (var storeCtx = new MonoBtlsX509StoreCtx ()) {
				SetupCertificateStore (store);

				storeCtx.Initialize (store, chain);

				if (param != null)
					storeCtx.SetVerifyParam (param);

				var ret = storeCtx.Verify ();

				return ret == 1;
			}
		}
Exemplo n.º 16
0
		internal X509ChainImplBtls (MonoBtlsX509Chain chain)
		{
			this.chain = chain.Copy ();
			policy = new X509ChainPolicy ();
		}
Exemplo n.º 17
0
		public static X509Chain GetManagedChain (MonoBtlsX509Chain chain)
		{
			var impl = new X509ChainImplBtls (chain);
			return new X509Chain (impl);
		}
Exemplo n.º 18
0
		internal X509ChainImplBtls ()
		{
			chain = new MonoBtlsX509Chain ();
			elements = new X509ChainElementCollection ();
			policy = new X509ChainPolicy ();
		}
Exemplo n.º 19
0
		public void Initialize (MonoBtlsX509Store store, MonoBtlsX509Chain chain)
		{
			var ret = mono_btls_x509_store_ctx_init (
				Handle.DangerousGetHandle (),
				store.Handle.DangerousGetHandle (),
				chain.Handle.DangerousGetHandle ());
			CheckError (ret);
		}