mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Added all raknet headers for full raknet support Added Testclass "TestCB.cpp" which is a test implementation for raknet plugin "File List Transfer". We will use this plugin for file transfer in multiplayer git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2638 3b4a5df2-a311-0410-b5c6-a8a6f20db521
48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
#ifndef RSA_CRYPT_HPP
|
|
#define RSA_CRYPT_HPP
|
|
|
|
#include "Platform.h"
|
|
#include "Export.h"
|
|
|
|
bool primeTest(const uint32_t *n, int limbs, uint32_t k);
|
|
void generateStrongPseudoPrime(uint32_t *n, int limbs);
|
|
|
|
class RAK_DLL_EXPORT RSACrypt
|
|
{
|
|
uint32_t *p, p_inv, *q, q_inv, *pinvq, factor_limbs;
|
|
uint32_t *d, e;
|
|
uint32_t *modulus, mod_inv, mod_limbs;
|
|
|
|
void cleanup();
|
|
|
|
bool generateExponents(const uint32_t *p, const uint32_t *q, int limbs, uint32_t &e, uint32_t *d);
|
|
|
|
public:
|
|
RSACrypt();
|
|
~RSACrypt();
|
|
|
|
public:
|
|
bool setPrivateKey(const uint32_t *p, const uint32_t *q, int halfFactorLimbs);
|
|
bool setPublicKey(const uint32_t *modulus, int mod_limbs, uint32_t e);
|
|
|
|
public:
|
|
// Bitsize is limbs * 32
|
|
// Private key size is limbs/2 words
|
|
bool generatePrivateKey(uint32_t limbs); // limbs must be a multiple of 2
|
|
|
|
public:
|
|
uint32_t getFactorLimbs();
|
|
void getPrivateP(uint32_t *p); // p buffer has factor_limbs
|
|
void getPrivateQ(uint32_t *q); // q buffer has factor_limbs
|
|
|
|
uint32_t getModLimbs();
|
|
void getPublicModulus(uint32_t *modulus); // modulus buffer has mod_limbs
|
|
uint32_t getPublicExponent();
|
|
|
|
public:
|
|
bool encrypt(uint32_t *ct, const uint32_t *pt); // pt limbs = mod_limbs
|
|
bool decrypt(uint32_t *pt, const uint32_t *ct); // ct limbs = mod_limbs
|
|
};
|
|
|
|
#endif // RSA_CRYPT_HPP
|