Skip to content

Commit 8e1a206

Browse files
author
Elena Fiocca
committed
Changed cert usage entry parameter value 'None' to 'Other'
1 parent 1923ee4 commit 8e1a206

File tree

6 files changed

+27
-40
lines changed

6 files changed

+27
-40
lines changed

AxisIPCamera/Client/AxisHttpClient.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,12 @@ public AxisHttpClient(JobConfiguration config, CertificateStore store, IPAMSecre
6262

6363
Logger = LogHandler.GetClassLogger<AxisHttpClient>();
6464
Logger.LogTrace("Entered AxisHttpClient constructor.");
65-
Logger.LogTrace("Initializing Axis IP Camera HTTP Client");
66-
67-
//TODO; REMOVE var baseRestClientUrl =
68-
//(config.UseSSL) ? $"https://{store.ClientMachine}" : $"http://{store.ClientMachine}";
65+
Logger.LogTrace("Initializing Axis IP Camera HTTP client");
66+
6967
// ** NOTE: Ignoring the default config.UseSSL custom field --- we will always connect to the device via HTTPS
7068
var baseRestClientUrl = $"https://{store.ClientMachine}";
7169

72-
Logger.LogDebug($"Base HTTP Client URL: {baseRestClientUrl}");
70+
Logger.LogDebug($"Base HTTP client URL: {baseRestClientUrl}");
7371

7472
// Initialize custom HTTP handler to validate device identity
7573
RestClientOptions options = null;
@@ -88,7 +86,6 @@ public AxisHttpClient(JobConfiguration config, CertificateStore store, IPAMSecre
8886

8987
// Add Basic Auth username and password credentials
9088
Logger.LogTrace("Adding Basic Auth Credentials to the HTTP client options...");
91-
9289
string username = PAMUtilities.ResolvePAMField(resolver, Logger, "API Username", config.ServerUsername);
9390
string password = PAMUtilities.ResolvePAMField(resolver, Logger, "API Password", config.ServerPassword);
9491

@@ -115,9 +112,7 @@ public AxisHttpClient(JobConfiguration config, CertificateStore store, IPAMSecre
115112
}
116113

117114
Logger.LogTrace($"Connection to the device response status code: {response.StatusCode}");
118-
119115
Logger.LogTrace("Completed Initialization of Axis IP Camera HTTP Client");
120-
121116
Logger.LogTrace("Leaving AxisHttpClient constructor.");
122117
}
123118
catch (Exception e)

AxisIPCamera/Helpers/DeviceCertValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public static class DeviceCertValidator
4848
}
4949

5050
// VALIDATION 1: Verify the TLS cert chain against the AXIS PKI --- Did this cert come off an AXIS PKI?
51-
// This check will be done with SKI/AKI matching against the chain
51+
// This check will be done with SKI/AKI matching against the custom chain
5252
logger.LogTrace($"Performing Cert Validator Check #1: Verify the TLS cert chain against custom chain of AXIS PKI certs...");
5353

5454
// Load custom trusted certs

AxisIPCamera/Inventory.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpd
9999
else
100100
{
101101
// If no match, reset the cert usage
102-
_logger.LogDebug($"Client cert with alias '{c.Alias}' has no associated certificate usage");
103-
c.Binding = Constants.CertificateUsage.None;
102+
_logger.LogDebug($"Client cert with alias '{c.Alias}' has no known certificate usage");
103+
c.Binding = Constants.CertificateUsage.Other;
104104
}
105105
}
106106

@@ -209,18 +209,11 @@ private CurrentInventoryItem BuildInventoryItem(CACertificate caCert)
209209
}
210210
}
211211

212-
//TODO: Add parameters for other binding aliases
213212
private CurrentInventoryItem BuildInventoryItem(Certificate cert)
214213
{
215214
try
216215
{
217216
_logger.MethodEntry();
218-
219-
// Get the cert usage as a string
220-
//string certUsageString = GetCertUsageAsString(cert.Binding);
221-
222-
//Dictionary<string, object> parameters = new Dictionary<string, object>();
223-
//parameters.Add("CertUsage",certUsageString);
224217

225218
var certList = new List<string>();
226219
certList.Add(cert.CertAsPem);

AxisIPCamera/Model/Certificate.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class Certificate
2222
[JsonProperty("alias")] public string Alias { get; set; }
2323
[JsonProperty("certificate")] public string CertAsPem { get; set; }
2424
[JsonProperty("keystore")] public Constants.Keystore Keystore { get; set; }
25-
public Constants.CertificateUsage Binding { get; set; } = Constants.CertificateUsage.None;
25+
public Constants.CertificateUsage Binding { get; set; } = Constants.CertificateUsage.Other;
2626
}
2727

2828
public class CertificateData

AxisIPCamera/Model/Constants.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public enum CertificateUsage
4747
IEEE,
4848
MQTT,
4949
Trust,
50-
None,
50+
Other,
5151
Undefined
5252
}
5353

