Логирование
tonisimakov99 opened this issue · comments
Возможно ли внутреннее логирование? Что-то навроде:
ILogger someLogger;
Initializer.Initialize(someLogger);
Добрый день.
А что именно хочется логировать?
Зравствуйте, например, хочется здесь как-то понять, что конкретно произошло, скорее всего проблема в моем коде, но дополнительная информация бы не помешала:
LibCore.Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Cryptography error
at LibCore.Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.get_SafeProvHandle()
at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.get_SafeKeyHandle()
at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider.GetKeyPair()
at LibCore.Security.Cryptography.Gost3410_2012_256CryptoServiceProvider..ctor(CspParameters parameters)
at LibCore.Internal.Cryptography.Pal.CertificatePal.<>c.<GetGost3410_2012_256PrivateKey>b__73_0(CspParameters csp)
at LibCore.Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng, Func`3 createNoPersistCsp)
at LibCore.Internal.Cryptography.Pal.CertificatePal.GetGost3410_2012_256PrivateKey()
at LibCore.Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints)
at LibCore.Security.Cryptography.X509Certificates.Gost3410CertificateExtensions.GetGost3410_2012_256PrivateKey(X509Certificate2 certificate)
at Internal.Cryptography.Pal.Windows.PkcsPalWindows.GetPrivateKey[T](X509Certificate2 certificate, Boolean silent, Boolean preferNCrypt)
at Internal.Cryptography.Pal.Windows.PkcsPalWindows.GetPrivateKeyForSigning[T](X509Certificate2 certificate, Boolean silent)
at LibCore.Security.Cryptography.GostCmsSignature.Gost2012_256CmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, String& signatureAlgorith
m, Byte[]& signatureValue)
at LibCore.Security.Cryptography.GostCmsSignature.Sign(ReadOnlySpan`1 dataHash, HashAlgorithmName hashAlgorithmName, X509Certificate2 certificate, AsymmetricAlgorithm key, Boolean silent, String& oid, ReadOnlyMemory`1& signatureValue)
at LibCore.Security.Cryptography.Pkcs.Detours.CmsSignerDetour.Prefix(ReadOnlyMemory`1 data, String contentTypeOid, Boolean silent, X509Certificate2Collection& chainCerts, CmsSigner __instance, Object& __result)
at System.Security.Cryptography.Pkcs.CmsSigner.Sign_Patch1(CmsSigner this, IntPtr retbuf, ReadOnlyMemory`1 data, String contentTypeOid, Boolean silent, X509Certificate2Collection& chainCerts)
at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent)
Также в методе Initializer.Initialize()
вижу флаг debug
, он как-то этому способствует?
В вашем случае никакого доп логирования нет. debug пишет лог установки исправлений при инициализации.
Судя по стеку - ошибка при открытии контейнера ключа сертификата. Проверить, что контейнер ключа сертификата успешно проверяется через csptest (или cptools) + что выданы права на данный ключ для пользователя, из под которым выполняется программа + убедиться, что пин на контейнер не задан или корректно указан (если всё же задан) ранее по коду.
- из полезного посмотреть код ошибки в перехваченном исключении (должен лежать в свойстве HResult или ему подобным в виде int).