This repository has been archived by the owner on Apr 14, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 173
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
346 changed files
with
46,562 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
Extern/CompiledLibs/ClanLib/Include/ClanLib/App/clanapp.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | ||
} | ||
}; | ||
|
||
/// \} | ||
} |
102 changes: 102 additions & 0 deletions
102
Extern/CompiledLibs/ClanLib/Include/ClanLib/Core/Crypto/aes128_decrypt.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
}; | ||
|
||
/// \} | ||
} |
100 changes: 100 additions & 0 deletions
100
Extern/CompiledLibs/ClanLib/Include/ClanLib/Core/Crypto/aes128_encrypt.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
}; | ||
|
||
/// \} | ||
} |
Oops, something went wrong.