00001 #ifndef RSA_CONTEXT_RNS_HH
00002 #define RSA_CONTEXT_RNS_HH
00003
00004 #include "rsa_context.hh"
00005
00006 #include "rsa_cuda.h"
00007
00008 class rsa_context_rns : public rsa_context
00009 {
00010 public:
00011
00012 rsa_context_rns(int keylen);
00013
00014
00015 rsa_context_rns(const std::string &filename, const std::string &passwd);
00016 rsa_context_rns(const char *filename, const char *passwd);
00017
00018 virtual ~rsa_context_rns();
00019
00020 virtual void dump();
00021
00022
00023
00024 virtual void priv_decrypt(unsigned char *out, int *out_len,
00025 const unsigned char *in, int in_len);
00026 virtual void priv_decrypt_batch(unsigned char **out, int *out_len,
00027 const unsigned char **in, const int *in_len,
00028 int n);
00029 protected:
00030
00031 private:
00032 void gpu_setup();
00033
00034 RNS_CTX *rns_ctx[2];
00035 };
00036
00037 #endif