Skip to content
This repository has been archived by the owner on Apr 14, 2019. It is now read-only.

Commit

Permalink
add precompiled libs
Browse files Browse the repository at this point in the history
  • Loading branch information
mq1n committed Sep 16, 2018
1 parent c5a7d32 commit 0771c10
Show file tree
Hide file tree
Showing 346 changed files with 46,562 additions and 12 deletions.
9 changes: 0 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,9 @@
[submodule "Extern/tinyxml2"]
path = Extern/tinyxml2
url = https://github.com/leethomason/tinyxml2
[submodule "Extern/lz4"]
path = Extern/lz4
url = https://github.com/lz4/lz4
[submodule "Extern/xxHash"]
path = Extern/xxHash
url = https://github.com/Cyan4973/xxHash
[submodule "Extern/rewolf-wow64ext"]
path = Extern/rewolf-wow64ext
url = https://github.com/mq1n/rewolf-wow64ext
[submodule "Extern/ReflectiveDLLRefresher"]
path = Extern/ReflectiveDLLRefresher
url = https://github.com/CylanceVulnResearch/ReflectiveDLLRefresher
[submodule "Extern/spdlog"]
path = Extern/spdlog
url = https://github.com/gabime/spdlog
Expand Down
100 changes: 100 additions & 0 deletions Extern/CompiledLibs/ClanLib/Include/ClanLib/App/clanapp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*
** ClanLib SDK
** Copyright (c) 1997-2016 The ClanLib Team
**
** This software is provided 'as-is', without any express or implied
** warranty. In no event will the authors be held liable for any damages
** arising from the use of this software.
**
** Permission is granted to anyone to use this software for any purpose,
** including commercial applications, and to alter it and redistribute it
** freely, subject to the following restrictions:
**
** 1. The origin of this software must not be misrepresented; you must not
** claim that you wrote the original software. If you use this software
** in a product, an acknowledgment in the product documentation would be
** appreciated but is not required.
** 2. Altered source versions must be plainly marked as such, and must not be
** misrepresented as being the original software.
** 3. This notice may not be removed or altered from any source distribution.
**
** Note: Some of the libraries ClanLib may link to may have additional
** requirements or restrictions.
**
** File Author(s):
**
** Magnus Norddahl
*/

#pragma once

#include <vector>
#include <string>
#include <memory>

