Commit f2b2ce52 authored by Anton Ryzhov's avatar Anton Ryzhov

Rename ICertificateStorage to ICertificateCache

parent 46926db7
...@@ -44,7 +44,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -44,7 +44,7 @@ namespace Titanium.Web.Proxy.Network
/// <summary> /// <summary>
/// Cache dictionary /// Cache dictionary
/// </summary> /// </summary>
private readonly ConcurrentDictionary<string, CachedCertificate> certificateCache; private readonly ConcurrentDictionary<string, CachedCertificate> cachedCertificates;
private readonly CancellationTokenSource clearCertificatesTokenSource; private readonly CancellationTokenSource clearCertificatesTokenSource;
...@@ -58,7 +58,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -58,7 +58,7 @@ namespace Titanium.Web.Proxy.Network
private string rootCertificateName; private string rootCertificateName;
private ICertificateStorage certificateStorage; private ICertificateCache certificateCache;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CertificateManager"/> class. /// Initializes a new instance of the <see cref="CertificateManager"/> class.
...@@ -98,11 +98,11 @@ namespace Titanium.Web.Proxy.Network ...@@ -98,11 +98,11 @@ namespace Titanium.Web.Proxy.Network
CertificateEngine = CertificateEngine.BouncyCastle; CertificateEngine = CertificateEngine.BouncyCastle;
certificateCache = new ConcurrentDictionary<string, CachedCertificate>(); cachedCertificates = new ConcurrentDictionary<string, CachedCertificate>();
clearCertificatesTokenSource = new CancellationTokenSource(); clearCertificatesTokenSource = new CancellationTokenSource();
certificateStorage = new DefaultCertificateStorage(); certificateCache = new DefaultCertificateDiskCache();
} }
/// <summary> /// <summary>
...@@ -224,10 +224,10 @@ namespace Titanium.Web.Proxy.Network ...@@ -224,10 +224,10 @@ namespace Titanium.Web.Proxy.Network
/// The service to save fake certificates. /// The service to save fake certificates.
/// The default storage saves certificates in folder "crts" (will be created in proxy dll directory). /// The default storage saves certificates in folder "crts" (will be created in proxy dll directory).
/// </summary> /// </summary>
public ICertificateStorage CertificateStorage public ICertificateCache CertificateStorage
{ {
get => certificateStorage; get => certificateCache;
set => certificateStorage = value ?? new DefaultCertificateStorage(); set => certificateCache = value ?? new DefaultCertificateDiskCache();
} }
/// <summary> /// <summary>
...@@ -388,7 +388,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -388,7 +388,7 @@ namespace Titanium.Web.Proxy.Network
try try
{ {
certificate = certificateStorage.LoadCertificate(subjectName, StorageFlag); certificate = certificateCache.LoadCertificate(subjectName, StorageFlag);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -402,7 +402,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -402,7 +402,7 @@ namespace Titanium.Web.Proxy.Network
try try
{ {
certificateStorage.SaveCertificate(subjectName, certificate); certificateCache.SaveCertificate(subjectName, certificate);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -432,7 +432,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -432,7 +432,7 @@ namespace Titanium.Web.Proxy.Network
internal async Task<X509Certificate2> CreateCertificateAsync(string certificateName) internal async Task<X509Certificate2> CreateCertificateAsync(string certificateName)
{ {
// check in cache first // check in cache first
var item = certificateCache.GetOrAdd(certificateName, _ => var item = cachedCertificates.GetOrAdd(certificateName, _ =>
{ {
var cached = new CachedCertificate(); var cached = new CachedCertificate();
cached.CreationTask = Task.Run(() => cached.CreationTask = Task.Run(() =>
...@@ -479,11 +479,11 @@ namespace Titanium.Web.Proxy.Network ...@@ -479,11 +479,11 @@ namespace Titanium.Web.Proxy.Network
{ {
var cutOff = DateTime.Now.AddMinutes(-1 * CertificateCacheTimeOutMinutes); var cutOff = DateTime.Now.AddMinutes(-1 * CertificateCacheTimeOutMinutes);
var outdated = certificateCache.Where(x => x.Value.LastAccess < cutOff).ToList(); var outdated = cachedCertificates.Where(x => x.Value.LastAccess < cutOff).ToList();
foreach (var cache in outdated) foreach (var cache in outdated)
{ {
certificateCache.TryRemove(cache.Key, out _); cachedCertificates.TryRemove(cache.Key, out _);
} }
// after a minute come back to check for outdated certificates in cache // after a minute come back to check for outdated certificates in cache
...@@ -529,7 +529,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -529,7 +529,7 @@ namespace Titanium.Web.Proxy.Network
{ {
try try
{ {
var rootCert = certificateStorage.LoadRootCertificate(PfxFilePath, PfxPassword, X509KeyStorageFlags.Exportable); var rootCert = certificateCache.LoadRootCertificate(PfxFilePath, PfxPassword, X509KeyStorageFlags.Exportable);
if (rootCert != null) if (rootCert != null)
{ {
return false; return false;
...@@ -556,14 +556,14 @@ namespace Titanium.Web.Proxy.Network ...@@ -556,14 +556,14 @@ namespace Titanium.Web.Proxy.Network
{ {
try try
{ {
certificateStorage.Clear(); certificateCache.Clear();
} }
catch catch
{ {
// ignore // ignore
} }
certificateStorage.SaveRootCertificate(PfxFilePath, PfxPassword, RootCertificate); certificateCache.SaveRootCertificate(PfxFilePath, PfxPassword, RootCertificate);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -582,7 +582,7 @@ namespace Titanium.Web.Proxy.Network ...@@ -582,7 +582,7 @@ namespace Titanium.Web.Proxy.Network
{ {
try try
{ {
return certificateStorage.LoadRootCertificate(PfxFilePath, PfxPassword, X509KeyStorageFlags.Exportable); return certificateCache.LoadRootCertificate(PfxFilePath, PfxPassword, X509KeyStorageFlags.Exportable);
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -875,8 +875,8 @@ namespace Titanium.Web.Proxy.Network ...@@ -875,8 +875,8 @@ namespace Titanium.Web.Proxy.Network
/// </summary> /// </summary>
public void ClearRootCertificate() public void ClearRootCertificate()
{ {
certificateStorage.Clear();
certificateCache.Clear(); certificateCache.Clear();
cachedCertificates.Clear();
rootCertificate = null; rootCertificate = null;
} }
} }
......
...@@ -5,7 +5,7 @@ using System.Security.Cryptography.X509Certificates; ...@@ -5,7 +5,7 @@ using System.Security.Cryptography.X509Certificates;
namespace Titanium.Web.Proxy.Network namespace Titanium.Web.Proxy.Network
{ {
internal sealed class DefaultCertificateStorage : ICertificateStorage internal sealed class DefaultCertificateDiskCache : ICertificateCache
{ {
private const string defaultCertificateDirectoryName = "crts"; private const string defaultCertificateDirectoryName = "crts";
private const string defaultCertificateFileExtension = ".pfx"; private const string defaultCertificateFileExtension = ".pfx";
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
namespace Titanium.Web.Proxy.Network namespace Titanium.Web.Proxy.Network
{ {
public interface ICertificateStorage public interface ICertificateCache
{ {
/// <summary> /// <summary>
/// Loads the root certificate from the storage. /// Loads the root certificate from the storage.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment