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
00026
00027 bool generatePrivateKey(uint32_t limbs);
00028
00029 public:
00030 uint32_t getFactorLimbs();
00031 void getPrivateP(uint32_t *p);
00032 void getPrivateQ(uint32_t *q);
00033
00034 uint32_t getModLimbs();
00035 void getPublicModulus(uint32_t *modulus);
00036 uint32_t getPublicExponent();
00037
00038 public:
00039 bool encrypt(uint32_t *ct, const uint32_t *pt);
00040 bool decrypt(uint32_t *pt, const uint32_t *ct);
00041 };
00042
00043 #endif // RSA_CRYPT_HPP
00044
00045 #endif