| | |
| | | using namespace std; |
| | | #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) |
| | | |
| | | static const void formatError(DWORD status, const char* description) { |
| | | static const void formatError(DWORD status, const char *description) { |
| | | char msgBuffer[256]; |
| | | FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, status, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &msgBuffer[0], |
| | | sizeof(msgBuffer) - 1, nullptr); |
| | |
| | | sizeof(pubk), 0))) { |
| | | result = FUNC_RET_OK; |
| | | } else { |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "error importing public key"); |
| | | #endif |
| | | } |
| | |
| | | result = FUNC_RET_OK; |
| | | } else { |
| | | result = FUNC_RET_ERROR; |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "error verifying signature"); |
| | | #endif |
| | | } |
| | |
| | | } |
| | | else { |
| | | result = FUNC_RET_NOT_AVAIL; |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "error opening RSA provider"); |
| | | #endif |
| | | } |
| | |
| | | result = verifyHash(pbHashData, cbHashDataLenght, signatureB64); |
| | | } else { |
| | | result = FUNC_RET_NOT_AVAIL; |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "error hashing data"); |
| | | #endif |
| | | } |
| | | } else { |
| | | result = FUNC_RET_NOT_AVAIL; |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "error creating hash"); |
| | | #endif |
| | | } |
| | |
| | | } |
| | | } else { |
| | | result = FUNC_RET_NOT_AVAIL; |
| | | #ifdef _DEBUG |
| | | #ifndef NDEBUG |
| | | formatError(status, "**** Error returned by BCryptGetProperty"); |
| | | #endif |
| | | } |