private void LoadCertificateFromFile(string fileName, object password, X509KeyStorageFlags keyStorageFlags) { if (fileName == null) { throw new ArgumentNullException("fileName"); } new FileIOPermission(FileIOPermissionAccess.Read, Path.GetFullPathInternal(fileName)).Demand(); if (X509Utils.MapContentType(X509Utils._QueryCertFileType(fileName)) == X509ContentType.Pfx && (keyStorageFlags & X509KeyStorageFlags.PersistKeySet) == X509KeyStorageFlags.PersistKeySet) { new KeyContainerPermission(KeyContainerPermissionFlags.Create).Demand(); } uint dwFlags = X509Utils.MapKeyStorageFlags(keyStorageFlags); IntPtr num = IntPtr.Zero; RuntimeHelpers.PrepareConstrainedRegions(); try { num = X509Utils.PasswordToHGlobalUni(password); X509Utils._LoadCertFromFile(fileName, num, dwFlags, (keyStorageFlags & X509KeyStorageFlags.PersistKeySet) != X509KeyStorageFlags.DefaultKeySet, ref this.m_safeCertContext); } finally { if (num != IntPtr.Zero) { Marshal.ZeroFreeGlobalAllocUnicode(num); } } }
[System.Security.SecurityCritical] // auto-generated private void LoadCertificateFromFile(string fileName, object password, X509KeyStorageFlags keyStorageFlags) { if (fileName == null) { throw new ArgumentNullException("fileName"); } Contract.EndContractBlock(); string fullPath = Path.GetFullPathInternal(fileName); new FileIOPermission(FileIOPermissionAccess.Read, fullPath).Demand(); X509ContentType contentType = X509Utils.MapContentType(X509Utils._QueryCertFileType(fileName)); #if !FEATURE_CORECLR if (contentType == X509ContentType.Pkcs12 && (keyStorageFlags & X509KeyStorageFlags.PersistKeySet) == X509KeyStorageFlags.PersistKeySet) { KeyContainerPermission kp = new KeyContainerPermission(KeyContainerPermissionFlags.Create); kp.Demand(); } #endif // !FEATURE_CORECLR uint dwFlags = X509Utils.MapKeyStorageFlags(keyStorageFlags); IntPtr szPassword = IntPtr.Zero; RuntimeHelpers.PrepareConstrainedRegions(); try { szPassword = X509Utils.PasswordToHGlobalUni(password); X509Utils._LoadCertFromFile(fileName, szPassword, dwFlags, #if FEATURE_CORECLR false, #else // FEATURE_CORECLR (keyStorageFlags & X509KeyStorageFlags.PersistKeySet) == 0 ? false : true, #endif // FEATURE_CORECLR else ref m_safeCertContext); } finally { if (szPassword != IntPtr.Zero) { Marshal.ZeroFreeGlobalAllocUnicode(szPassword); } } }