Skip to content

Commit c3c7d9a

Browse files
authored
NCryptEnumKeys returns ERROR_NO_MORE_ITEMS and is positive error code (#1314)
IB-8341 Signed-off-by: Raul Metsma <[email protected]>
1 parent 9a7acb7 commit c3c7d9a

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

client/QCNG.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ using namespace Qt::Literals::StringLiterals;
3030

3131
Q_LOGGING_CATEGORY(CNG, "qdigidoc4.QCNG")
3232

33-
template<typename T, typename D = decltype(NCryptFreeObject)>
33+
template<typename T, auto D = NCryptFreeObject>
3434
struct SCOPE
3535
{
3636
T d {};
37-
~SCOPE() { if(d) D(d); }
38-
constexpr operator T() const { return d; }
39-
constexpr T* operator&() { return &d; }
37+
~SCOPE() noexcept { if(d) D(d); }
38+
constexpr operator T() const noexcept { return d; }
39+
constexpr T* operator&() noexcept { return &d; }
4040
};
4141

4242
class QCNG::Private
@@ -203,12 +203,12 @@ QList<TokenData> QCNG::tokens() const
203203
SCOPE<NCRYPT_PROV_HANDLE> h;
204204
SECURITY_STATUS err = NCryptOpenStorageProvider(&h, LPCWSTR(provider.utf16()), 0);
205205
NCryptKeyName *keyname{};
206-
PVOID pos {};
206+
SCOPE<PVOID,NCryptFreeBuffer> pos{};
207207
BCRYPT_PSS_PADDING_INFO rsaPSS { NCRYPT_SHA256_ALGORITHM, 32 };
208208
DWORD size {};
209-
while(SUCCEEDED(NCryptEnumKeys(h, reader.isEmpty() ? nullptr : LPCWSTR(scope.utf16()), &keyname, &pos, NCRYPT_SILENT_FLAG)))
209+
while(NCryptEnumKeys(h, reader.isEmpty() ? nullptr : LPCWSTR(scope.utf16()), &keyname, &pos, NCRYPT_SILENT_FLAG) == ERROR_SUCCESS)
210210
{
211-
SCOPE<NCryptKeyName*,decltype(NCryptFreeBuffer)> keyname_scope{keyname};
211+
SCOPE<NCryptKeyName*,NCryptFreeBuffer> keyname_scope{keyname};
212212
SCOPE<NCRYPT_KEY_HANDLE> key;
213213
err = NCryptOpenKey(h, &key, keyname->pszName, keyname->dwLegacyKeySpec, NCRYPT_SILENT_FLAG);
214214
SslCertificate cert(prop(key, NCRYPT_CERTIFICATE_PROPERTY), QSsl::Der);
@@ -248,7 +248,7 @@ QList<TokenData> QCNG::tokens() const
248248

249249
qCWarning(CNG) << "Start enumerationg providers";
250250
DWORD count {};
251-
SCOPE<NCryptProviderName*,decltype(NCryptFreeBuffer)> providers {};
251+
SCOPE<NCryptProviderName*,NCryptFreeBuffer> providers {};
252252
NCryptEnumStorageProviders(&count, &providers, NCRYPT_SILENT_FLAG);
253253
for(DWORD i {}; i < count; ++i)
254254
{

0 commit comments

Comments
 (0)