Commit 5026d40a authored by Hakan Arıcı's avatar Hakan Arıcı Committed by GitHub

Merge pull request #2 from justcoding121/release

Sync
parents c02c9f3a 63ddeff4
......@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy.UnitTests
{
var tasks = new List<Task>();
var mgr = new CertificateManager("Titanium","Titanium Root Certificate Authority");
var mgr = new CertificateManager("Titanium", "Titanium Root Certificate Authority");
mgr.ClearIdleCertificates(1);
......@@ -33,7 +33,7 @@ namespace Titanium.Web.Proxy.UnitTests
await Task.Delay(random.Next(0, 10) * 1000);
//get the connection
var certificate = await mgr.CreateCertificate(host, false);
var certificate = mgr.CreateCertificate(host, false);
Assert.IsNotNull(certificate);
......
......@@ -37,29 +37,37 @@ namespace Titanium.Web.Proxy.Network
certificateCache = new ConcurrentDictionary<string, CachedCertificate>();
}
/// <summary>
/// Attempts to move a self-signed certificate to the root store.
/// </summary>
/// <returns>true if succeeded, else false</returns>
internal bool CreateTrustedRootCertificate()
X509Certificate2 GetRootCertificate()
{
var fileName = Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location),"rootCert.pfx");
var fileName = Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "rootCert.pfx");
if (File.Exists(fileName))
{
try
{
rootCertificate = new X509Certificate2(fileName, string.Empty, X509KeyStorageFlags.Exportable);
if (rootCertificate != null)
{
return true;
}
return new X509Certificate2(fileName, string.Empty, X509KeyStorageFlags.Exportable);
}
catch(Exception e)
catch (Exception e)
{
ProxyServer.ExceptionFunc(e);
return null;
}
}
return null;
}
/// <summary>
/// Attempts to create a RootCertificate
/// </summary>
/// <returns>true if succeeded, else false</returns>
internal bool CreateTrustedRootCertificate()
{
rootCertificate = GetRootCertificate();
if (rootCertificate != null)
{
return true;
}
try
{
rootCertificate = CreateCertificate(RootCertificateName, true);
......@@ -72,6 +80,7 @@ namespace Titanium.Web.Proxy.Network
{
try
{
var fileName = Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "rootCert.pfx");
File.WriteAllBytes(fileName, rootCertificate.Export(X509ContentType.Pkcs12));
}
catch(Exception e)
......@@ -178,6 +187,32 @@ namespace Titanium.Web.Proxy.Network
}
}
public bool TrustRootCertificate()
{
if (rootCertificate == null)
{
return false;
}
try
{
X509Store x509Store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
x509Store.Open(OpenFlags.ReadWrite);
try
{
x509Store.Add(rootCertificate);
}
finally
{
x509Store.Close();
}
return true;
}
catch (Exception exception)
{
return false;
}
}
public void Dispose()
{
}
......
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