| | |
| | | KEYLENGTH | CRYPT_EXPORTABLE, &m_hCryptKey)) {
|
| | | dwErrCode = GetLastError();
|
| | | throw logic_error(
|
| | | string("Error generating keys ") + to_string(dwErrCode));
|
| | | string("Error generating keys ") + to_string(static_cast<long long>(dwErrCode)));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | dwErrCode = GetLastError();
|
| | | throw logic_error(
|
| | | string("Error calculating size of public key ")
|
| | | + to_string(dwErrCode));
|
| | | + to_string(static_cast<long long>(dwErrCode)));
|
| | | }
|
| | | // Allocate memory for the pbKeyBlob.
|
| | | if ((pbKeyBlob = new BYTE[dwBlobLen]) == NULL) {
|
| | |
| | | delete pbKeyBlob;
|
| | | dwErrCode = GetLastError();
|
| | | throw logic_error(
|
| | | string("Error exporting public key ") + to_string(dwErrCode));
|
| | | string("Error exporting public key ") + to_string(static_cast<long long>(dwErrCode)));
|
| | | } else {
|
| | | ss << "\t";
|
| | | for (unsigned int i = 0; i < dwBlobLen; i++) {
|
| | |
| | | ss << "\\" << endl << "\t";
|
| | | }
|
| | | }
|
| | | ss << to_string(pbKeyBlob[i]);
|
| | | ss << to_string(static_cast<long long>(pbKeyBlob[i]));
|
| | | }
|
| | | delete pbKeyBlob;
|
| | | }
|
| | |
| | | dwErrCode = GetLastError();
|
| | | throw logic_error(
|
| | | string("Error calculating size of private key ")
|
| | | + to_string(dwErrCode));
|
| | | + to_string(static_cast<long long>(dwErrCode)));
|
| | | }
|
| | | // Allocate memory for the pbKeyBlob.
|
| | | if ((pbKeyBlob = new BYTE[dwBlobLen]) == NULL) {
|
| | |
| | | delete pbKeyBlob;
|
| | | dwErrCode = GetLastError();
|
| | | throw logic_error(
|
| | | string("Error exporting private key ") + to_string(dwErrCode));
|
| | | string("Error exporting private key ") + to_string(static_cast<long long>(dwErrCode)));
|
| | | } else {
|
| | | ss << "\t";
|
| | | for (unsigned int i = 0; i < dwBlobLen; i++) {
|
| | |
| | | ss << "\\" << endl << "\t";
|
| | | }
|
| | | }
|
| | | ss << to_string(pbKeyBlob[i]);
|
| | | ss << to_string(static_cast<long long>(pbKeyBlob[i]));
|
| | | }
|
| | | delete pbKeyBlob;
|
| | | }
|
| | |
| | | DWORD dwHashLen;
|
| | | DWORD dwHashLenSize = sizeof(DWORD);
|
| | | char* hashStr;
|
| | | int i;
|
| | | unsigned int i;
|
| | |
|
| | | if (CryptGetHashParam(*hHash, HP_HASHSIZE, (BYTE *) &dwHashLen,
|
| | | &dwHashLenSize, 0)) {
|
| | |
| | | const string CryptoHelperWindows::signString(const void* privateKey,
|
| | | size_t pklen, const string& license) const {
|
| | | BYTE *pbBuffer = (BYTE *) license.c_str();
|
| | | DWORD dwBufferLen = strlen((char *) pbBuffer);
|
| | | const DWORD dwBufferLen = (DWORD)strlen((char *)pbBuffer);
|
| | | HCRYPTHASH hHash;
|
| | |
|
| | | HCRYPTKEY hKey;
|
| | | BYTE *pbKeyBlob;
|
| | | BYTE *pbSignature;
|
| | | DWORD dwSigLen;
|
| | | DWORD dwBlobLen;
|
| | | DWORD strLen;
|
| | |
|
| | | //-------------------------------------------------------------------
|
| | | // Acquire a cryptographic provider context handle.
|
| | |
|
| | | if (!CryptImportKey(m_hCryptProv, (const BYTE *) privateKey, pklen, 0, 0,
|
| | | if (!CryptImportKey(m_hCryptProv, (const BYTE *) privateKey, (DWORD) pklen, 0, 0,
|
| | | &hKey)) {
|
| | | throw logic_error(
|
| | | string("Error in importing the PrivateKey ")
|
| | | + to_string(GetLastError()));
|
| | | + to_string(static_cast<long long>(GetLastError())));
|
| | | }
|
| | |
|
| | | //-------------------------------------------------------------------
|