From 7dd395e18649384528c383c0452695479f0a55b5 Mon Sep 17 00:00:00 2001 From: grim Date: Sat, 18 Oct 2025 21:43:09 +0200 Subject: [PATCH] fixes --- BuildOutput/bin/Debug/net9.0/certmgr.dll | Bin 114176 -> 116224 bytes BuildOutput/bin/Debug/net9.0/certmgr.exe | Bin 156160 -> 156160 bytes BuildOutput/bin/Debug/net9.0/certmgr.pdb | Bin 50956 -> 60340 bytes certmgr/CertGen/CertificateGeneratorBase.cs | 33 +--- .../Utils/CollectionEquivalencyComparer.cs | 2 +- certmgr/Core/Attributes/SettingAttribute.cs | 1 + certmgr/Core/Cli/CliParser.cs | 4 +- .../Core/Converters/Impl/StringConverter.cs | 2 +- .../Core/Converters/Impl/TimeSpanConverter.cs | 6 +- certmgr/Core/JobExecutor.cs | 31 +++- certmgr/Core/JobRegistry.cs | 11 +- certmgr/Core/SettingsBuilder.cs | 164 ++++++++++-------- certmgr/Core/Utils/Extenders.cs | 2 +- certmgr/Core/Utils/StringBuilderCache.cs | 3 +- certmgr/Core/Utils/StringFormatter.cs | 2 + certmgr/Jobs/CertificateSettings.cs | 2 +- certmgr/Program.cs | 13 +- 17 files changed, 156 insertions(+), 120 deletions(-) diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.dll b/BuildOutput/bin/Debug/net9.0/certmgr.dll index e305eb8d9e84e9beea1d1affa791ef2822a80251..8fdfb442ab3da0e180e41054f44fe84e60cfeb37 100644 GIT binary patch literal 116224 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 F{{kH`Lzn;n literal 114176 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 delta 107 zcmZoT!r5?yb3+Rwqs8V{Mr$C|e2}UAAQR*EgG@||BUvO^85pJq#4w4lX#iPkn5H+y zFwJA+nXVYiq|Ee!al2bAQyn9-0R!9g<8e&d+uh=sw3v9;FflMZVPOCRo$0lSOwE%& HFoggBTH_px diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.pdb b/BuildOutput/bin/Debug/net9.0/certmgr.pdb index 7e6392b98456b779fda57903d176ae9e3165ff3f..cd7dc155ec3df277458bf6622680b41287277649 100644 GIT binary patch delta 29060 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 FzW`OGlQ{qY delta 19360 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 w : ICerti using (X509Certificate2 publicOnlyCert = request.Create(settings.Issuer.SubjectName, sgen, notBefore, notAfter, serial)) { cert = JoinPrivateKey(publicOnlyCert, privateKey); - // using (X509Certificate2 temp = JoinPrivateKey(publicOnlyCert, privateKey)) - // { - // // Generated instance of the cert can't be added to cert-store (private key is missing) if requested by the caller. - // // To avoid this recreate the cert - // cert = Recreate(temp, settings); - // } } } else { cert = request.CreateSelfSigned(notBefore, notAfter); - // using (X509Certificate2 temp = request.CreateSelfSigned(notBefore, notAfter)) - // { - // // Generated instance of the cert can't be added to cert-store (private key is missing) if requested by the caller. - // // To avoid this recreate the cert - // cert = Recreate(temp, settings); - // } } } @@ -170,7 +158,7 @@ internal abstract class CertificateGeneratorBase : ICerti { try { - AsymmetricAlgorithm pk = issuerCertificate.PrivateKey; + AsymmetricAlgorithm? pk = issuerCertificate.PrivateKey; throw new CertGenException("Unsupported type of private-key: '{0}'", pk?.GetType().FullName ?? ""); } catch (CertGenException) @@ -201,22 +189,13 @@ internal abstract class CertificateGeneratorBase : ICerti return serial; } - private X509Certificate2 Recreate(X509Certificate2 source, CertificateSettings settings) - { - byte[] data = source.Export(X509ContentType.Pfx, string.Empty); - X509KeyStorageFlags flags = X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet; - if (!settings.ExportableKeys) - { - flags &= ~X509KeyStorageFlags.Exportable; - } - - X509Certificate2 target = X509CertificateLoader.LoadPkcs12(data, string.Empty); - target.FriendlyName = settings.FriendlyName; - return target; - } - private string CreateCommonName(string? subjectName) { + if (subjectName == null) + { + throw new CertGenException("Cannot create common-name for certificate as subject-name is null"); + } + string cn; if (subjectName.StartsWith("CN=", StringComparison.OrdinalIgnoreCase)) diff --git a/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs b/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs index 1708e80..1dee062 100644 --- a/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs +++ b/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs @@ -2,7 +2,7 @@ namespace CertMgr.CertGen.Utils; -public sealed class CollectionEquivalencyComparer : IEqualityComparer> +public sealed class CollectionEquivalencyComparer : IEqualityComparer> where T : notnull { public bool Equals(IEnumerable? x, IEnumerable? y) { diff --git a/certmgr/Core/Attributes/SettingAttribute.cs b/certmgr/Core/Attributes/SettingAttribute.cs index 5736a00..96b489d 100644 --- a/certmgr/Core/Attributes/SettingAttribute.cs +++ b/certmgr/Core/Attributes/SettingAttribute.cs @@ -8,6 +8,7 @@ public sealed class SettingAttribute : Attribute { Name = name; IsMandatory = false; + AlternateNames = Array.Empty(); } public string Name { [DebuggerStepThrough] get; } diff --git a/certmgr/Core/Cli/CliParser.cs b/certmgr/Core/Cli/CliParser.cs index b59edbb..1ce208c 100644 --- a/certmgr/Core/Cli/CliParser.cs +++ b/certmgr/Core/Cli/CliParser.cs @@ -6,7 +6,7 @@ public sealed class CliParser { public Task ParseAsync(string[] args, CancellationToken cancellationToken) { - CLog.Info("parsing arguments..."); + CLog.Info("Parsing arguments..."); RawArguments rawArgs = new RawArguments(args.Length); @@ -54,7 +54,7 @@ public sealed class CliParser } } - CLog.Info("parsing arguments... done (found {0} arguments)", rawArgs.Count); + CLog.Info("Parsing arguments... done (found {0} arguments)", rawArgs.Count); return Task.FromResult(rawArgs); } diff --git a/certmgr/Core/Converters/Impl/StringConverter.cs b/certmgr/Core/Converters/Impl/StringConverter.cs index 4f66aa9..bbccfdc 100644 --- a/certmgr/Core/Converters/Impl/StringConverter.cs +++ b/certmgr/Core/Converters/Impl/StringConverter.cs @@ -4,7 +4,7 @@ public sealed class StringConverter : ValueConverter { protected override Task DoConvertAsync(string rawValue, Type targetType, CancellationToken cancellationToken) { - return Task.FromResult(rawValue); + return Task.FromResult((string?)rawValue); } } diff --git a/certmgr/Core/Converters/Impl/TimeSpanConverter.cs b/certmgr/Core/Converters/Impl/TimeSpanConverter.cs index 9b54015..d814d86 100644 --- a/certmgr/Core/Converters/Impl/TimeSpanConverter.cs +++ b/certmgr/Core/Converters/Impl/TimeSpanConverter.cs @@ -15,7 +15,11 @@ public sealed class TimeSpanConverter : ValueConverter TimeSpan? result; - if (int.TryParse(valueSpan, out int value)) + if (TimeSpan.TryParse(valueSpan, out TimeSpan tmp)) + { + result = tmp; + } + else if (int.TryParse(valueSpan, out int value)) { switch (unit) { diff --git a/certmgr/Core/JobExecutor.cs b/certmgr/Core/JobExecutor.cs index 479f1c7..293e0f5 100644 --- a/certmgr/Core/JobExecutor.cs +++ b/certmgr/Core/JobExecutor.cs @@ -1,4 +1,5 @@ -using System.Reflection; +using System.Diagnostics; +using System.Reflection; using System.Text; using CertMgr.Core.Cli; @@ -24,10 +25,32 @@ internal sealed class JobExecutor if (jobs.TryGet(rawArg.Values.First(), out JobDescriptor? descriptor)) { - IJob job = await CreateJobAsync(descriptor, rawArgs, cancellationToken).ConfigureAwait(false); + IJob job; + try + { + job = await CreateJobAsync(descriptor, rawArgs, cancellationToken).ConfigureAwait(false); + } + catch (Exception e) + { + CLog.Error(e, "Failed to instantiate job '{0}'", rawArg.Values.First()); + throw new JobException(e, "Failed to instantiate job '{0}'", rawArg.Values.First()); + } - JobResult result = await job.ExecuteAsync(cancellationToken).ConfigureAwait(false); - errorLevel = result.ErrorLevel; + Stopwatch sw = Stopwatch.StartNew(); + try + { + CLog.Info("Executing job '{0}'...", job.Name); + + JobResult result = await job.ExecuteAsync(cancellationToken).ConfigureAwait(false); + errorLevel = result.ErrorLevel; + + CLog.Info("Executing job '{0}'... done (finished with error-level {1}, took {2})", job.Name, errorLevel, sw.Elapsed); + } + catch (Exception e) + { + CLog.Info("Executing job '{0}'... done (threw exception after {1})", job.Name, sw.Elapsed); + throw new JobException(e, "Failed to execute job '{0}'", job.Name); + } } else { diff --git a/certmgr/Core/JobRegistry.cs b/certmgr/Core/JobRegistry.cs index 29ae281..e654cd7 100644 --- a/certmgr/Core/JobRegistry.cs +++ b/certmgr/Core/JobRegistry.cs @@ -49,7 +49,14 @@ internal sealed class JobRegistry { if (jobName == null && settingsType != null) { - CLog.Error(errorMessage); + if (errorMessage != null) + { + CLog.Error(errorMessage); + } + else + { + CLog.Error("Failed to get name of job from type '{0}'", type.ToString(false)); + } } if (jobName != null && settingsType == null) { @@ -59,7 +66,7 @@ internal sealed class JobRegistry } } - CLog.Info("Loading job registry... done (registered {0} jobs)", _items.Count); + CLog.Info("Loading job registry... done (found {0} jobs)", _items.Count); return Task.CompletedTask; } diff --git a/certmgr/Core/SettingsBuilder.cs b/certmgr/Core/SettingsBuilder.cs index 75ad264..dfe1b61 100644 --- a/certmgr/Core/SettingsBuilder.cs +++ b/certmgr/Core/SettingsBuilder.cs @@ -9,6 +9,7 @@ using CertMgr.Core.Cli; using CertMgr.Core.Converters; using CertMgr.Core.Jobs; using CertMgr.Core.Log; +using CertMgr.Core.Utils; using CertMgr.Core.Validation; namespace CertMgr.Core; @@ -34,21 +35,29 @@ internal sealed class SettingsBuilder { (bool isCollection, Type elementType) = GetValueType(propertyInfo); - (bool converted, object? convertedValue) = await ConvertRawValueAsync(settingAttribute, rawArg, isCollection, elementType, cancellationToken).ConfigureAwait(false); - if (converted) + try { - propertyInfo.SetValue(settings, convertedValue); - - if (settingAttribute.Validator != null) + (bool converted, object? convertedValue) = await ConvertRawValueAsync(settingAttribute, rawArg, isCollection, propertyInfo.PropertyType, elementType, cancellationToken).ConfigureAwait(false); + if (converted) { - ISettingValidator? validator = (ISettingValidator?)Activator.CreateInstance(settingAttribute.Validator, [settingAttribute.Name]); - if (validator != null) + propertyInfo.SetValue(settings, convertedValue); + + if (settingAttribute.Validator != null) { - ValidationResult valres = await validator.ValidateAsync(convertedValue, cancellationToken).ConfigureAwait(false); - settings.ValidationResults.Add(valres); + ISettingValidator? validator = (ISettingValidator?)Activator.CreateInstance(settingAttribute.Validator, [settingAttribute.Name]); + if (validator != null) + { + ValidationResult valres = await validator.ValidateAsync(convertedValue, cancellationToken).ConfigureAwait(false); + settings.ValidationResults.Add(valres); + } } } } + catch (Exception e) + { + CLog.Error(e, "Failed to process property '{0}' (of type '{1}') in settings of type '{2}'", propertyInfo.Name, propertyInfo.PropertyType.ToString(false), _settingsType.ToString(false)); + throw new CertMgrException(e, "Failed to process property '{0}' (of type '{1}') in settings of type '{2}'", propertyInfo.Name, propertyInfo.PropertyType.ToString(false), _settingsType.ToString(false)); + } } else if (settingAttribute.IsMandatory) { @@ -65,7 +74,7 @@ internal sealed class SettingsBuilder } else { - CLog.Error("Default value for argument '{0}' is specified, but its type is '{1}' instead of expected '{2}'", settingAttribute.Name, settingAttribute.Default?.GetType().Name ?? "", elementType); + CLog.Error("Default value for argument '{0}' is specified, but its type is '{1}' instead of expected '{2}'", settingAttribute.Name, settingAttribute.Default?.GetType().ToString(false) ?? "", elementType.ToString(false)); } } } @@ -141,7 +150,7 @@ internal sealed class SettingsBuilder return settings; } - private async Task<(bool success, object? convertedValue)> ConvertRawValueAsync(SettingAttribute settingAttribute, RawArgument rawArg, bool isCollection, Type targetType, CancellationToken cancellationToken) + private async Task<(bool success, object? convertedValue)> ConvertRawValueAsync(SettingAttribute settingAttribute, RawArgument rawArg, bool isCollection, Type collectionType, Type elementType, CancellationToken cancellationToken) { bool success = false; object? convertedValue = null; @@ -150,10 +159,12 @@ internal sealed class SettingsBuilder { if (TryGetCustomConverter(settingAttribute, out IValueConverter? customConverter)) { - List values = new List(); + Type listType = typeof(List<>).MakeGenericType(elementType); + IList values = (IList)Activator.CreateInstance(listType)!; + foreach (string rawValue in rawArg.Values) { - convertedValue = await customConverter.ConvertAsync(rawValue, targetType, cancellationToken).ConfigureAwait(false); + convertedValue = await customConverter.ConvertAsync(rawValue, elementType, cancellationToken).ConfigureAwait(false); values.Add(convertedValue); } convertedValue = values; @@ -161,15 +172,17 @@ internal sealed class SettingsBuilder } else { - List values = new List(); + Type listType = typeof(List<>).MakeGenericType(elementType); + IList values = (IList)Activator.CreateInstance(listType)!; + foreach (string rawValue in rawArg.Values) { - if (TryConvertValue(rawValue, targetType, out convertedValue)) + if (TryConvertValue(rawValue, elementType, out convertedValue)) { values.Add(convertedValue); } } - convertedValue = values; + convertedValue = values; // BuildCollectionValue(collectionType, elementType, values); success = true; } } @@ -177,10 +190,10 @@ internal sealed class SettingsBuilder { if (TryGetCustomConverter(settingAttribute, out IValueConverter? customConverter)) { - convertedValue = await customConverter.ConvertAsync(rawArg.Values.First(), targetType, cancellationToken).ConfigureAwait(false); + convertedValue = await customConverter.ConvertAsync(rawArg.Values.First(), elementType, cancellationToken).ConfigureAwait(false); success = true; } - else if (TryConvertValue(rawArg.Values.First(), targetType, out convertedValue)) + else if (TryConvertValue(rawArg.Values.First(), elementType, out convertedValue)) { success = true; } @@ -192,6 +205,58 @@ internal sealed class SettingsBuilder return (success, convertedValue); } + private static object BuildCollectionValue(Type collectionType, Type elementType, IReadOnlyList items) + { + // convert source collection with 'items' of type 'object?' to collection with items of requested type: + Type listType = typeof(List<>).MakeGenericType(elementType); + IList typedList = (IList)Activator.CreateInstance(listType)!; + + foreach (object? item in items) + { + typedList.Add(item); + } + + if (collectionType.IsArray) + { + Array array = Array.CreateInstance(elementType, typedList.Count); + typedList.CopyTo(array, 0); + return array; + } + + // it is either IEnumerable or ICollection or IList or List + if (collectionType.IsAssignableFrom(listType)) + { + return typedList; + } + + // we do not know the type, but try to instantiate 'collectionType' and if it implements ICollection<>, then fill it + object? instance = Activator.CreateInstance(collectionType); + if (instance != null) + { + Type? iCollectionT = collectionType + .GetInterfaces() + .FirstOrDefault(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(ICollection<>)); + + if (iCollectionT != null) + { + MethodInfo? add = iCollectionT.GetMethod("Add"); + if (add != null) + { + foreach (object? item in typedList) + { + add.Invoke(instance, new object?[] { item }); + } + return instance; + } + } + } + + // try it as array, we fail anyway + Array fallback = Array.CreateInstance(elementType, typedList.Count); + typedList.CopyTo(fallback, 0); + return fallback; + } + private bool TryGetCustomConverter(SettingAttribute settingAttribute, [NotNullWhen(true)] out IValueConverter? customConverter) { customConverter = null; @@ -266,67 +331,14 @@ internal sealed class SettingsBuilder return (true, type.GetGenericArguments()[0]); } - if (type.GetInterfaces().Any(i => - i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEnumerable<>))) + foreach (Type i in type.GetInterfaces()) { - return (true, type.GetGenericArguments()[0]); + if (i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEnumerable<>)) + { + return (true, i.GetGenericArguments()[0]); + } } - // if (type.IsGenericType && typeof(IEnumerable<>).IsAssignableFrom(type.GetGenericTypeDefinition())) - // { - // return (true, type.GetGenericArguments()[0]); - // } - // if (t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ICollection<>))) - // { - // return (true, t.GetInterfaces().First(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(ICollection<>)).GetGenericArguments()[0]); - // } - // if (t.IsGenericType && (t.GetGenericTypeDefinition() == typeof(List<>))) - // { - // return (true, t.GetGenericArguments()[0]); - // } - return (false, null); } - - private static bool IsEnumerableType(Type type) - { - if (type == null) - { - return false; - } - - if (type == typeof(string)) - { - return false; - } - - if (type.IsArray) - { - return true; - } - - if (typeof(IEnumerable).IsAssignableFrom(type)) - { - return true; - } - - if (type.GetInterfaces().Any(i => - i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEnumerable<>))) - { - return true; - } - - return false; - } - - private static Type UnwrapNullable(Type type) - { - Type? underlying = Nullable.GetUnderlyingType(type); - if (underlying != null) - { - return underlying; - } - - return type; - } } diff --git a/certmgr/Core/Utils/Extenders.cs b/certmgr/Core/Utils/Extenders.cs index 194e06e..ffac83b 100644 --- a/certmgr/Core/Utils/Extenders.cs +++ b/certmgr/Core/Utils/Extenders.cs @@ -126,7 +126,7 @@ internal static class Extenders } } - public static bool Equivalent(this IEnumerable left, IEnumerable right, IEqualityComparer? comparer = null) + public static bool Equivalent(this IEnumerable left, IEnumerable right, IEqualityComparer? comparer = null) where T : notnull { if (ReferenceEquals(left, right)) { diff --git a/certmgr/Core/Utils/StringBuilderCache.cs b/certmgr/Core/Utils/StringBuilderCache.cs index 447975f..e4d2186 100644 --- a/certmgr/Core/Utils/StringBuilderCache.cs +++ b/certmgr/Core/Utils/StringBuilderCache.cs @@ -99,7 +99,6 @@ internal static class StringBuilderCache if (Interlocked.Exchange(ref _disposed, 1) == 0) { StringBuilder? sb = _sb; - _sb = null; Release(sb); } } @@ -121,7 +120,7 @@ internal static class StringBuilderCache return s; } - public StringBuilder Builder => _sb; + public StringBuilder Builder => _disposed == 0 ? _sb : throw new ObjectDisposedException(nameof(ScopedBuilder)); public static implicit operator StringBuilder(ScopedBuilder b) { diff --git a/certmgr/Core/Utils/StringFormatter.cs b/certmgr/Core/Utils/StringFormatter.cs index fbc0071..63451c6 100644 --- a/certmgr/Core/Utils/StringFormatter.cs +++ b/certmgr/Core/Utils/StringFormatter.cs @@ -12,6 +12,8 @@ internal static class StringFormatter } catch (Exception e) { + e.GetType(); + using StringBuilderCache.ScopedBuilder lease = StringBuilderCache.AcquireScoped(); StringBuilder sb = lease.Builder; diff --git a/certmgr/Jobs/CertificateSettings.cs b/certmgr/Jobs/CertificateSettings.cs index b7148bb..0b7378d 100644 --- a/certmgr/Jobs/CertificateSettings.cs +++ b/certmgr/Jobs/CertificateSettings.cs @@ -40,7 +40,7 @@ public sealed class CertificateSettings : JobSettings [Setting("is-certificate-authority", Default = false, AlternateNames = ["isca"])] public bool IsCertificateAuthority { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } - [Setting("issuer", Converter = typeof(StorageConverter))] + [Setting("issuer-certificate", Converter = typeof(StorageConverter))] public IStorage? Issuer { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } [Setting("issuer-password")] diff --git a/certmgr/Program.cs b/certmgr/Program.cs index 68e563f..83a9dc1 100644 --- a/certmgr/Program.cs +++ b/certmgr/Program.cs @@ -6,8 +6,17 @@ internal static class Program { private static async Task Main(string[] args) { - args = ["--job=create-certificate", "--issuer=file|o|c:\\friend2.pfx", "--issuer-password=aaa", "--subject=hello", "--san=world", "--algorithm=ecdsa", "--ecdsa-curve=p384", "--storage=file|w|c:\\mycert.pfx", "--validity-period=2d"]; - // args = ["--job=create-certificate", "--subject=hello", "--algorithm=ecdsa", "--curve=p384"]; + args = [ + "--job=create-certificate", + "--issuer-certificate=file|o|c:\\friend2.pfx", + "--issuer-password=aaa", + "--subject=hello", + "--san=world", + "--algorithm=ecdsa", + "--ecdsa-curve=p384", + "--storage=file|w|c:\\mycert.pfx", + "--validity-period=2d" ]; + using CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromMinutes(1)); JobExecutor executor = new JobExecutor();