Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
10
SkyFire::Crypto::ARC4::ARC4
()
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
19
SkyFire::Crypto::ARC4::~ARC4
()
20
{
21
EVP_CIPHER_CTX_free(
_ctx
);
22
}
23
24
void
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
32
void
SkyFire::Crypto::ARC4::UpdateData
(
uint8
* data,
size_t
len)
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
}
ARC4.h
uint8
std::uint8_t uint8
Definition
Define.h:79
Errors.h
ASSERT
#define ASSERT
Definition
Errors.h:29
SkyFire::Crypto::ARC4::ARC4
ARC4()
Definition
ARC4.cpp:10
SkyFire::Crypto::ARC4::Init
void Init(uint8 const *seed, size_t len)
Definition
ARC4.cpp:24
SkyFire::Crypto::ARC4::_ctx
EVP_CIPHER_CTX * _ctx
Definition
ARC4.h:30
SkyFire::Crypto::ARC4::~ARC4
~ARC4()
Definition
ARC4.cpp:19
SkyFire::Crypto::ARC4::UpdateData
void UpdateData(uint8 *data, size_t len)
Definition
ARC4.cpp:32
src
server
shared
Cryptography
ARC4.cpp
Generated on
for Project SkyFire Core by
1.17.0