private static SafeSecCertificateHandle X509ImportCertificate( ReadOnlySpan <byte> bytes, X509ContentType contentType, SafeCreateHandle?importPassword, out SafeSecIdentityHandle identityHandle) { SafeSecCertificateHandle certHandle; SafeCreateHandle cfPassphrase = importPassword ?? s_emptyExportString; int osStatus = AppleCryptoNative_X509ImportCertificate( bytes, contentType, cfPassphrase, out certHandle, out identityHandle); if (osStatus == 0) { return(certHandle); } certHandle.Dispose(); identityHandle.Dispose(); throw CreateExceptionForOSStatus(osStatus); }
public void Dispose() { _certHandle?.Dispose(); _identityHandle?.Dispose(); _certHandle = null; _identityHandle = null; }
public void Dispose() { _certHandle?.Dispose(); _identityHandle?.Dispose(); _privateKeyHolder?.Dispose(); _certHandle = null; _identityHandle = null; _privateKeyHolder = null; }
public void Dispose() { _certHandle?.Dispose(); _identityHandle?.Dispose(); _certHandle = null !; _identityHandle = null; DisposeTempKeychain(); }
internal static SafeSecCertificateHandle X509ImportCertificate( byte[] bytes, X509ContentType contentType, SafeCreateHandle importPassword, SafeKeychainHandle keychain, bool exportable, out SafeSecIdentityHandle identityHandle) { SafeSecCertificateHandle certHandle; int osStatus; SafeCreateHandle cfPassphrase = importPassword ?? s_nullExportString; int ret = AppleCryptoNative_X509ImportCertificate( bytes, bytes.Length, contentType, cfPassphrase, keychain, exportable ? 1 : 0, out certHandle, out identityHandle, out osStatus); SafeTemporaryKeychainHandle.TrackItem(certHandle); SafeTemporaryKeychainHandle.TrackItem(identityHandle); if (ret == 1) { return(certHandle); } certHandle.Dispose(); identityHandle.Dispose(); const int SeeOSStatus = 0; const int ImportReturnedEmpty = -2; const int ImportReturnedNull = -3; switch (ret) { case SeeOSStatus: throw CreateExceptionForOSStatus(osStatus); case ImportReturnedNull: case ImportReturnedEmpty: throw new CryptographicException(); default: Debug.Fail($"Unexpected return value {ret}"); throw new CryptographicException(); } }
public void Dispose() { _certHandle?.Dispose(); _identityHandle?.Dispose(); _certHandle = null !; _identityHandle = null; SafeKeychainHandle?tempKeychain = Interlocked.Exchange(ref _tempKeychain, null); if (tempKeychain != null) { tempKeychain.Dispose(); } }
protected override void Dispose(bool disposing) { try { if (disposed) { return; } if (disposing) { disposed = true; if (serverIdentity != null) { serverIdentity.Dispose(); serverIdentity = null; } if (clientIdentity != null) { clientIdentity.Dispose(); clientIdentity = null; } if (remoteCertificate != null) { remoteCertificate.Dispose(); remoteCertificate = null; } } } finally { disposed = true; if (context != IntPtr.Zero) { CFObject.CFRelease(context); context = IntPtr.Zero; } base.Dispose(disposing); } }
internal static SafeSecCertificateHandle X509ImportCertificate( byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, bool exportable, out SafeSecIdentityHandle identityHandle) { SafeSecCertificateHandle certHandle; int osStatus; int ret; SafeCreateHandle cfPassphrase = s_nullExportString; bool releasePassword = false; try { if (!importPassword.IsInvalid) { importPassword.DangerousAddRef(ref releasePassword); IntPtr passwordHandle = importPassword.DangerousGetHandle(); if (passwordHandle != IntPtr.Zero) { cfPassphrase = CoreFoundation.CFStringCreateWithCString(passwordHandle); } } ret = AppleCryptoNative_X509ImportCertificate( bytes, bytes.Length, contentType, cfPassphrase, keychain, exportable ? 1 : 0, out certHandle, out identityHandle, out osStatus); SafeTemporaryKeychainHandle.TrackItem(certHandle); SafeTemporaryKeychainHandle.TrackItem(identityHandle); } finally { if (releasePassword) { importPassword.DangerousRelease(); } if (cfPassphrase != s_nullExportString) { cfPassphrase.Dispose(); } } if (ret == 1) { return(certHandle); } certHandle.Dispose(); identityHandle.Dispose(); const int SeeOSStatus = 0; const int ImportReturnedEmpty = -2; const int ImportReturnedNull = -3; switch (ret) { case SeeOSStatus: throw CreateExceptionForOSStatus(osStatus); case ImportReturnedNull: case ImportReturnedEmpty: throw new CryptographicException(); default: Debug.Fail($"Unexpected return value {ret}"); throw new CryptographicException(); } }