namespace clan
{
/// \addtogroup clanApp_System clanApp System
/// \{

/// \brief Base class for the application object
///
/// All applications using the clanApp module need to inherit from this class. See ApplicationInstance for more information.
class Application
{
public:
virtual ~Application() { }

/// \brief Main loop update handler
///
/// Once the target environment has been initialized this function is called continously to update and render the application.
/// If the function returns false the main loop will end and the application will exit.
virtual bool update() { return true; }

/// \brief Set update handler to wait a certain amount of milliseconds between each update
static void use_timeout_timing(int timeout_ms);

/// \brief Returns the command line arguments passed to the application
static const std::vector<std::string> &main_args();
};

class ApplicationInstancePrivate
{
public:
ApplicationInstancePrivate(bool catch_exceptions = true);
virtual std::unique_ptr<Application> create() = 0;
};

/// \brief Helper class to create cross platform applications
///
/// To use this class, inherit from Application and make a single global instance of ApplicationInstance<YourClass>.
///
/// \code
/// class MyApplication : public clan::Application
/// {
/// public:
/// bool update() override;
/// };
///
/// ApplicationInstance<MyApplication> clanapp;
/// \endcode
/// If you do not want exceptions to be automatically caught, pass "false" to the optional catch_exceptions parameter in Application\n
/// Your program does not have to use this class. For more advanced usage use a normal main function for the target platform and interface with the RunLoop class in clanDisplay\n
template<typename ApplicationClass>
class ApplicationInstance : ApplicationInstancePrivate
{
public:
/// \brief Constructor
ApplicationInstance(bool catch_exceptions = true) : ApplicationInstancePrivate(catch_exceptions)
{
}

private:
std::unique_ptr<Application> create() override
{
return std::unique_ptr<Application>(new ApplicationClass());
}
};

/// \}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/*
** ClanLib SDK
** Copyright (c) 1997-2016 The ClanLib Team
**
** This software is provided 'as-is', without any express or implied
** warranty. In no event will the authors be held liable for any damages
** arising from the use of this software.
**
** Permission is granted to anyone to use this software for any purpose,
** including commercial applications, and to alter it and redistribute it
** freely, subject to the following restrictions:
**
** 1. The origin of this software must not be misrepresented; you must not
** claim that you wrote the original software. If you use this software
** in a product, an acknowledgment in the product documentation would be
** appreciated but is not required.
** 2. Altered source versions must be plainly marked as such, and must not be
** misrepresented as being the original software.
** 3. This notice may not be removed or altered from any source distribution.
**
** Note: Some of the libraries ClanLib may link to may have additional
** requirements or restrictions.
**
** File Author(s):
**
** Mark Page
*/


#pragma once

#include <memory>

namespace clan
{
/// \addtogroup clanCore_Crypto clanCore Crypto
/// \{

class DataBuffer;
class AES128_Decrypt_Impl;

/// \brief AES-128 decryption class (running in Cipher Block Chaining mode)
class AES128_Decrypt
{
public:
/// \brief Constructs a AES-128 generator (running in Cipher Block Chaining mode)
AES128_Decrypt();

/// \brief Get decrypted data
///
/// This is the databuffer used internally to store the decrypted data.
/// You may call "set_size()" to clear the buffer, inbetween calls to "add()"
/// You may call "set_capacity()" to optimise storage requirements before the add() call
DataBuffer get_data() const;

static const int iv_size = 16;
static const int key_size = 16;

/// \brief Resets the decryption
void reset();

/// \brief Sets the initialisation vector
///
/// This should be a random number\n
/// This must be called before the initial add()
void set_iv(const unsigned char iv[iv_size]);

/// \brief Sets the cipher key
///
/// This must be called before the initial add()
void set_key(const unsigned char key[key_size]);

/// \brief Enable AES Padding
///
/// Example (use_pkcs7==true) : ... 0x03 0x03 0x03 (3 octets of padding)
/// Example (use_pkcs7==false) : ... 0x02 0x02 0x02 (3 octets of padding, the last octet is the length)
///
/// \param value = true = Enable padding (default)
/// \param use_pkcs7 = true = This uses the PKCS#7/RFC3369 method (Enabled by default). false = use the TLS method (rfc2246)
void set_padding(bool value = true, bool use_pkcs7 = true);

/// \brief Adds data to be decrypted
void add(const void *data, int size);

/// \brief Add data to be decrypted
///
/// \param data = Data Buffer
void add(const DataBuffer &data);

/// \brief Finalize decryption
///
/// IMPORTANT, to avoid timing attacks, if this function fails, you should still validate the data (via a hash or otherwise), then throw an error
///
/// \return false = AES Padding value is invalid.
bool calculate();

private:
std::shared_ptr<AES128_Decrypt_Impl> impl;
};

/// \}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*
** ClanLib SDK
** Copyright (c) 1997-2016 The ClanLib Team
**
** This software is provided 'as-is', without any express or implied
** warranty. In no event will the authors be held liable for any damages
** arising from the use of this software.
**
** Permission is granted to anyone to use this software for any purpose,
** including commercial applications, and to alter it and redistribute it
** freely, subject to the following restrictions:
**
** 1. The origin of this software must not be misrepresented; you must not
** claim that you wrote the original software. If you use this software
** in a product, an acknowledgment in the product documentation would be
** appreciated but is not required.
** 2. Altered source versions must be plainly marked as such, and must not be
** misrepresented as being the original software.
** 3. This notice may not be removed or altered from any source distribution.
**
** Note: Some of the libraries ClanLib may link to may have additional
** requirements or restrictions.
**
** File Author(s):
**
** Mark Page
*/


#pragma once

#include <memory>

namespace clan
{
/// \addtogroup clanCore_Crypto clanCore Crypto
/// \{

class DataBuffer;
class AES128_Encrypt_Impl;

/// \brief AES-128 encryption class (running in Cipher Block Chaining mode)
class AES128_Encrypt
{
public:
/// \brief Constructs a AES-128 generator (running in Cipher Block Chaining mode)
AES128_Encrypt();

/// \brief Get encrypted data
///
/// This is the databuffer used internally to store the encrypted data.
/// You may call "set_size()" to clear the buffer, inbetween calls to "add()"
/// You may call "set_capacity()" to optimise storage requirements before the add() call
DataBuffer get_data() const;

static const int iv_size = 16;
static const int key_size = 16;
static const int block_size = 16;

/// \brief Resets the encryption
void reset();

/// \brief Sets the initialisation vector
///
/// This should be a random number\n
/// This must be called before the initial add()
void set_iv(const unsigned char iv[iv_size]);

/// \brief Sets the cipher key
///
/// This must be called before the initial add()
void set_key(const unsigned char key[key_size]);

/// \brief Enable AES Padding
///
/// Example (use_pkcs7==true) : ... 0x03 0x03 0x03 (3 octets of padding)
/// Example (use_pkcs7==false) : ... 0x02 0x02 0x02 (3 octets of padding, the last octet is the length)
///
/// \param value = true = Enable padding (default)
/// \param use_pkcs7 = true = This uses the PKCS#7/RFC3369 method (Enabled by default). false = use the TLS method (rfc2246)
/// \param num_additional_padded_blocks = (Only valid when use_pkcs7==false). Set to "frustrate attacks on a protocol based on analysis of the lengths of exchanged messages". (Range 0 to 15)
void set_padding(bool value = true, bool use_pkcs7 = true, unsigned int num_additional_padded_blocks = 0);

/// \brief Adds data to be encrypted
void add(const void *data, int size);

/// \brief Add data to be encrypted
///
/// \param data = Data Buffer
void add(const DataBuffer &data);

/// \brief Finalize encryption
void calculate();

private:
std::shared_ptr<AES128_Encrypt_Impl> impl;
};

/// \}
}
Loading

0 comments on commit 0771c10

Please sign in to comment.