Merge pull request #5354 from leoetlino/iosc

IOS: Implement IOSC-like library (+ bug fixes)
This commit is contained in:
Léo Lam
2017-05-04 19:58:47 +02:00
committed by GitHub
18 changed files with 524 additions and 119 deletions

View File

@ -10,15 +10,30 @@ namespace Common
{
namespace AES
{
std::vector<u8> Decrypt(const u8* key, u8* iv, const u8* src, size_t size)
std::vector<u8> DecryptEncrypt(const u8* key, u8* iv, const u8* src, size_t size, Mode mode)
{
mbedtls_aes_context aes_ctx;
std::vector<u8> buffer(size);
mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
mbedtls_aes_crypt_cbc(&aes_ctx, MBEDTLS_AES_DECRYPT, size, iv, src, buffer.data());
if (mode == Mode::Encrypt)
mbedtls_aes_setkey_enc(&aes_ctx, key, 128);
else
mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
mbedtls_aes_crypt_cbc(&aes_ctx, mode == Mode::Encrypt ? MBEDTLS_AES_ENCRYPT : MBEDTLS_AES_DECRYPT,
size, iv, src, buffer.data());
return buffer;
}
std::vector<u8> Decrypt(const u8* key, u8* iv, const u8* src, size_t size)
{
return DecryptEncrypt(key, iv, src, size, Mode::Decrypt);
}
std::vector<u8> Encrypt(const u8* key, u8* iv, const u8* src, size_t size)
{
return DecryptEncrypt(key, iv, src, size, Mode::Encrypt);
}
} // namespace AES
} // namespace Common

View File

@ -13,6 +13,15 @@ namespace Common
{
namespace AES
{
enum class Mode
{
Decrypt,
Encrypt,
};
std::vector<u8> DecryptEncrypt(const u8* key, u8* iv, const u8* src, size_t size, Mode mode);
// Convenience functions
std::vector<u8> Decrypt(const u8* key, u8* iv, const u8* src, size_t size);
std::vector<u8> Encrypt(const u8* key, u8* iv, const u8* src, size_t size);
} // namespace AES
} // namespace Common