/// <summary> /// When finished with a <see cref="RsaKeyWrapProvider"/> call this method for cleanup."/> /// </summary> /// <param name="provider"><see cref="RsaKeyWrapProvider"/> to be released.</param> public virtual void ReleaseRsaKeyWrapProvider(RsaKeyWrapProvider provider) { if (provider == null) { throw LogHelper.LogArgumentNullException(nameof(provider)); } else if (CustomCryptoProvider != null && CustomCryptoProvider.IsSupportedAlgorithm(provider.Algorithm)) { CustomCryptoProvider.Release(provider); } else { provider.Dispose(); } }
/// <summary> /// When finished with a <see cref="SignatureProvider"/> call this method for cleanup. The default behavior is to call <see cref="SignatureProvider.Dispose()"/> /// </summary> /// <param name="signatureProvider"><see cref="SignatureProvider"/> to be released.</param> public virtual void ReleaseSignatureProvider(SignatureProvider signatureProvider) { if (signatureProvider == null) { throw LogHelper.LogArgumentNullException(nameof(signatureProvider)); } else if (CustomCryptoProvider != null && CustomCryptoProvider.IsSupportedAlgorithm(signatureProvider.Algorithm)) { CustomCryptoProvider.Release(signatureProvider); } else if (signatureProvider.CryptoProviderCache == null) { signatureProvider.Dispose(); } }
/// <summary> /// When finished with a <see cref="HashAlgorithm"/> call this method for cleanup. The default behavior is to call <see cref="HashAlgorithm.Dispose()"/> /// </summary> /// <param name="hashAlgorithm"><see cref="HashAlgorithm"/> to be released.</param> public virtual void ReleaseHashAlgorithm(HashAlgorithm hashAlgorithm) { if (hashAlgorithm == null) { throw LogHelper.LogArgumentNullException(nameof(hashAlgorithm)); } else if (CustomCryptoProvider != null && _typeToAlgorithmMap.TryGetValue(hashAlgorithm.GetType().ToString(), out var algorithm) && CustomCryptoProvider.IsSupportedAlgorithm(algorithm)) { CustomCryptoProvider.Release(hashAlgorithm); } else { hashAlgorithm.Dispose(); } }