Skip to content
This repository was archived by the owner on Jul 9, 2023. It is now read-only.

Commit bbd3f76

Browse files
committed
#782 use 825 valid days to accomodate iOS 13
1 parent bf8dd66 commit bbd3f76

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed

src/Titanium.Web.Proxy/Certificates/BCCertificateMaker.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace Titanium.Web.Proxy.Network.Certificate
2626
/// </summary>
2727
internal class BCCertificateMaker : ICertificateMaker
2828
{
29-
private const int certificateValidDays = 1825;
29+
private readonly int certificateValidDays;
3030
private const int certificateGraceDays = 366;
3131

3232
// The FriendlyName value cannot be set on Unix.
@@ -35,9 +35,10 @@ internal class BCCertificateMaker : ICertificateMaker
3535

3636
private readonly ExceptionHandler exceptionFunc;
3737

38-
internal BCCertificateMaker(ExceptionHandler exceptionFunc)
38+
internal BCCertificateMaker(ExceptionHandler exceptionFunc, int certificateValidDays)
3939
{
40-
this.exceptionFunc = exceptionFunc;
40+
this.certificateValidDays = certificateValidDays;
41+
this.exceptionFunc = exceptionFunc;
4142
}
4243

4344
/// <summary>

src/Titanium.Web.Proxy/Certificates/BCCertificateMakerFast.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace Titanium.Web.Proxy.Network.Certificate
2626
/// </summary>
2727
internal class BCCertificateMakerFast : ICertificateMaker
2828
{
29-
private const int certificateValidDays = 1825;
29+
private int certificateValidDays;
3030
private const int certificateGraceDays = 366;
3131

3232
// The FriendlyName value cannot be set on Unix.
@@ -37,8 +37,9 @@ internal class BCCertificateMakerFast : ICertificateMaker
3737

3838
public AsymmetricCipherKeyPair KeyPair { get; set; }
3939

40-
internal BCCertificateMakerFast(ExceptionHandler exceptionFunc)
40+
internal BCCertificateMakerFast(ExceptionHandler exceptionFunc, int certificateValidDays)
4141
{
42+
this.certificateValidDays = certificateValidDays;
4243
this.exceptionFunc = exceptionFunc;
4344
KeyPair = GenerateKeyPair();
4445
}

src/Titanium.Web.Proxy/Certificates/CertificateManager.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,14 @@ private ICertificateMaker certEngine
7373
switch (engine)
7474
{
7575
case CertificateEngine.BouncyCastle:
76-
certEngineValue = new BCCertificateMaker(ExceptionFunc);
76+
certEngineValue = new BCCertificateMaker(ExceptionFunc, CertificateValidDays);
7777
break;
7878
case CertificateEngine.BouncyCastleFast:
79-
certEngineValue = new BCCertificateMakerFast(ExceptionFunc);
79+
certEngineValue = new BCCertificateMakerFast(ExceptionFunc, CertificateValidDays);
8080
break;
8181
case CertificateEngine.DefaultWindows:
8282
default:
83-
certEngineValue = new WinCertificateMaker(ExceptionFunc);
83+
certEngineValue = new WinCertificateMaker(ExceptionFunc, CertificateValidDays);
8484
break;
8585
}
8686
}
@@ -204,6 +204,12 @@ public CertificateEngine CertificateEngine
204204
/// </summary>
205205
public string PfxFilePath { get; set; } = string.Empty;
206206

207+
/// <summary>
208+
/// Number of Days generated HTTPS certificates are valid for.
209+
/// Maximum allowed on iOS 13 is 825 days and it is the default.
210+
/// </summary>
211+
public int CertificateValidDays { get; set; } = 825;
212+
207213
/// <summary>
208214
/// Name of the root certificate issuer.
209215
/// (This is valid only when RootCertificate property is not set.)

src/Titanium.Web.Proxy/Certificates/WinCertificateMaker.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ namespace Titanium.Web.Proxy.Network.Certificate
1313
/// </summary>
1414
internal class WinCertificateMaker : ICertificateMaker
1515
{
16+
// Validity Days for Root Certificates Generated.
17+
private int certificateValidDays;
18+
1619
private readonly ExceptionHandler exceptionFunc;
1720

1821
private readonly string sProviderName = "Microsoft Enhanced Cryptographic Provider v1.0";
@@ -49,8 +52,9 @@ internal class WinCertificateMaker : ICertificateMaker
4952
/// <summary>
5053
/// Constructor.
5154
/// </summary>
52-
internal WinCertificateMaker(ExceptionHandler exceptionFunc)
55+
internal WinCertificateMaker(ExceptionHandler exceptionFunc, int certificateValidDays)
5356
{
57+
this.certificateValidDays = certificateValidDays;
5458
this.exceptionFunc = exceptionFunc;
5559

5660
typeX500DN = Type.GetTypeFromProgID("X509Enrollment.CX500DistinguishedName", true);
@@ -99,16 +103,13 @@ private X509Certificate2 makeCertificate(string sSubjectCN,
99103
// Grace Days
100104
const int graceDays = -366;
101105

102-
// ValiDays
103-
const int validDays = 1825;
104-
105106
// KeyLength
106107
const int keyLength = 2048;
107108

108109
var now = DateTime.UtcNow;
109110
var graceTime = now.AddDays(graceDays);
110111
var certificate = makeCertificate(sSubjectCN, fullSubject, keyLength, hashAlgo, graceTime,
111-
now.AddDays(validDays), signingCertificate);
112+
now.AddDays(certificateValidDays), signingCertificate);
112113
return certificate;
113114
}
114115

src/Titanium.Web.Proxy/Helpers/RunTime.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private static bool isSocketReuseAvailable()
8888
}
8989

9090
// get the currently running framework name and version (EX: .NETFramework,Version=v4.5.1) (Ex: .NETCoreApp,Version=v2.0)
91-
string ver = Assembly.GetEntryAssembly()?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName;
91+
string? ver = Assembly.GetEntryAssembly()?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName;
9292

9393
if (ver == null)
9494
return false; // play it safe if we can not figure out what the framework is

0 commit comments

Comments
 (0)