@@ -124,9 +124,9 @@ public static string GetCertUsageAsString(Constants.CertificateUsage certUsageEn
124124
certUsageString = "Trust";
125125
break;
126126
}
127-
case Constants.CertificateUsage.None:
127+
case Constants.CertificateUsage.Other:
128128
{
129-
certUsageString = "None";
129+
certUsageString = "Other";
130130
break;
131131
}
132132
default:
@@ -150,17 +150,17 @@ public static string GetCertUsageAsString(Constants.CertificateUsage certUsageEn
150150
/// <returns>Enum representation of certificate usage that is declared in Constants.cs</returns>
151151
public static CertificateUsage GetCertUsageAsEnum(string certUsageString)
152152
{
153-
var certUsageEnum = CertificateUsage.None;
153+
var certUsageEnum = CertificateUsage.Other;
154154
switch (certUsageString)
155155
{
156156
case "HTTPS":
157157
{
158-
certUsageEnum = Constants.CertificateUsage.Https;
158+
certUsageEnum = CertificateUsage.Https;
159159
break;
160160
}
161161
case "MQTT":
162162
{
163-
certUsageEnum = Constants.CertificateUsage.MQTT;
163+
certUsageEnum = CertificateUsage.MQTT;
164164
break;
165165
}
166166
case "IEEE802.X":
@@ -170,12 +170,12 @@ public static CertificateUsage GetCertUsageAsEnum(string certUsageString)
170170
}
171171
case "Trust":
172172
{
173-
certUsageEnum = CertificateUsage.IEEE;
173+
certUsageEnum = CertificateUsage.Trust;
174174
break;
175175
}
176-
case "None":
176+
case "Other":
177177
{
178-
certUsageEnum = CertificateUsage.None;
178+
certUsageEnum = CertificateUsage.Other;
179179
break;
180180
}
181181
default:
@@ -190,7 +190,7 @@ public static CertificateUsage GetCertUsageAsEnum(string certUsageString)
190190

191191
return certUsageEnum;
192192
}
193-
193+
194194
public static void ValidateCsr(string csrPem)
195195
{
196196
try

AxisIPCamera/Reenrollment.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Reflection.Metadata;
34
using System.Text;
45
using System.Text.RegularExpressions;
56

67
using Microsoft.Extensions.Logging;
78
using Newtonsoft.Json;
89

910
using Keyfactor.Logging;
10-
using Keyfactor.Orchestrators.Extensions;
11-
using Keyfactor.Orchestrators.Extensions.Interfaces;
1211
using Keyfactor.Extensions.Orchestrator.AxisIPCamera.Client;
1312
using Keyfactor.Extensions.Orchestrator.AxisIPCamera.Model;
13+
using Keyfactor.Orchestrators.Extensions;
14+
using Keyfactor.Orchestrators.Extensions.Interfaces;
1415

1516
namespace Keyfactor.Extensions.Orchestrator.AxisIPCamera
1617
{
1718
public class Reenrollment : IReenrollmentJobExtension
1819
{
1920
private readonly ILogger _logger;
20-
public string ExtensionName => "";
2121

22-
public IPAMSecretResolver Resolver;
22+
private readonly IPAMSecretResolver _resolver;
23+
public string ExtensionName => "";
2324

2425
public Reenrollment(IPAMSecretResolver resolver)
2526
{
2627
_logger = LogHandler.GetClassLogger<Reenrollment>();
27-
Resolver = resolver;
28+
_resolver = resolver;
2829
}
2930

3031
// Job Entry Point
@@ -43,28 +44,26 @@ public JobResult ProcessJob(ReenrollmentJobConfiguration config, SubmitReenrollm
4344
{
4445
_logger.LogDebug($"{itm.Key}:{itm.Value}");
4546
}
46-
_logger.LogDebug("End Job Properties");
47+
_logger.LogDebug("--- End Job Properties");
4748

4849
// Get required reenrollment fields
4950
string certUsage = config.JobProperties[Constants.CertUsageParamName].ToString() ?? throw new Exception($"{Constants.CertUsageParamDisplay} returned null");
5051
var certUsageEnum = Constants.GetCertUsageAsEnum(certUsage);
5152
string keyAlgorithm = config.JobProperties["keyType"].ToString() ?? throw new Exception("Key Algorithm returned null");
5253
string keySize = config.JobProperties["keySize"].ToString() ?? throw new Exception("Key Size returned null");
5354
string subject = config.JobProperties["subjectText"].ToString() ?? throw new Exception("Subject returned null");
54-
// IGNORING --- bool overwrite = Convert.ToBoolean(config.JobProperties["Overwrite"]);
55-
5655
string reenrollAlias = config.Alias ?? throw new Exception("Alias returned null");
5756
_logger.LogDebug($"Alias: {reenrollAlias}");
5857

59-
// Prevent reenrollment on Trust certificates or those without a certificate usage
60-
if (certUsageEnum is Constants.CertificateUsage.Trust or Constants.CertificateUsage.None)
58+
// Prevent reenrollment on Trust certificates
59+
if (certUsageEnum is Constants.CertificateUsage.Trust)
6160
{
6261
throw new Exception(
6362
"Reenrollment cannot be performed on a store when the certificate usage is marked as 'Trust' or 'None'");
6463
}
6564

6665
_logger.LogTrace("Create HTTPS client to connect to device");
67-
var client = new AxisHttpClient(config, config.CertificateStoreDetails, Resolver);
66+
var client = new AxisHttpClient(config, config.CertificateStoreDetails, _resolver);
6867

6968
// Get current binding for reenrollment certificate usage provided
7069
_logger.LogTrace($"Check '{certUsage}' binding for same alias");

0 commit comments

Comments
 (0)