Skip to content

Commit

Permalink
NCryptEnumKeys returns ERROR_NO_MORE_ITEMS and is positive error code
Browse files Browse the repository at this point in the history
IB-8341

Signed-off-by: Raul Metsma <[email protected]>
  • Loading branch information
metsma committed Jan 24, 2025
1 parent 4cd4e74 commit 6605ab8
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions client/QCNG.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ using namespace Qt::Literals::StringLiterals;

Q_LOGGING_CATEGORY(CNG, "qdigidoc4.QCNG")

template<typename T, typename D = decltype(NCryptFreeObject)>
template<typename T, auto D = NCryptFreeObject>
struct SCOPE
{
T d {};
~SCOPE() { if(d) D(d); }
constexpr operator T() const { return d; }
constexpr T* operator&() { return &d; }
~SCOPE() noexcept { if(d) D(d); }
constexpr operator T() const noexcept { return d; }
constexpr T* operator&() noexcept { return &d; }
};

class QCNG::Private
Expand Down Expand Up @@ -206,9 +206,9 @@ QList<TokenData> QCNG::tokens() const
PVOID pos {};
BCRYPT_PSS_PADDING_INFO rsaPSS { NCRYPT_SHA256_ALGORITHM, 32 };
DWORD size {};
while(SUCCEEDED(NCryptEnumKeys(h, reader.isEmpty() ? nullptr : LPCWSTR(scope.utf16()), &keyname, &pos, NCRYPT_SILENT_FLAG)))
while(NCryptEnumKeys(h, reader.isEmpty() ? nullptr : LPCWSTR(scope.utf16()), &keyname, &pos, NCRYPT_SILENT_FLAG) == ERROR_SUCCESS)
{
SCOPE<NCryptKeyName*,decltype(NCryptFreeBuffer)> keyname_scope{keyname};
SCOPE<NCryptKeyName*,NCryptFreeBuffer> keyname_scope{keyname};
SCOPE<NCRYPT_KEY_HANDLE> key;
err = NCryptOpenKey(h, &key, keyname->pszName, keyname->dwLegacyKeySpec, NCRYPT_SILENT_FLAG);
SslCertificate cert(prop(key, NCRYPT_CERTIFICATE_PROPERTY), QSsl::Der);
Expand Down Expand Up @@ -248,7 +248,7 @@ QList<TokenData> QCNG::tokens() const

qCWarning(CNG) << "Start enumerationg providers";
DWORD count {};
SCOPE<NCryptProviderName*,decltype(NCryptFreeBuffer)> providers {};
SCOPE<NCryptProviderName*,NCryptFreeBuffer> providers {};
NCryptEnumStorageProviders(&count, &providers, NCRYPT_SILENT_FLAG);
for(DWORD i {}; i < count; ++i)
{
Expand Down

0 comments on commit 6605ab8

Please sign in to comment.