Subversion Repositories tpanel

Rev

Rev 476 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 476 Rev 482
Line 122... Line 122...
122
    memcpy(mAesSalt, salt.c_str(), min((size_t)AES128_SALT_SIZE, salt.length()));
122
    memcpy(mAesSalt, salt.c_str(), min((size_t)AES128_SALT_SIZE, salt.length()));
123
    // Initialize the key and IV with 0
123
    // Initialize the key and IV with 0
124
    memset(mAesKey, 0, AES128_KEY_SIZE);
124
    memset(mAesKey, 0, AES128_KEY_SIZE);
125
    memset(mAesIV, 0, AES128_KEY_SIZE);
125
    memset(mAesIV, 0, AES128_KEY_SIZE);
126
 
126
 
127
    keySize = EVP_BytesToKey(pCipher, md, mAesSalt, (unsigned char *)key.c_str(), key.length(), count, mAesKey, mAesIV);
127
    keySize = EVP_BytesToKey(pCipher, md, mAesSalt, (unsigned char *)key.c_str(), static_cast<int>(key.length()), count, mAesKey, mAesIV);
128
 
128
 
129
    if (keySize == AES128_KEY_SIZE)
129
    if (keySize == AES128_KEY_SIZE)
130
    {
130
    {
131
        EVP_CIPHER_CTX_init(mCtx);
131
        EVP_CIPHER_CTX_init(mCtx);
132
 
132
 
133
        if ((ssl_errno = EVP_DecryptInit_ex(mCtx, pCipher, nullptr, mAesKey, mAesIV)) != OSSL_SUCCESS)
133
        if ((ssl_errno = EVP_DecryptInit_ex(mCtx, pCipher, nullptr, mAesKey, mAesIV)) != OSSL_SUCCESS)
134
        {
134
        {
135
            MSG_ERROR("Error initializing: " << _get_ssl_error());
135
            MSG_ERROR("Error initializing: " << _get_ssl_error());
136
            return false;
136
            return false;
137
        }
137
        }
138
 
138
 
139
        EVP_CIPHER_CTX_set_key_length(mCtx, AES128_KEY_SIZE);
139
        EVP_CIPHER_CTX_set_key_length(mCtx, AES128_KEY_SIZE);
140
    }
140
    }
141
    else
141
    else
142
    {
142
    {
143
        MSG_ERROR("Key size is " << (keySize * 8) << " bits - should be 128 bits");
143
        MSG_ERROR("Key size is " << (keySize * 8) << " bits - should be 128 bits");
Line 230... Line 230...
230
 
230
 
231
            memcpy(outBuffer+pos, decBuffer, len);
231
            memcpy(outBuffer+pos, decBuffer, len);
232
            pos += len;
232
            pos += len;
233
        }
233
        }
234
 
234
 
235
        int size2 = fileSize - (numBlocks * CHUNK_SIZE);
235
        size_t size2 = fileSize - (numBlocks * CHUNK_SIZE);
236
 
236
 
237
        if (size2 > 0)      // Is there something left of the file less then CHUNK_SIZE?
237
        if (size2 > 0)      // Is there something left of the file less then CHUNK_SIZE?
238
        {                   // Yes, then decrypt it
238
        {                   // Yes, then decrypt it
239
            memcpy(encBuffer, buffer + numBlocks * CHUNK_SIZE, size2);
239
            memcpy(encBuffer, buffer + numBlocks * CHUNK_SIZE, size2);
240
 
240
 
241
            if ((ssl_errno = EVP_DecryptUpdate(mCtx, decBuffer, &len, encBuffer, size2)) != OSSL_SUCCESS)
241
            if ((ssl_errno = EVP_DecryptUpdate(mCtx, decBuffer, &len, encBuffer, static_cast<int>(size2))) != OSSL_SUCCESS)
242
            {
242
            {
243
                MSG_ERROR("Error updating");
243
                MSG_ERROR("Error updating");
244
                _print_ssl_error(ssl_errno);
244
                _print_ssl_error(ssl_errno);
245
                delete[] buffer;
245
                delete[] buffer;
246
                delete[] outBuffer;
246
                delete[] outBuffer;
Line 251... Line 251...
251
            pos += len;
251
            pos += len;
252
        }
252
        }
253
    }
253
    }
254
    else
254
    else
255
    {
255
    {
256
        if ((ssl_errno = EVP_DecryptUpdate(mCtx, outBuffer, &len, buffer, fileSize)) != OSSL_SUCCESS)
256
        if ((ssl_errno = EVP_DecryptUpdate(mCtx, outBuffer, &len, buffer, static_cast<int>(fileSize))) != OSSL_SUCCESS)
257
        {
257
        {
258
            _print_ssl_error(ssl_errno);
258
            _print_ssl_error(ssl_errno);
259
            delete[] buffer;
259
            delete[] buffer;
260
            delete[] outBuffer;
260
            delete[] outBuffer;
261
            return false;
261
            return false;