summaryrefslogtreecommitdiffstats
path: root/src/crypt/cryptaes.cpp
blob: 0129c31b06d63f1bbc7be945dfa2ef8555ae8f75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "cryptaes.h"

CryptAes::CryptAes()
    : CryptClassEvp()
{
    m_iv = QByteArray(16, 0);
}

const EVP_CIPHER *CryptAes::algorithm()
{
    switch (m_keyLength)
    {
    case 128:

        return EVP_aes_128_cbc();
        break;

    case 192:

        return EVP_aes_192_cbc();
        break;

    case 256:

        return EVP_aes_256_cbc();
        break;
    }

    return EVP_enc_null();
}


void CryptAes::encrypt()
{
    m_key = CryptEngine::createPasswordHash(m_key);

    m_iv = CryptEngine::createRandomIv(IVLENGTH);

    CryptClassEvp::encrypt();

    m_cryptText = m_iv + m_cryptText;
}

void CryptAes::decrypt()
{
    m_key = CryptEngine::createPasswordHash(m_key);

    m_iv = m_cryptText.left(IVLENGTH);

    m_cryptText = m_cryptText.remove(0, IVLENGTH);

    CryptClassEvp::decrypt();
}