00001 #ifndef __AES_CONTEXT__
00002 #define __AES_CONTEXT__
00003
00004 #include "cuda_mem_pool.hh"
00005 #include "device_context.hh"
00006
00013 class aes_context {
00014
00015 public:
00022 aes_context(device_context *dev_ctx);
00023 ~aes_context();
00024
00046 void ecb_128_encrypt(const void *memory_start,
00047 const unsigned long in_pos,
00048 const unsigned long keys_pos,
00049 const unsigned long pkt_index_pos,
00050 const unsigned long data_size,
00051 unsigned char *out,
00052 const unsigned long block_count,
00053 const unsigned long num_flows,
00054 unsigned int stream_id);
00055
00056
00077 void ecb_128_encrypt_nocopy(const void *memory_start,
00078 const unsigned long in_pos,
00079 const unsigned long keys_pos,
00080 const unsigned long pkt_index_pos,
00081 const unsigned long data_size,
00082 unsigned char *out,
00083 const unsigned long block_count,
00084 const unsigned long num_flows,
00085 unsigned int stream_id);
00086
00114 void cbc_encrypt(const void *memory_start,
00115 const unsigned long in_pos,
00116 const unsigned long keys_pos,
00117 const unsigned long ivs_pos,
00118 const unsigned long pkt_offset_pos,
00119 const unsigned long tot_in_len,
00120 unsigned char *out,
00121 const unsigned long num_flows,
00122 const unsigned long tot_out_len,
00123 const unsigned int stream_id,
00124 const unsigned int bits = 128);
00125
00152 void cbc_decrypt(const void *memory_start,
00153 const unsigned long in_pos,
00154 const unsigned long keys_pos,
00155 const unsigned long ivs_pos,
00156 const unsigned long pkt_index_pos,
00157 const unsigned long data_size,
00158 unsigned char *out,
00159 const unsigned long block_count,
00160 const unsigned long num_flows,
00161 unsigned int stream_id,
00162 const unsigned int bits = 128);
00163
00177 bool sync(const unsigned int stream_id,
00178 const bool block=true,
00179 const bool copy_result = true);
00180
00181
00182 private:
00183 struct {
00184 uint8_t *out;
00185 uint8_t *out_d;
00186 unsigned long out_len;
00187 } streams[MAX_STREAM + 1];
00188
00189 device_context *dev_ctx_;
00190 };
00191
00192
00193 #endif