From fbe64afd418f444ea2866717a8df951ebff75e55 Mon Sep 17 00:00:00 2001 From: grim Date: Sun, 2 Nov 2025 18:32:52 +0100 Subject: [PATCH] new job get-certificate-info --- BuildOutput/bin/Debug/net9.0/certmgr.dll | Bin 145920 -> 154112 bytes BuildOutput/bin/Debug/net9.0/certmgr.exe | Bin 156160 -> 156160 bytes BuildOutput/bin/Debug/net9.0/certmgr.pdb | Bin 74104 -> 77628 bytes .../CertGen/CertGenException.cs | 2 +- .../CertGen/CertificateAlgorithm.cs | 2 +- .../CertGen/CertificateGeneratorBase.cs | 2 +- .../CertGen/CertificateManager.cs | 2 +- .../CertGen/CertificateSettings.cs | 2 +- .../CertGen/EcdsaCertificateGenerator.cs | 2 +- .../{ => Certificates}/CertGen/EcdsaCurve.cs | 2 +- .../CertGen/EcdsaGeneratorSettings.cs | 2 +- .../CertGen/GeneratorSettings.cs | 2 +- .../CertGen/GeneratorType.cs | 2 +- .../CertGen/HashAlgorithm.cs | 2 +- .../CertGen/ICertificateGenerator.cs | 2 +- .../{ => Certificates}/CertGen/KeyUsage.cs | 2 +- .../CertGen/RsaCertificateGenerator.cs | 2 +- .../CertGen/RsaGeneratorSettings.cs | 2 +- .../{ => Certificates}/CertGen/RsaKeySize.cs | 2 +- certmgr/{ => Certificates}/CertGen/SANKind.cs | 2 +- .../CertGen/SubjectAlternateName.cs | 2 +- .../CertGen/SubjectAlternateNames.cs | 2 +- .../Utils/CollectionEquivalencyComparer.cs | 2 +- .../CertGen/Utils/SubjectValidator.cs | 2 +- certmgr/Certificates/CertStoreSearcher.cs | 42 +++++++ .../Filters/ByThumbprintFilter.cs | 21 ++++ .../Certificates/Filters/CertificateFilter.cs | 21 ++++ .../Filters/CertificateFilterType.cs | 6 + certmgr/Certificates/Filters/KnownFilters.cs | 16 +++ certmgr/Core/CertMgrException.cs | 3 +- certmgr/Core/Converters/ConverterContext.cs | 6 - .../Core/Converters/EnumConverterContext.cs | 13 --- .../Converters/Impl/StorageKindConverter.cs | 18 --- certmgr/Core/{Storage => Filters}/Filter.cs | 2 +- certmgr/Core/{Storage => Filters}/IFilter.cs | 2 +- certmgr/Core/JobExecutor.cs | 4 + .../Core/Storage/CertStoreStorageContext.cs | 1 + certmgr/Core/Storage/CertificateFilter.cs | 27 ----- certmgr/Core/Storage/StorageType.cs | 3 +- certmgr/Core/Utils/Extenders.cs | 9 +- certmgr/Jobs/CertStore.cs | 23 ++++ certmgr/Jobs/CertStoreConverter.cs | 48 ++++++++ certmgr/Jobs/CertificateFilterConverter.cs | 52 +++++++++ certmgr/Jobs/CreateCertificateJob.cs | 12 +- ...ttings.cs => CreateCertificateSettings.cs} | 12 +- certmgr/Jobs/GetCertificateInfoJob.cs | 107 ++++++++++++++++++ certmgr/Jobs/GetCertificateInfoSettings.cs | 23 ++++ certmgr/Jobs/RsaKeySizeConverter.cs | 2 +- certmgr/Program.cs | 55 +++++---- certmgrTest/SubjectValidatorTest.cs | 2 +- 50 files changed, 445 insertions(+), 127 deletions(-) rename certmgr/{ => Certificates}/CertGen/CertGenException.cs (89%) rename certmgr/{ => Certificates}/CertGen/CertificateAlgorithm.cs (58%) rename certmgr/{ => Certificates}/CertGen/CertificateGeneratorBase.cs (99%) rename certmgr/{ => Certificates}/CertGen/CertificateManager.cs (95%) rename certmgr/{ => Certificates}/CertGen/CertificateSettings.cs (98%) rename certmgr/{ => Certificates}/CertGen/EcdsaCertificateGenerator.cs (97%) rename certmgr/{ => Certificates}/CertGen/EcdsaCurve.cs (58%) rename certmgr/{ => Certificates}/CertGen/EcdsaGeneratorSettings.cs (96%) rename certmgr/{ => Certificates}/CertGen/GeneratorSettings.cs (92%) rename certmgr/{ => Certificates}/CertGen/GeneratorType.cs (55%) rename certmgr/{ => Certificates}/CertGen/HashAlgorithm.cs (61%) rename certmgr/{ => Certificates}/CertGen/ICertificateGenerator.cs (85%) rename certmgr/{ => Certificates}/CertGen/KeyUsage.cs (97%) rename certmgr/{ => Certificates}/CertGen/RsaCertificateGenerator.cs (97%) rename certmgr/{ => Certificates}/CertGen/RsaGeneratorSettings.cs (96%) rename certmgr/{ => Certificates}/CertGen/RsaKeySize.cs (65%) rename certmgr/{ => Certificates}/CertGen/SANKind.cs (51%) rename certmgr/{ => Certificates}/CertGen/SubjectAlternateName.cs (96%) rename certmgr/{ => Certificates}/CertGen/SubjectAlternateNames.cs (98%) rename certmgr/{ => Certificates}/CertGen/Utils/CollectionEquivalencyComparer.cs (92%) rename certmgr/{ => Certificates}/CertGen/Utils/SubjectValidator.cs (99%) create mode 100644 certmgr/Certificates/CertStoreSearcher.cs create mode 100644 certmgr/Certificates/Filters/ByThumbprintFilter.cs create mode 100644 certmgr/Certificates/Filters/CertificateFilter.cs create mode 100644 certmgr/Certificates/Filters/CertificateFilterType.cs create mode 100644 certmgr/Certificates/Filters/KnownFilters.cs delete mode 100644 certmgr/Core/Converters/ConverterContext.cs delete mode 100644 certmgr/Core/Converters/EnumConverterContext.cs rename certmgr/Core/{Storage => Filters}/Filter.cs (97%) rename certmgr/Core/{Storage => Filters}/IFilter.cs (75%) delete mode 100644 certmgr/Core/Storage/CertificateFilter.cs create mode 100644 certmgr/Jobs/CertStore.cs create mode 100644 certmgr/Jobs/CertStoreConverter.cs create mode 100644 certmgr/Jobs/CertificateFilterConverter.cs rename certmgr/Jobs/{CertificateSettings.cs => CreateCertificateSettings.cs} (95%) create mode 100644 certmgr/Jobs/GetCertificateInfoJob.cs create mode 100644 certmgr/Jobs/GetCertificateInfoSettings.cs diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.dll b/BuildOutput/bin/Debug/net9.0/certmgr.dll index a5fcb2189f872e8e1fbef1bacabe3534fb65620b..1e2cbddad5cccb58d0b2c74aa4f1eda37389141d 100644 GIT binary patch literal 154112 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≀3LuhRI52Z>VKdVz3A) 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 literal 145920 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 diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.exe b/BuildOutput/bin/Debug/net9.0/certmgr.exe index 9a5164c6350710d191c9e724afaaa23e2a82cbce..fcbc90a7ef870b0de3dc38a40b5f8f530200a59e 100644 GIT binary patch delta 99 zcmZoT!r1^sEsR^3zQp-kFqkqVGZ-)!18Eb66b2)PL?AR`Fa(mOK+*^(ngpbi!LkMn hX+X9mP}Cf#!-ydjC~gRp2gw=(c}Clv!5j#afNUe6h$RpwGZ-^i0OgZ_ iBBnr|DUfdh6iEWI6M-r$fV#~X41qXhyK_9#UM2uPN)tT* diff --git a/BuildOutput/bin/Debug/net9.0/certmgr.pdb b/BuildOutput/bin/Debug/net9.0/certmgr.pdb index fdd65cb763d41e7fdbf6050af595eac0b8bac761..f20692e8d994cd13a45deba2edce6c3c08a3e072 100644 GIT binary patch delta 31613 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 So|}exn)aCwRTud2%>M@-ui%LQ diff --git a/certmgr/CertGen/CertGenException.cs b/certmgr/Certificates/CertGen/CertGenException.cs similarity index 89% rename from certmgr/CertGen/CertGenException.cs rename to certmgr/Certificates/CertGen/CertGenException.cs index a3042de..07d4690 100644 --- a/certmgr/CertGen/CertGenException.cs +++ b/certmgr/Certificates/CertGen/CertGenException.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public class CertGenException : Exception { diff --git a/certmgr/CertGen/CertificateAlgorithm.cs b/certmgr/Certificates/CertGen/CertificateAlgorithm.cs similarity index 58% rename from certmgr/CertGen/CertificateAlgorithm.cs rename to certmgr/Certificates/CertGen/CertificateAlgorithm.cs index 88b611a..0ec5043 100644 --- a/certmgr/CertGen/CertificateAlgorithm.cs +++ b/certmgr/Certificates/CertGen/CertificateAlgorithm.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum CertificateAlgorithm { diff --git a/certmgr/CertGen/CertificateGeneratorBase.cs b/certmgr/Certificates/CertGen/CertificateGeneratorBase.cs similarity index 99% rename from certmgr/CertGen/CertificateGeneratorBase.cs rename to certmgr/Certificates/CertGen/CertificateGeneratorBase.cs index ea3ee47..e5c2945 100644 --- a/certmgr/CertGen/CertificateGeneratorBase.cs +++ b/certmgr/Certificates/CertGen/CertificateGeneratorBase.cs @@ -5,7 +5,7 @@ using System.Security.Cryptography.X509Certificates; using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; internal abstract class CertificateGeneratorBase : ICertificateGenerator where TAlgorithm : AsymmetricAlgorithm diff --git a/certmgr/CertGen/CertificateManager.cs b/certmgr/Certificates/CertGen/CertificateManager.cs similarity index 95% rename from certmgr/CertGen/CertificateManager.cs rename to certmgr/Certificates/CertGen/CertificateManager.cs index a2343b3..6c3fcfc 100644 --- a/certmgr/CertGen/CertificateManager.cs +++ b/certmgr/Certificates/CertGen/CertificateManager.cs @@ -2,7 +2,7 @@ using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class CertificateManager { diff --git a/certmgr/CertGen/CertificateSettings.cs b/certmgr/Certificates/CertGen/CertificateSettings.cs similarity index 98% rename from certmgr/CertGen/CertificateSettings.cs rename to certmgr/Certificates/CertGen/CertificateSettings.cs index 0037189..e4d4003 100644 --- a/certmgr/CertGen/CertificateSettings.cs +++ b/certmgr/Certificates/CertGen/CertificateSettings.cs @@ -4,7 +4,7 @@ using System.Security.Cryptography.X509Certificates; using CertMgr.Core.Utils; using CertMgr.Core.Validation; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class CertificateSettings { diff --git a/certmgr/CertGen/EcdsaCertificateGenerator.cs b/certmgr/Certificates/CertGen/EcdsaCertificateGenerator.cs similarity index 97% rename from certmgr/CertGen/EcdsaCertificateGenerator.cs rename to certmgr/Certificates/CertGen/EcdsaCertificateGenerator.cs index 92aaaed..22d0b13 100644 --- a/certmgr/CertGen/EcdsaCertificateGenerator.cs +++ b/certmgr/Certificates/CertGen/EcdsaCertificateGenerator.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography.X509Certificates; using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; internal sealed class EcdsaCertificateGenerator : CertificateGeneratorBase { diff --git a/certmgr/CertGen/EcdsaCurve.cs b/certmgr/Certificates/CertGen/EcdsaCurve.cs similarity index 58% rename from certmgr/CertGen/EcdsaCurve.cs rename to certmgr/Certificates/CertGen/EcdsaCurve.cs index b4baf94..1ecb2f2 100644 --- a/certmgr/CertGen/EcdsaCurve.cs +++ b/certmgr/Certificates/CertGen/EcdsaCurve.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum EcdsaCurve { diff --git a/certmgr/CertGen/EcdsaGeneratorSettings.cs b/certmgr/Certificates/CertGen/EcdsaGeneratorSettings.cs similarity index 96% rename from certmgr/CertGen/EcdsaGeneratorSettings.cs rename to certmgr/Certificates/CertGen/EcdsaGeneratorSettings.cs index d56e0f3..404d34b 100644 --- a/certmgr/CertGen/EcdsaGeneratorSettings.cs +++ b/certmgr/Certificates/CertGen/EcdsaGeneratorSettings.cs @@ -2,7 +2,7 @@ using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class EcdsaGeneratorSettings : GeneratorSettings { diff --git a/certmgr/CertGen/GeneratorSettings.cs b/certmgr/Certificates/CertGen/GeneratorSettings.cs similarity index 92% rename from certmgr/CertGen/GeneratorSettings.cs rename to certmgr/Certificates/CertGen/GeneratorSettings.cs index d56b111..bf507a2 100644 --- a/certmgr/CertGen/GeneratorSettings.cs +++ b/certmgr/Certificates/CertGen/GeneratorSettings.cs @@ -1,6 +1,6 @@ using System.Diagnostics; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public abstract class GeneratorSettings { diff --git a/certmgr/CertGen/GeneratorType.cs b/certmgr/Certificates/CertGen/GeneratorType.cs similarity index 55% rename from certmgr/CertGen/GeneratorType.cs rename to certmgr/Certificates/CertGen/GeneratorType.cs index 71f1f8a..a1c03c4 100644 --- a/certmgr/CertGen/GeneratorType.cs +++ b/certmgr/Certificates/CertGen/GeneratorType.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum GeneratorType { diff --git a/certmgr/CertGen/HashAlgorithm.cs b/certmgr/Certificates/CertGen/HashAlgorithm.cs similarity index 61% rename from certmgr/CertGen/HashAlgorithm.cs rename to certmgr/Certificates/CertGen/HashAlgorithm.cs index 81f4407..32ef9b0 100644 --- a/certmgr/CertGen/HashAlgorithm.cs +++ b/certmgr/Certificates/CertGen/HashAlgorithm.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum HashAlgorithm { diff --git a/certmgr/CertGen/ICertificateGenerator.cs b/certmgr/Certificates/CertGen/ICertificateGenerator.cs similarity index 85% rename from certmgr/CertGen/ICertificateGenerator.cs rename to certmgr/Certificates/CertGen/ICertificateGenerator.cs index 2ebbd96..50bbd69 100644 --- a/certmgr/CertGen/ICertificateGenerator.cs +++ b/certmgr/Certificates/CertGen/ICertificateGenerator.cs @@ -1,6 +1,6 @@ using System.Security.Cryptography.X509Certificates; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public interface ICertificateGenerator : IAsyncDisposable { diff --git a/certmgr/CertGen/KeyUsage.cs b/certmgr/Certificates/CertGen/KeyUsage.cs similarity index 97% rename from certmgr/CertGen/KeyUsage.cs rename to certmgr/Certificates/CertGen/KeyUsage.cs index 9d946be..de316c2 100644 --- a/certmgr/CertGen/KeyUsage.cs +++ b/certmgr/Certificates/CertGen/KeyUsage.cs @@ -1,6 +1,6 @@ using System.Security.Cryptography.X509Certificates; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; [Flags] public enum KeyUsage diff --git a/certmgr/CertGen/RsaCertificateGenerator.cs b/certmgr/Certificates/CertGen/RsaCertificateGenerator.cs similarity index 97% rename from certmgr/CertGen/RsaCertificateGenerator.cs rename to certmgr/Certificates/CertGen/RsaCertificateGenerator.cs index 86938f3..4286f6e 100644 --- a/certmgr/CertGen/RsaCertificateGenerator.cs +++ b/certmgr/Certificates/CertGen/RsaCertificateGenerator.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography.X509Certificates; using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; internal sealed class RsaCertificateGenerator : CertificateGeneratorBase { diff --git a/certmgr/CertGen/RsaGeneratorSettings.cs b/certmgr/Certificates/CertGen/RsaGeneratorSettings.cs similarity index 96% rename from certmgr/CertGen/RsaGeneratorSettings.cs rename to certmgr/Certificates/CertGen/RsaGeneratorSettings.cs index dc0a3c3..87762bb 100644 --- a/certmgr/CertGen/RsaGeneratorSettings.cs +++ b/certmgr/Certificates/CertGen/RsaGeneratorSettings.cs @@ -2,7 +2,7 @@ using CertMgr.Core.Exceptions; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class RsaGeneratorSettings : GeneratorSettings { diff --git a/certmgr/CertGen/RsaKeySize.cs b/certmgr/Certificates/CertGen/RsaKeySize.cs similarity index 65% rename from certmgr/CertGen/RsaKeySize.cs rename to certmgr/Certificates/CertGen/RsaKeySize.cs index 87e6bad..e8e65f5 100644 --- a/certmgr/CertGen/RsaKeySize.cs +++ b/certmgr/Certificates/CertGen/RsaKeySize.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum RsaKeySize { diff --git a/certmgr/CertGen/SANKind.cs b/certmgr/Certificates/CertGen/SANKind.cs similarity index 51% rename from certmgr/CertGen/SANKind.cs rename to certmgr/Certificates/CertGen/SANKind.cs index 28efb1a..5409b01 100644 --- a/certmgr/CertGen/SANKind.cs +++ b/certmgr/Certificates/CertGen/SANKind.cs @@ -1,4 +1,4 @@ -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public enum SANKind { diff --git a/certmgr/CertGen/SubjectAlternateName.cs b/certmgr/Certificates/CertGen/SubjectAlternateName.cs similarity index 96% rename from certmgr/CertGen/SubjectAlternateName.cs rename to certmgr/Certificates/CertGen/SubjectAlternateName.cs index 93c0d63..d185d7f 100644 --- a/certmgr/CertGen/SubjectAlternateName.cs +++ b/certmgr/Certificates/CertGen/SubjectAlternateName.cs @@ -1,6 +1,6 @@ using System.Diagnostics; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class SubjectAlternateName : IEquatable { diff --git a/certmgr/CertGen/SubjectAlternateNames.cs b/certmgr/Certificates/CertGen/SubjectAlternateNames.cs similarity index 98% rename from certmgr/CertGen/SubjectAlternateNames.cs rename to certmgr/Certificates/CertGen/SubjectAlternateNames.cs index 95e2a22..440705b 100644 --- a/certmgr/CertGen/SubjectAlternateNames.cs +++ b/certmgr/Certificates/CertGen/SubjectAlternateNames.cs @@ -3,7 +3,7 @@ using CertMgr.Core.Log; using CertMgr.Core.Utils; -namespace CertMgr.CertGen; +namespace CertMgr.Certificates.CertGen; public sealed class SubjectAlternateNames : IReadOnlyCollection { diff --git a/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs b/certmgr/Certificates/CertGen/Utils/CollectionEquivalencyComparer.cs similarity index 92% rename from certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs rename to certmgr/Certificates/CertGen/Utils/CollectionEquivalencyComparer.cs index 1dee062..539e2b7 100644 --- a/certmgr/CertGen/Utils/CollectionEquivalencyComparer.cs +++ b/certmgr/Certificates/CertGen/Utils/CollectionEquivalencyComparer.cs @@ -1,6 +1,6 @@ using CertMgr.Core.Utils; -namespace CertMgr.CertGen.Utils; +namespace CertMgr.Certificates.CertGen.Utils; public sealed class CollectionEquivalencyComparer : IEqualityComparer> where T : notnull { diff --git a/certmgr/CertGen/Utils/SubjectValidator.cs b/certmgr/Certificates/CertGen/Utils/SubjectValidator.cs similarity index 99% rename from certmgr/CertGen/Utils/SubjectValidator.cs rename to certmgr/Certificates/CertGen/Utils/SubjectValidator.cs index ad35d20..1fa1e04 100644 --- a/certmgr/CertGen/Utils/SubjectValidator.cs +++ b/certmgr/Certificates/CertGen/Utils/SubjectValidator.cs @@ -4,7 +4,7 @@ using System.Security.Cryptography.X509Certificates; using CertMgr.Core.Validation; -namespace CertMgr.CertGen.Utils; +namespace CertMgr.Certificates.CertGen.Utils; public sealed class SubjectValidator : IValueValidator { diff --git a/certmgr/Certificates/CertStoreSearcher.cs b/certmgr/Certificates/CertStoreSearcher.cs new file mode 100644 index 0000000..5778ffc --- /dev/null +++ b/certmgr/Certificates/CertStoreSearcher.cs @@ -0,0 +1,42 @@ +using System.Diagnostics; +using System.Security.Cryptography.X509Certificates; + +using CertMgr.Core.Filters; +using CertMgr.Jobs; + +namespace CertMgr.Certificates; + +public sealed class CertStoreSearcher +{ + public CertStoreSearcher(CertStore store) + { + Store = store; + } + + private CertStore Store { [DebuggerStepThrough] get; } + + public async Task> SearchAsync(IFilter filter, CancellationToken cancellationToken) + { + List certificates = new List(); + + using (X509Store store = new X509Store((StoreName)Store.Name, (StoreLocation)Store.Location)) + { + store.Open(OpenFlags.ReadOnly); + + foreach (X509Certificate2 cert in store.Certificates) + { + if (await filter.IsMatchAsync(cert, cancellationToken)) + { + certificates.Add(cert); + } + } + } + + return certificates; + } + + public override string ToString() + { + return string.Format("store = {0}/{1}", Store.Location, Store.Name); + } +} diff --git a/certmgr/Certificates/Filters/ByThumbprintFilter.cs b/certmgr/Certificates/Filters/ByThumbprintFilter.cs new file mode 100644 index 0000000..6bacfdf --- /dev/null +++ b/certmgr/Certificates/Filters/ByThumbprintFilter.cs @@ -0,0 +1,21 @@ +using System.Diagnostics; +using System.Security.Cryptography.X509Certificates; + +namespace CertMgr.Certificates.Filters; + +internal sealed class ByThumbprintFilter : CertificateFilter +{ + internal ByThumbprintFilter(string thumbprint) + : base(CertificateFilterType.Thumbprint) + { + Thumbprint = thumbprint; + } + + private string Thumbprint { [DebuggerStepThrough] get; } + + protected override Task DoIsMatchAsync(X509Certificate2 value, CancellationToken cancellationToken) + { + bool result = string.Equals(value.Thumbprint, Thumbprint, StringComparison.OrdinalIgnoreCase); + return Task.FromResult(result); + } +} diff --git a/certmgr/Certificates/Filters/CertificateFilter.cs b/certmgr/Certificates/Filters/CertificateFilter.cs new file mode 100644 index 0000000..7cb7b9e --- /dev/null +++ b/certmgr/Certificates/Filters/CertificateFilter.cs @@ -0,0 +1,21 @@ +using System.Diagnostics; +using System.Security.Cryptography.X509Certificates; + +using CertMgr.Core.Filters; + +namespace CertMgr.Certificates.Filters; + +public abstract class CertificateFilter : Filter +{ + internal CertificateFilter(CertificateFilterType type) + { + Type = type; + } + + public CertificateFilterType Type { [DebuggerStepThrough] get; } + + public override string ToString() + { + return string.Format("type = {0}", Type); + } +} diff --git a/certmgr/Certificates/Filters/CertificateFilterType.cs b/certmgr/Certificates/Filters/CertificateFilterType.cs new file mode 100644 index 0000000..5eb5d9a --- /dev/null +++ b/certmgr/Certificates/Filters/CertificateFilterType.cs @@ -0,0 +1,6 @@ +namespace CertMgr.Certificates.Filters; + +public enum CertificateFilterType +{ + Thumbprint = 1 +} diff --git a/certmgr/Certificates/Filters/KnownFilters.cs b/certmgr/Certificates/Filters/KnownFilters.cs new file mode 100644 index 0000000..0e401fb --- /dev/null +++ b/certmgr/Certificates/Filters/KnownFilters.cs @@ -0,0 +1,16 @@ +using System.Security.Cryptography.X509Certificates; + +using CertMgr.Core.Filters; + +namespace CertMgr.Certificates.Filters; + +public static class KnownFilters +{ + public static class Certificate + { + public static IFilter ByThumbprint(string thumbprint) + { + return new ByThumbprintFilter(thumbprint); + } + } +} diff --git a/certmgr/Core/CertMgrException.cs b/certmgr/Core/CertMgrException.cs index d8c6d6e..4638c22 100644 --- a/certmgr/Core/CertMgrException.cs +++ b/certmgr/Core/CertMgrException.cs @@ -1,4 +1,4 @@ -using CertMgr.Core.Utils; +/*using CertMgr.Core.Utils; namespace CertMgr.Core; @@ -13,3 +13,4 @@ public class CertMgrException : Exception { } } +*/ \ No newline at end of file diff --git a/certmgr/Core/Converters/ConverterContext.cs b/certmgr/Core/Converters/ConverterContext.cs deleted file mode 100644 index 7c230b4..0000000 --- a/certmgr/Core/Converters/ConverterContext.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CertMgr.Core.Converters; - -public class ConverterContext -{ - public static readonly ConverterContext Empty = new ConverterContext(); -} diff --git a/certmgr/Core/Converters/EnumConverterContext.cs b/certmgr/Core/Converters/EnumConverterContext.cs deleted file mode 100644 index eab1eb3..0000000 --- a/certmgr/Core/Converters/EnumConverterContext.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Diagnostics; - -namespace CertMgr.Core.Converters; - -public class EnumConverterContext : ConverterContext -{ - internal EnumConverterContext(Type targetType) - { - TargetType = targetType; - } - - public Type TargetType { [DebuggerStepThrough] get; } -} diff --git a/certmgr/Core/Converters/Impl/StorageKindConverter.cs b/certmgr/Core/Converters/Impl/StorageKindConverter.cs index 16b16ce..8b3e6e2 100644 --- a/certmgr/Core/Converters/Impl/StorageKindConverter.cs +++ b/certmgr/Core/Converters/Impl/StorageKindConverter.cs @@ -4,38 +4,20 @@ namespace CertMgr.Core.Converters.Impl; internal class StorageKindConverter : ValueConverter { - // private const char Separator = '|'; - protected override Task DoConvertAsync(string rawValue, Type targetType, CancellationToken cancellationToken) { ReadOnlySpan storageTypeSpan = rawValue.AsSpan(); - // int storageTypeSplitIndex = rawSpan.IndexOf(Separator); - // if (storageTypeSplitIndex == -1) - // { - // return Task.FromResult((IStorage?)EmptyStorage.Empty); - // } - IStorage? storage; - // ReadOnlySpan storageTypeSpan = rawSpan.Slice(0, storageTypeSplitIndex); - // ReadOnlySpan storageDefinition = rawSpan.Slice(storageTypeSplitIndex + 1); switch (storageTypeSpan) { case "file": storage = new FileStorage(); - // if (!TryGetFileStore(storageDefinition, out storage)) - // { - // storage = EmptyStorage.Empty; - // } break; case "certstore": case "cert-store": storage = new CertStoreStorage(); - //if (!TryGetCertStore(storageDefinition, out storage)) - //{ - // storage = EmptyStorage.Empty; - //} break; default: storage = EmptyStorage.Empty; diff --git a/certmgr/Core/Storage/Filter.cs b/certmgr/Core/Filters/Filter.cs similarity index 97% rename from certmgr/Core/Storage/Filter.cs rename to certmgr/Core/Filters/Filter.cs index d9156cd..f00ab82 100644 --- a/certmgr/Core/Storage/Filter.cs +++ b/certmgr/Core/Filters/Filter.cs @@ -2,7 +2,7 @@ using CertMgr.Core.Utils; -namespace CertMgr.Core.Storage; +namespace CertMgr.Core.Filters; public abstract class Filter : IFilter { diff --git a/certmgr/Core/Storage/IFilter.cs b/certmgr/Core/Filters/IFilter.cs similarity index 75% rename from certmgr/Core/Storage/IFilter.cs rename to certmgr/Core/Filters/IFilter.cs index d756dae..44c7e6f 100644 --- a/certmgr/Core/Storage/IFilter.cs +++ b/certmgr/Core/Filters/IFilter.cs @@ -1,4 +1,4 @@ -namespace CertMgr.Core.Storage; +namespace CertMgr.Core.Filters; public interface IFilter { diff --git a/certmgr/Core/JobExecutor.cs b/certmgr/Core/JobExecutor.cs index 4512452..145844e 100644 --- a/certmgr/Core/JobExecutor.cs +++ b/certmgr/Core/JobExecutor.cs @@ -45,6 +45,10 @@ internal sealed class JobExecutor errorLevel = result.ErrorLevel; CLog.Info("Executing job '{0}'... done (finished with error-level {1}, took {2})", job.Name, errorLevel, sw.Elapsed); + if (!string.IsNullOrEmpty(result.Message)) + { + CLog.Info(result.Message); + } } catch (Exception e) { diff --git a/certmgr/Core/Storage/CertStoreStorageContext.cs b/certmgr/Core/Storage/CertStoreStorageContext.cs index eb017e7..2450a4a 100644 --- a/certmgr/Core/Storage/CertStoreStorageContext.cs +++ b/certmgr/Core/Storage/CertStoreStorageContext.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using System.Security.Cryptography.X509Certificates; +using CertMgr.Core.Filters; using CertMgr.Core.Utils; namespace CertMgr.Core.Storage; diff --git a/certmgr/Core/Storage/CertificateFilter.cs b/certmgr/Core/Storage/CertificateFilter.cs deleted file mode 100644 index 4d57c2f..0000000 --- a/certmgr/Core/Storage/CertificateFilter.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Diagnostics; -using System.Security.Cryptography.X509Certificates; - -namespace CertMgr.Core.Storage; - -public static class CertificateFilter -{ - private abstract class CertFilter : Filter - { - } - - private sealed class ByThumbprintFilter : CertFilter - { - public ByThumbprintFilter(string thumbprint) - { - Thumbprint = thumbprint; - } - - public string Thumbprint { [DebuggerStepThrough] get; } - - protected override Task DoIsMatchAsync(X509Certificate2 value, CancellationToken cancellationToken) - { - bool result = string.Equals(value.Thumbprint, Thumbprint, StringComparison.OrdinalIgnoreCase); - return Task.FromResult(result); - } - } -} diff --git a/certmgr/Core/Storage/StorageType.cs b/certmgr/Core/Storage/StorageType.cs index 25e2487..e4138b6 100644 --- a/certmgr/Core/Storage/StorageType.cs +++ b/certmgr/Core/Storage/StorageType.cs @@ -1,6 +1,7 @@ -namespace CertMgr.Core.Storage; +/*namespace CertMgr.Core.Storage; public enum StorageType { File = 1 } +*/ \ No newline at end of file diff --git a/certmgr/Core/Utils/Extenders.cs b/certmgr/Core/Utils/Extenders.cs index ffac83b..558b962 100644 --- a/certmgr/Core/Utils/Extenders.cs +++ b/certmgr/Core/Utils/Extenders.cs @@ -25,7 +25,7 @@ internal static class Extenders { typeof(object), "object" }, }; - public static string ToSeparatedList(this IEnumerable items, Func formatter, string itemSeparator, string? lastItemSeparator = null) + public static string ToSeparatedList(this IEnumerable items, Func? formatter = null, string? itemSeparator = ",", string? lastItemSeparator = null) { using StringBuilderCache.ScopedBuilder lease = StringBuilderCache.AcquireScoped(); StringBuilder sb = lease.Builder; @@ -35,7 +35,7 @@ internal static class Extenders return sb.ToString(); } - public static void ToSeparatedList(this IEnumerable items, StringBuilder sb, Func formatter, string itemSeparator, string? lastItemSeparator = null) + public static void ToSeparatedList(this IEnumerable items, StringBuilder sb, Func? formatter, string? itemSeparator = null, string? lastItemSeparator = null) { if (!items.Any()) { @@ -245,4 +245,9 @@ internal static class Extenders return isOneOf; } + public static void AppendFormatLine(this StringBuilder sb, string format, params object[] args) + { + sb.AppendFormat(format, args); + sb.AppendLine(); + } } diff --git a/certmgr/Jobs/CertStore.cs b/certmgr/Jobs/CertStore.cs new file mode 100644 index 0000000..d88f9f7 --- /dev/null +++ b/certmgr/Jobs/CertStore.cs @@ -0,0 +1,23 @@ +using System.Diagnostics; + +using CertMgr.Core.Storage; + +namespace CertMgr.Jobs; + +public sealed class CertStore +{ + public CertStore(CertStoreLocation location, CertStoreName name) + { + Location = location; + Name = name; + } + + public CertStoreLocation Location { [DebuggerStepThrough] get; } + + public CertStoreName Name { [DebuggerStepThrough] get; } + + public override string ToString() + { + return string.Format("{0}/{1}", Location, Name); + } +} diff --git a/certmgr/Jobs/CertStoreConverter.cs b/certmgr/Jobs/CertStoreConverter.cs new file mode 100644 index 0000000..b8c6c60 --- /dev/null +++ b/certmgr/Jobs/CertStoreConverter.cs @@ -0,0 +1,48 @@ +using CertMgr.Core.Converters; +using CertMgr.Core.Log; +using CertMgr.Core.Storage; +using CertMgr.Core.Utils; + +namespace CertMgr.Jobs; + +internal sealed class CertStoreConverter : ValueConverter +{ + protected override Task DoConvertAsync(string rawValue, Type targetType, CancellationToken cancellationToken) + { + CertStore? store = null; + + if (string.IsNullOrEmpty(rawValue)) + { + return Task.FromResult(store); + } + + ReadOnlySpan span = rawValue.AsSpan(); + int separatorIndex = span.IndexOf('/'); + if (separatorIndex > -1 && separatorIndex < span.Length - 1) + { + ReadOnlySpan locationSpan = span.Slice(0, separatorIndex); + if (Enum.TryParse(locationSpan, true, out CertStoreLocation location) && Enum.IsDefined(location)) + { + ReadOnlySpan nameSpan = span.Slice(separatorIndex + 1, span.Length - separatorIndex - 1); + if (Enum.TryParse(nameSpan, true, out CertStoreName name) && Enum.IsDefined(name)) + { + store = new CertStore(location, name); + } + else + { + CLog.Error("Failed to parse cert-store name from value '{0}'. Value '{1}' is not valid name (available values: {2})", rawValue, nameSpan.ToString(), Enum.GetNames().ToSeparatedList()); + } + } + else + { + CLog.Error("Failed to parse cert-store location from value '{0}'. Value '{1}' is not valid location (available values: {2})", rawValue, locationSpan.ToString(), Enum.GetNames().ToSeparatedList()); + } + } + else + { + CLog.Error("Cannot parse cert-store from value '{0}'. Value must be '/'", rawValue); + } + + return Task.FromResult(store); + } +} diff --git a/certmgr/Jobs/CertificateFilterConverter.cs b/certmgr/Jobs/CertificateFilterConverter.cs new file mode 100644 index 0000000..f64a0ef --- /dev/null +++ b/certmgr/Jobs/CertificateFilterConverter.cs @@ -0,0 +1,52 @@ +using System.Security.Cryptography.X509Certificates; + +using CertMgr.Certificates.Filters; +using CertMgr.Core.Converters; +using CertMgr.Core.Filters; +using CertMgr.Core.Log; +using CertMgr.Core.Utils; + +namespace CertMgr.Jobs; + +internal sealed class CertificateFilterConverter : ValueConverter> +{ + protected override Task?> DoConvertAsync(string rawValue, Type targetType, CancellationToken cancellationToken) + { + IFilter? filter = null; + + if (string.IsNullOrEmpty(rawValue)) + { + return Task.FromResult(filter); + } + + ReadOnlySpan span = rawValue.AsSpan(); + int separatorIndex = span.IndexOf(':'); + if (separatorIndex > -1 && separatorIndex < span.Length - 1) + { + ReadOnlySpan filterTypeSpan = span.Slice(0, separatorIndex); + if (Enum.TryParse(filterTypeSpan, true, out CertificateFilterType filterType) && Enum.IsDefined(filterType)) + { + ReadOnlySpan nameSpan = span.Slice(separatorIndex + 1, span.Length - separatorIndex - 1); + string value = nameSpan.ToString(); + switch (filterType) + { + case CertificateFilterType.Thumbprint: + filter = KnownFilters.Certificate.ByThumbprint(value); + break; + default: + break; + } + } + else + { + CLog.Error("Failed to parse filter type from value '{0}'. (available values: {1})", rawValue, Enum.GetNames().ToSeparatedList()); + } + } + else + { + CLog.Error("Cannot parse filter from value '{0}'. Value must be ':'", rawValue); + } + + return Task.FromResult(filter); + } +} diff --git a/certmgr/Jobs/CreateCertificateJob.cs b/certmgr/Jobs/CreateCertificateJob.cs index 967eeee..87e16b3 100644 --- a/certmgr/Jobs/CreateCertificateJob.cs +++ b/certmgr/Jobs/CreateCertificateJob.cs @@ -1,6 +1,6 @@ using System.Security.Cryptography.X509Certificates; -using CertMgr.CertGen; +using CertMgr.Certificates.CertGen; using CertMgr.Core.Exceptions; using CertMgr.Core.Jobs; using CertMgr.Core.Log; @@ -9,17 +9,17 @@ using CertMgr.Core.Utils; namespace CertMgr.Jobs; -public sealed class CreateCertificateJob : Job +public sealed class CreateCertificateJob : Job { public const string ID = "create-certificate"; protected override async Task DoExecuteAsync(CancellationToken cancellationToken) { - CertificateSettings cs = Settings; + CreateCertificateSettings cs = Settings; CLog.Info("creating certificate using settings: subject = '{0}', algorithm = '{1}', curve = '{2}'", cs.Subject, cs.Algorithm?.ToString() ?? "", cs.Curve); GeneratorSettings gs = CreateGeneratorSettings(); - CertGen.CertificateSettings cgcs = await CreateCertificateSettingsAsync(cancellationToken).ConfigureAwait(false); + CertificateSettings cgcs = await CreateCertificateSettingsAsync(cancellationToken).ConfigureAwait(false); CertificateManager cm = new CertificateManager(); using (X509Certificate2 cert = await cm.CreateAsync(cgcs, gs, cancellationToken).ConfigureAwait(false)) @@ -65,11 +65,11 @@ public sealed class CreateCertificateJob : Job return gs; } - private async Task CreateCertificateSettingsAsync(CancellationToken cancellationToken) + private async Task CreateCertificateSettingsAsync(CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - CertGen.CertificateSettings cgcs = new CertGen.CertificateSettings(); + CertificateSettings cgcs = new CertificateSettings(); cgcs.SubjectName = Settings.Subject; cgcs.ValidityPeriod = Settings.ValidityPeriod.HasValue ? Settings.ValidityPeriod.Value : TimeSpan.FromDays(365); diff --git a/certmgr/Jobs/CertificateSettings.cs b/certmgr/Jobs/CreateCertificateSettings.cs similarity index 95% rename from certmgr/Jobs/CertificateSettings.cs rename to certmgr/Jobs/CreateCertificateSettings.cs index b54e217..2c8b05c 100644 --- a/certmgr/Jobs/CertificateSettings.cs +++ b/certmgr/Jobs/CreateCertificateSettings.cs @@ -1,7 +1,7 @@ using System.Diagnostics; -using CertMgr.CertGen; -using CertMgr.CertGen.Utils; +using CertMgr.Certificates.CertGen; +using CertMgr.Certificates.CertGen.Utils; using CertMgr.Core.Attributes; using CertMgr.Core.Converters.Impl; using CertMgr.Core.Jobs; @@ -11,13 +11,13 @@ using CertMgr.Core.Validation; namespace CertMgr.Jobs; -public sealed class CertificateSettings : JobSettings +public sealed class CreateCertificateSettings : JobSettings { - public CertificateSettings() + public CreateCertificateSettings() { Algorithm = CertificateAlgorithm.ECDsa; Curve = EcdsaCurve.P384; - HashAlgorithm = CertGen.HashAlgorithm.Sha384; + HashAlgorithm = Certificates.CertGen.HashAlgorithm.Sha384; ValidityPeriod = TimeSpan.FromDays(365); } @@ -35,7 +35,7 @@ public sealed class CertificateSettings : JobSettings [Setting("friendly-name")] public string? FriendlyName { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } - [Setting("key-usage", Default = CertGen.KeyUsage.None, Converter = typeof(EnumConverter))] + [Setting("key-usage", Default = Certificates.CertGen.KeyUsage.None, Converter = typeof(EnumConverter))] public KeyUsage? KeyUsage { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } [Setting("algorithm", Default = CertificateAlgorithm.ECDsa, Converter = typeof(EnumConverter))] diff --git a/certmgr/Jobs/GetCertificateInfoJob.cs b/certmgr/Jobs/GetCertificateInfoJob.cs new file mode 100644 index 0000000..5c7079c --- /dev/null +++ b/certmgr/Jobs/GetCertificateInfoJob.cs @@ -0,0 +1,107 @@ +using System.Security.Cryptography.X509Certificates; +using System.Text; + +using CertMgr.Certificates; +using CertMgr.Core.Jobs; +using CertMgr.Core.Log; +using CertMgr.Core.Utils; + +namespace CertMgr.Jobs; + +public sealed class GetCertificateInfoJob : Job +{ + public const string ID = "get-certificate-info"; + + protected override async Task DoExecuteAsync(CancellationToken cancellationToken) + { + X509Certificate2? cert = null; + + if (!string.IsNullOrEmpty(Settings.File)) + { + if (File.Exists(Settings.File)) + { + try + { + cert = X509CertificateLoader.LoadPkcs12FromFile(Settings.File, Settings.Password); + } + catch (Exception e) + { + throw new Exception(string.Format("Failed to load certificate from file '{0}'", Settings.File), e); + } + } + else + { + CLog.Error("File doesn't exist: '{0}'", Settings.File); + } + } + else if (Settings.Store != null) + { + if (Settings.Filter != null) + { + CertStoreSearcher searcher = new CertStoreSearcher(Settings.Store); + IReadOnlyList certs = await searcher.SearchAsync(Settings.Filter, cancellationToken).ConfigureAwait(false); + cert = certs.FirstOrDefault(); + } + else + { + CLog.Error("Filter must be specified when info on certificate from cert-store is requested"); + } + } + else + { + CLog.Error("Either file or cert-store must be specified when requesting info on certificate"); + } + + if (cert != null) + { + using (StringBuilderCache.ScopedBuilder lease = StringBuilderCache.AcquireScoped(256)) + { + int padSize = 24; + StringBuilder sb = lease.Builder; + sb.AppendLine(); + AppendWithPadding(sb, "Subject", cert.Subject.StartsWith("CN=") ? cert.Subject.Substring(3) : cert.Subject, padSize); + AppendWithPadding(sb, "Issuer", cert.Issuer.StartsWith("CN=") ? cert.Issuer.Substring(3) : cert.Issuer, padSize); + AppendWithPadding(sb, "Not Before", cert.NotBefore.ToString("s"), padSize); + AppendWithPadding(sb, "Not After", cert.NotAfter.ToString("s"), padSize); + AppendWithPadding(sb, "Signature Algorithm", cert.SignatureAlgorithm.FriendlyName, padSize); + AppendWithPadding(sb, "Thumbprint", cert.Thumbprint, padSize); + if (!string.IsNullOrEmpty(cert.FriendlyName)) + { + AppendWithPadding(sb, "FriendlyName", cert.FriendlyName, padSize); + } + foreach (X509Extension ext in cert.Extensions) + { + string[] values = ext.Format(true).TrimEnd(Environment.NewLine.ToCharArray()).Split(Environment.NewLine); + if ((values.Length > 1 && !string.IsNullOrEmpty(values[values.Length - 1])) || values.Length > 2) + { + AppendWithPadding(sb, ext.Oid?.FriendlyName ?? ext.Oid?.Value, string.Empty, padSize); + foreach (string value in values) + { + if (string.IsNullOrEmpty(value)) + { + continue; + } + sb.AppendFormatLine(" - {0}", value); + } + } + else + { + AppendWithPadding(sb, ext.Oid?.FriendlyName ?? ext.Oid?.Value, values[0], padSize); + } + } + + return CreateSuccess(sb.ToString()); + } + } + else + { + return CreateFailure("No certificate"); + } + } + + private static void AppendWithPadding(StringBuilder sb, string name, string value, int padSize) + { + string padStr = padSize >= name.Length ? new string(' ', padSize - name.Length) : string.Empty; + sb.AppendFormatLine("{0}{1}: {2}", name, padStr, value); + } +} diff --git a/certmgr/Jobs/GetCertificateInfoSettings.cs b/certmgr/Jobs/GetCertificateInfoSettings.cs new file mode 100644 index 0000000..f79ccee --- /dev/null +++ b/certmgr/Jobs/GetCertificateInfoSettings.cs @@ -0,0 +1,23 @@ +using System.Diagnostics; +using System.Security.Cryptography.X509Certificates; + +using CertMgr.Core.Attributes; +using CertMgr.Core.Filters; +using CertMgr.Core.Jobs; + +namespace CertMgr.Jobs; + +public sealed class GetCertificateInfoSettings : JobSettings +{ + [Setting("file")] + public string? File { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } + + [Setting("cert-store", Converter = typeof(CertStoreConverter))] + public CertStore? Store { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } + + [Setting("filter", Converter = typeof(CertificateFilterConverter))] + public IFilter? Filter { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } + + [Setting("password", IsSecret = true)] + public string? Password { [DebuggerStepThrough] get; [DebuggerStepThrough] set; } +} diff --git a/certmgr/Jobs/RsaKeySizeConverter.cs b/certmgr/Jobs/RsaKeySizeConverter.cs index 0425d27..3831cf3 100644 --- a/certmgr/Jobs/RsaKeySizeConverter.cs +++ b/certmgr/Jobs/RsaKeySizeConverter.cs @@ -1,4 +1,4 @@ -using CertMgr.CertGen; +using CertMgr.Certificates.CertGen; using CertMgr.Core.Converters; namespace CertMgr.Jobs; diff --git a/certmgr/Program.cs b/certmgr/Program.cs index 483f59a..aac4ffe 100644 --- a/certmgr/Program.cs +++ b/certmgr/Program.cs @@ -6,30 +6,41 @@ internal static class Program { private static async Task Main(string[] args) { + // args = [ + // "--job=get-certificate-info", + // "--file=c:\\mycert-ecdsa.pfx", + // "--password=" + // ]; args = [ - "--job=create-certificate", - "--issuer-kind=file", - "--issuer-file=o|c:\\friend2.pfx", - "--issuer-password=aaa", - "--subject=CN=hello", - "--san=world", - "--san=DNS:zdrastvujte", - "--san=IP:192.168.131.1", - "--algorithm=ecdsa", - "--ecdsa-curve=p384", - "--validity-period=2d", + "--job=get-certificate-info", + "--cert-store=user/my", + "--filter=thumbprint:b395149b6079553eea92d9a73ffc97463e8976ff" + ]; - // "--certificate-target=file|w|c:\\mycert-ecdsa.pfx", - // "--certificate-password=aaa", - - // "--target-kind=file", - // "--target-file=w|c:\\mycert-ecdsa.pfx", - // "--target-password=aaa", - - "--target-kind=certstore", - "--target-certstore=machine|my|exportable", - "--target-password=aaa" - ]; + // args = [ + // "--job=create-certificate", + // "--issuer-kind=file", + // "--issuer-file=o|c:\\friend2.pfx", + // "--issuer-password=aaa", + // "--subject=CN=hello", + // "--san=world", + // "--san=DNS:zdrastvujte", + // "--san=IP:192.168.131.1", + // "--algorithm=ecdsa", + // "--ecdsa-curve=p384", + // "--validity-period=2d", + // + // // "--certificate-target=file|w|c:\\mycert-ecdsa.pfx", + // // "--certificate-password=aaa", + // + // // "--target-kind=file", + // // "--target-file=w|c:\\mycert-ecdsa.pfx", + // // "--target-password=aaa", + // + // "--target-kind=certstore", + // "--target-certstore=machine|my|exportable", + // "--target-password=aaa" + // ]; // --certificate-target=certstore|machine|my diff --git a/certmgrTest/SubjectValidatorTest.cs b/certmgrTest/SubjectValidatorTest.cs index 5e08ed2..b902e27 100644 --- a/certmgrTest/SubjectValidatorTest.cs +++ b/certmgrTest/SubjectValidatorTest.cs @@ -1,4 +1,4 @@ -using CertMgr.CertGen.Utils; +using CertMgr.Certificates.CertGen.Utils; using CertMgr.Core.Validation; using NUnit.Framework;