Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
ARC4.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ARC4.h"
7#include "Errors.h"
8#include <openssl/provider.h>
9
11 : _ctx(EVP_CIPHER_CTX_new())
12{
13 OSSL_PROVIDER_load(NULL, "legacy");
14 EVP_CIPHER_CTX_init(_ctx);
15 int result = EVP_EncryptInit_ex(_ctx, EVP_rc4(), nullptr, nullptr, nullptr);
16 ASSERT(result == 1);
17}
18
20{
21 EVP_CIPHER_CTX_free(_ctx);
22}
23
24void SkyFire::Crypto::ARC4::Init(uint8 const* seed, size_t len)
25{
26 int result1 = EVP_CIPHER_CTX_set_key_length(_ctx, len);
27 ASSERT(result1 == 1);
28 int result2 = EVP_EncryptInit_ex(_ctx, nullptr, nullptr, seed, nullptr);
29 ASSERT(result2 == 1);
30}
31
33{
34 int outlen = 0;
35 int result1 = EVP_EncryptUpdate(_ctx, data, &outlen, data, len);
36 ASSERT(result1 == 1);
37 int result2 = EVP_EncryptFinal_ex(_ctx, data, &outlen);
38 ASSERT(result2 == 1);
39}
std::uint8_t uint8
Definition Define.h:79
#define ASSERT
Definition Errors.h:29
void Init(uint8 const *seed, size_t len)
Definition ARC4.cpp:24
EVP_CIPHER_CTX * _ctx
Definition ARC4.h:30
void UpdateData(uint8 *data, size_t len)
Definition ARC4.cpp:32