• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

RSACrypt.h

Go to the documentation of this file.
00001 #if !defined(_XBOX) && !defined(X360)
00002 
00003 #ifndef RSA_CRYPT_HPP
00004 #define RSA_CRYPT_HPP
00005 
00006 #include "Platform.h"
00007 #include "Export.h"
00008 
00009 class RAK_DLL_EXPORT RSACrypt
00010 {
00011         uint32_t *p, p_inv, *q, q_inv, *qInv, *dP, *dQ, factor_limbs;
00012         uint32_t e, *modulus, mod_inv, mod_limbs;
00013 
00014         void cleanup();
00015 
00016 public:
00017         RSACrypt();
00018         ~RSACrypt();
00019 
00020 public:
00021         bool setPrivateKey(const uint32_t *p, const uint32_t *q, int halfFactorLimbs);
00022         bool setPublicKey(const uint32_t *modulus, int mod_limbs, uint32_t e);
00023 
00024 public:
00025         // Bitsize is limbs * 32
00026         // Private key size is limbs/2 words
00027         bool generatePrivateKey(uint32_t limbs); // limbs must be a multiple of 2
00028 
00029 public:
00030         uint32_t getFactorLimbs();
00031         void getPrivateP(uint32_t *p); // p buffer has factor_limbs
00032         void getPrivateQ(uint32_t *q); // q buffer has factor_limbs
00033 
00034         uint32_t getModLimbs();
00035         void getPublicModulus(uint32_t *modulus); // modulus buffer has mod_limbs
00036         uint32_t getPublicExponent();
00037 
00038 public:
00039         bool encrypt(uint32_t *ct, const uint32_t *pt); // pt limbs = mod_limbs
00040         bool decrypt(uint32_t *pt, const uint32_t *ct); // ct limbs = mod_limbs
00041 };
00042 
00043 #endif // RSA_CRYPT_HPP
00044 
00045 #endif

Generated on Thu Sep 30 2010 01:27:28 for RakNet by  doxygen 1.7.1