Skip to content

Commit b25416b

Browse files
Use default case-insensitive json deserialization. Cleanup
1 parent c214840 commit b25416b

File tree

12 files changed

+97
-50
lines changed

12 files changed

+97
-50
lines changed

src/Certify.Core/Management/CertifyManager/CertifyManager.Maintenance.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
44
using System.IO;
@@ -261,7 +261,11 @@ private async Task PerformCertificateStatusChecks(CancellationToken cancelToken,
261261
item.ARICertificateId = null;
262262
}
263263

264-
var x509Cert2 = new System.Security.Cryptography.X509Certificates.X509Certificate2(File.ReadAllBytes(item.CertificatePath), await GetPfxPassword(item));
264+
#if NET9_0_OR_GREATER
265+
var x509Cert2 = System.Security.Cryptography.X509Certificates.X509CertificateLoader.LoadPkcs12FromFile(item.CertificatePath, await GetPfxPassword(item));
266+
#else
267+
var x509Cert2 = new System.Security.Cryptography.X509Certificates.X509Certificate2(File.ReadAllBytes(item.CertificatePath), await GetPfxPassword(item));
268+
#endif
265269
var ariCertId = item.ARICertificateId ?? Certify.Shared.Core.Utils.PKI.CertUtils.GetARICertIdBase64(x509Cert2);
266270
var info = await provider.GetRenewalInfo(ariCertId);
267271

src/Certify.Core/Management/CertifyManager/CertifyManager.ManagementHub.cs

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Certify.Models.Config;
1010
using Certify.Models.Config.Migration;
1111
using Certify.Models.Hub;
12+
using Certify.Shared;
1213
using Certify.Shared.Core.Utils;
1314

1415
namespace Certify.Management
@@ -230,7 +231,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
230231
if (arg.CommandType == ManagementHubCommands.GetManagedItem)
231232
{
232233
// Get a single managed item by id
233-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
234+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
234235
var managedCertIdArg = args.FirstOrDefault(a => a.Key == "managedCertId");
235236
val = await GetManagedCertificate(managedCertIdArg.Value);
236237
}
@@ -248,33 +249,33 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
248249
}
249250
else if (arg.CommandType == ManagementHubCommands.GetManagedItemLog)
250251
{
251-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
252+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
252253
var managedCertIdArg = args.FirstOrDefault(a => a.Key == "managedCertId");
253254
var limit = args.FirstOrDefault(a => a.Key == "limit");
254255

255256
val = await GetItemLog(managedCertIdArg.Value, int.Parse(limit.Value));
256257
}
257258
else if (arg.CommandType == ManagementHubCommands.GetManagedItemRenewalPreview)
258259
{
259-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
260+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
260261
var managedCertArg = args.FirstOrDefault(a => a.Key == "managedCert");
261-
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value);
262+
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value, JsonOptions.DefaultJsonSerializerOptions);
262263

263264
val = await GeneratePreview(managedCert);
264265
}
265266
else if (arg.CommandType == ManagementHubCommands.ExportCertificate)
266267
{
267-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
268+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
268269
var managedCertIdArg = args.FirstOrDefault(a => a.Key == "managedCertId");
269270
var format = args.FirstOrDefault(a => a.Key == "format");
270271
val = await ExportCertificate(managedCertIdArg.Value, format.Value);
271272
}
272273
else if (arg.CommandType == ManagementHubCommands.UpdateManagedItem)
273274
{
274275
// update a single managed item
275-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
276+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
276277
var managedCertArg = args.FirstOrDefault(a => a.Key == "managedCert");
277-
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value);
278+
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value, JsonOptions.DefaultJsonSerializerOptions);
278279

279280
var item = await UpdateManagedCertificate(managedCert);
280281

