Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.
Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
29 lines
999 B
C++
29 lines
999 B
C++
#ifndef RAGNAROK_SOURCE_ARCHIVE_PAKCIPHER_H
|
|
#define RAGNAROK_SOURCE_ARCHIVE_PAKCIPHER_H
|
|
|
|
#include <cstdint>
|
|
|
|
namespace myGPack {
|
|
|
|
class PakCipher {
|
|
public:
|
|
PakCipher();
|
|
explicit PakCipher(const std::uint8_t* key);
|
|
~PakCipher();
|
|
int DecodeBlock(int rounds, const std::uint8_t* input, std::uint8_t* output) const;
|
|
int Decode(const std::uint8_t* input, int length, std::uint8_t* output, int* outputLength, int cycle) const;
|
|
int DecodePrefix(const std::uint8_t* input, int length, std::uint8_t* output, int* outputLength) const;
|
|
|
|
private:
|
|
std::uint8_t m_roundKeys[16][8];
|
|
};
|
|
|
|
static_assert(sizeof(PakCipher) == 128);
|
|
std::uint8_t* __stdcall DerivePakKey(const char* name, std::uint8_t* key);
|
|
int __stdcall InitialPermutation(std::uint8_t* block);
|
|
int __stdcall FinalPermutation(std::uint8_t* block);
|
|
int __stdcall EncodeBlock(int rounds, const std::uint8_t (*roundKeys)[8], std::uint32_t inputLow, std::uint32_t inputHigh, std::uint8_t* output);
|
|
|
|
}
|
|
|
|
#endif
|