internal static SafeCertContextHandle GetCertContext(X509Certificate2 certificate) { SafeCertContextHandle safeCertContext = CAPI.CertDuplicateCertificateContext(certificate.Handle); GC.KeepAlive(certificate); return(safeCertContext); }
internal unsafe X509ExtensionCollection(SafeCertContextHandle safeCertContextHandle) { using (SafeCertContextHandle certContext = CAPI.CertDuplicateCertificateContext(safeCertContextHandle)) { CAPI.CERT_CONTEXT pCertContext = *((CAPI.CERT_CONTEXT *)certContext.DangerousGetHandle()); CAPI.CERT_INFO pCertInfo = (CAPI.CERT_INFO)Marshal.PtrToStructure(pCertContext.pCertInfo, typeof(CAPI.CERT_INFO)); uint cExtensions = pCertInfo.cExtension; IntPtr rgExtensions = pCertInfo.rgExtension; for (uint index = 0; index < cExtensions; index++) { X509Extension extension = new X509Extension(new IntPtr((long)rgExtensions + (index * Marshal.SizeOf(typeof(CAPI.CERT_EXTENSION))))); X509Extension customExtension = CryptoConfig.CreateFromName(extension.Oid.Value) as X509Extension; if (customExtension != null) { customExtension.CopyFrom(extension); extension = customExtension; } Add(extension); } } }
internal unsafe X509ExtensionCollection(System.Security.Cryptography.SafeCertContextHandle safeCertContextHandle) { this.m_list = new ArrayList(); using (System.Security.Cryptography.SafeCertContextHandle handle = CAPI.CertDuplicateCertificateContext(safeCertContextHandle)) { CAPIBase.CERT_CONTEXT cert_context = *((CAPIBase.CERT_CONTEXT *)handle.DangerousGetHandle()); CAPIBase.CERT_INFO cert_info = (CAPIBase.CERT_INFO)Marshal.PtrToStructure(cert_context.pCertInfo, typeof(CAPIBase.CERT_INFO)); uint cExtension = cert_info.cExtension; IntPtr rgExtension = cert_info.rgExtension; for (uint i = 0; i < cExtension; i++) { X509Extension asnEncodedData = new X509Extension(new IntPtr(((long)rgExtension) + (i * Marshal.SizeOf(typeof(CAPIBase.CERT_EXTENSION))))); X509Extension extension2 = CryptoConfig.CreateFromName(asnEncodedData.Oid.Value) as X509Extension; if (extension2 != null) { extension2.CopyFrom(asnEncodedData); asnEncodedData = extension2; } this.Add(asnEncodedData); } } }
internal static System.Security.Cryptography.SafeCertContextHandle GetCertContext(X509Certificate2 certificate) { System.Security.Cryptography.SafeCertContextHandle certContextHandle = CAPI.CertDuplicateCertificateContext(certificate.Handle); GC.KeepAlive((object)certificate); return(certContextHandle); }
public X509Certificate2(string fileName, string password) : base(fileName, password) { this.m_safeCertContext = System.Security.Cryptography.SafeCertContextHandle.InvalidHandle; this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public X509Certificate2(byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags) : base(rawData, password, keyStorageFlags) { this.m_safeCertContext = System.Security.Cryptography.SafeCertContextHandle.InvalidHandle; this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
protected X509Certificate2(SerializationInfo info, StreamingContext context) : base(info, context) { this.m_safeCertContext = System.Security.Cryptography.SafeCertContextHandle.InvalidHandle; this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public X509Certificate2(byte[] rawData, SecureString password) : base(rawData, password) { this.m_safeCertContext = System.Security.Cryptography.SafeCertContextHandle.InvalidHandle; this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public X509Certificate2(X509Certificate certificate) : base(certificate) { this.m_safeCertContext = System.Security.Cryptography.SafeCertContextHandle.InvalidHandle; this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public override void Import(string fileName, string password, X509KeyStorageFlags keyStorageFlags) { this.Reset(); base.Import(fileName, password, keyStorageFlags); this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public override void Import(byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags) { this.Reset(); base.Import(rawData, password, keyStorageFlags); this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public override void Import(string fileName) { this.Reset(); base.Import(fileName); this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }
public override void Import(byte[] rawData) { this.Reset(); base.Import(rawData); this.m_safeCertContext = CAPI.CertDuplicateCertificateContext(base.Handle); }