@@ -285,7 +286,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
285286
else if (arg.CommandType == ManagementHubCommands.RemoveManagedItem)
286287
{
287288
// delete a single managed item
288-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
289+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
289290
var managedCertIdArg = args.FirstOrDefault(a => a.Key == "managedCertId");
290291

291292
var actionResult = await DeleteManagedCertificate(managedCertIdArg.Value);
@@ -300,9 +301,9 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
300301
else if (arg.CommandType == ManagementHubCommands.TestManagedItemConfiguration)
301302
{
302303
// test challenge response config for a single managed item
303-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
304+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
304305
var managedCertArg = args.FirstOrDefault(a => a.Key == "managedCert");
305-
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value);
306+
var managedCert = JsonSerializer.Deserialize<ManagedCertificate>(managedCertArg.Value, JsonOptions.DefaultJsonSerializerOptions);
306307

307308
var log = ManagedCertificateLog.GetLogger(managedCert.Id, _loggingLevelSwitch);
308309

@@ -312,7 +313,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
312313
else if (arg.CommandType == ManagementHubCommands.PerformManagedItemRequest)
313314
{
314315
// attempt certificate order
315-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
316+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
316317
var managedCertIdArg = args.FirstOrDefault(a => a.Key == "managedCertId");
317318
var managedCert = await GetManagedCertificate(managedCertIdArg.Value);
318319

@@ -335,15 +336,15 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
335336
}
336337
else if (arg.CommandType == ManagementHubCommands.UpdateCertificateAuthority)
337338
{
338-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
339+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
339340
var itemArg = args.FirstOrDefault(a => a.Key == "certificateAuthority");
340-
var item = JsonSerializer.Deserialize<CertificateAuthority>(itemArg.Value);
341+
var item = JsonSerializer.Deserialize<CertificateAuthority>(itemArg.Value, JsonOptions.DefaultJsonSerializerOptions);
341342

342343
val = await UpdateCertificateAuthority(item);
343344
}
344345
else if (arg.CommandType == ManagementHubCommands.RemoveCertificateAuthority)
345346
{
346-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
347+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
347348
var itemArg = args.FirstOrDefault(a => a.Key == "id");
348349
val = await RemoveCertificateAuthority(itemArg.Value);
349350
}
@@ -353,15 +354,15 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
353354
}
354355
else if (arg.CommandType == ManagementHubCommands.AddAcmeAccount)
355356
{
356-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
357+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
357358
var registrationArg = args.FirstOrDefault(a => a.Key == "registration");
358-
var registration = JsonSerializer.Deserialize<ContactRegistration>(registrationArg.Value);
359+
var registration = JsonSerializer.Deserialize<ContactRegistration>(registrationArg.Value, JsonOptions.DefaultJsonSerializerOptions);
359360

360361
val = await AddAccount(registration);
361362
}
362363
else if (arg.CommandType == ManagementHubCommands.RemoveAcmeAccount)
363364
{
364-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
365+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
365366
var itemArg = args.FirstOrDefault(a => a.Key == "storageKey");
366367
var deactivateArg = args.FirstOrDefault(a => a.Key == "deactivate");
367368
val = await RemoveAccount(itemArg.Value, bool.Parse(deactivateArg.Value));
@@ -372,9 +373,9 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
372373
}
373374
else if (arg.CommandType == ManagementHubCommands.UpdateStoredCredential)
374375
{
375-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
376+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
376377
var itemArg = args.FirstOrDefault(a => a.Key == "item");
377-
var storedCredential = JsonSerializer.Deserialize<StoredCredential>(itemArg.Value);
378+
var storedCredential = JsonSerializer.Deserialize<StoredCredential>(itemArg.Value, JsonOptions.DefaultJsonSerializerOptions);
378379

379380
var updated = await _credentialsManager.Update(storedCredential);
380381
if (updated != null)
@@ -388,7 +389,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
388389
}
389390
else if (arg.CommandType == ManagementHubCommands.RemoveStoredCredential)
390391
{
391-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
392+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
392393
var itemArg = args.FirstOrDefault(a => a.Key == "storageKey");
393394
val = await _credentialsManager.Delete(_itemManager, itemArg.Value);
394395
}
@@ -399,7 +400,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
399400

400401
else if (arg.CommandType == ManagementHubCommands.GetDnsZones)
401402
{
402-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
403+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
403404
var providerTypeArg = args.FirstOrDefault(a => a.Key == "providerTypeId");
404405
var credentialIdArg = args.FirstOrDefault(a => a.Key == "credentialId");
405406

@@ -411,7 +412,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
411412
}
412413
else if (arg.CommandType == ManagementHubCommands.ExecuteDeploymentTask)
413414
{
414-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
415+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
415416

416417
var managedCertificateIdArg = args.FirstOrDefault(a => a.Key == "managedCertificateId");
417418
var taskIdArg = args.FirstOrDefault(a => a.Key == "taskId");
@@ -424,7 +425,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
424425
}
425426
else if (arg.CommandType == ManagementHubCommands.GetTargetServiceItems)
426427
{
427-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
428+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
428429
var serviceTypeArg = args.FirstOrDefault(a => a.Key == "serviceType");
429430

430431
var serverType = MapStandardServerType(serviceTypeArg.Value);
@@ -433,7 +434,7 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
433434
}
434435
else if (arg.CommandType == ManagementHubCommands.GetTargetServiceItemIdentifiers)
435436
{
436-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
437+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
437438
var serviceTypeArg = args.FirstOrDefault(a => a.Key == "serviceType");
438439
var itemArg = args.FirstOrDefault(a => a.Key == "itemId");
439440

@@ -443,17 +444,17 @@ public async Task<InstanceCommandResult> PerformHubCommandWithResult(InstanceCom
443444
}
444445
else if (arg.CommandType == ManagementHubCommands.PerformImport)
445446
{
446-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
447+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
447448
var requestArg = args.FirstOrDefault(a => a.Key == "importRequest");
448-
var importRequest = JsonSerializer.Deserialize<ImportRequest>(requestArg.Value);
449+
var importRequest = JsonSerializer.Deserialize<ImportRequest>(requestArg.Value, JsonOptions.DefaultJsonSerializerOptions);
449450

450451
val = await PerformImport(importRequest);
451452
}
452453
else if (arg.CommandType == ManagementHubCommands.PerformExport)
453454
{
454-
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value);
455+
var args = JsonSerializer.Deserialize<KeyValuePair<string, string>[]>(arg.Value, JsonOptions.DefaultJsonSerializerOptions);
455456
var requestArg = args.FirstOrDefault(a => a.Key == "exportRequest");
456-
var exportRequest = JsonSerializer.Deserialize<ExportRequest>(requestArg.Value);
457+
var exportRequest = JsonSerializer.Deserialize<ExportRequest>(requestArg.Value, JsonOptions.DefaultJsonSerializerOptions);
457458

458459
val = await PerformExport(exportRequest);
459460
}

