@@ -30,13 +30,13 @@ using namespace Qt::Literals::StringLiterals;
3030
3131Q_LOGGING_CATEGORY (CNG, " qdigidoc4.QCNG" )
3232
33- template<typename T, typename D = decltype( NCryptFreeObject) >
33+ template<typename T, auto D = NCryptFreeObject>
3434struct 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
4242class 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