src/Certify.Models/Config/CertRequestConfig.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Text.Json;
66
using Certify.Models.Config;
7+
using Certify.Shared;
78
using Microsoft.IdentityModel.JsonWebTokens;
89
using Newtonsoft.Json;
910

@@ -346,8 +347,6 @@ internal List<string> GetCertificateDomains()
346347
return allDomains.Distinct().ToList();
347348
}
348349

349-
private static JsonSerializerOptions _defaultJsonSerializerOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
350-
351350
public List<CertIdentifierItem> GetCertificateIdentifiers()
352351
{
353352
var identifiers = new List<CertIdentifierItem>();
@@ -375,7 +374,7 @@ public List<CertIdentifierItem> GetCertificateIdentifiers()
375374
var atc = jwt.Claims.FirstOrDefault(c => c.Type == "atc");
376375
if (atc != null)
377376
{
378-
var parsedAtc = System.Text.Json.JsonSerializer.Deserialize<AtcClaim>(atc.Value, _defaultJsonSerializerOptions);
377+
var parsedAtc = System.Text.Json.JsonSerializer.Deserialize<AtcClaim>(atc.Value, JsonOptions.DefaultJsonSerializerOptions);
379378
if (parsedAtc != null)
380379
{
381380
identifiers.Add(new CertIdentifierItem { IdentifierType = CertIdentifierType.TnAuthList, Value = parsedAtc.TkValue });
@@ -396,7 +395,7 @@ public List<CertIdentifierItem> GetCertificateIdentifiers()
396395
var atc = parsedJwt.Claims.FirstOrDefault(c => c.Type == "atc");
397396
if (atc != null)
398397
{
399-
var parsedAtc = System.Text.Json.JsonSerializer.Deserialize<AtcClaim>(atc.Value, _defaultJsonSerializerOptions);
398+
var parsedAtc = System.Text.Json.JsonSerializer.Deserialize<AtcClaim>(atc.Value, JsonOptions.DefaultJsonSerializerOptions);
400399
return parsedAtc;
401400
}
402401
else
File renamed without changes.

src/Certify.Models/Shared/Json.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System.Text.Json;
2+
3+
namespace Certify.Shared
4+
{
5+
public class JsonOptions
6+
{
7+
public static JsonSerializerOptions DefaultJsonSerializerOptions = new() { PropertyNameCaseInsensitive = true };
8+
}
9+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/Certify.Server/Certify.Server.Core/Certify.Server.Core/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
var startup = new Startup(builder.Configuration);
1414

15-
startup.ConfigureServices(builder.Services);
15+
await startup.ConfigureServices(builder.Services);
1616

1717
var app = builder.Build();
1818

src/Certify.Server/Certify.Server.Core/Certify.Server.Core/Startup.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Startup(IConfiguration configuration)
2626

2727
public IConfiguration Configuration { get; }
2828

29-
public void ConfigureServices(IServiceCollection services)
29+
public async Task ConfigureServices(IServiceCollection services)
3030
{
3131
services.AddControllers();
3232

@@ -41,7 +41,7 @@ public void ConfigureServices(IServiceCollection services)
4141
#endif
4242
ConfigureHttpsRedirection(services);
4343
ConfigureClaimsTransformation(services);
44-
ConfigureCertifyManager(services);
44+
await ConfigureCertifyManager(services);
4545
}
4646

4747
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
@@ -229,10 +229,10 @@ private void ConfigureClaimsTransformation(IServiceCollection services)
229229
services.AddSingleton<IClaimsTransformation, ClaimsTransformer>(c => new ClaimsTransformer(windowsAuthRequired));
230230
}
231231

232-
private void ConfigureCertifyManager(IServiceCollection services)
232+
private async Task ConfigureCertifyManager(IServiceCollection services)
233233
{
234234
var certifyManager = new Management.CertifyManager();
235-
certifyManager.Init().Wait();
235+
await certifyManager.Init();
236236
services.AddSingleton<Management.ICertifyManager>(certifyManager);
237237
}
238238

0 commit comments

Comments
 (0)