+#include "error.h"
+
+struct crypt_data {
+ crypt_function *recv;
+ crypt_function *send;
+ void *private_data;
+};
+
+static struct crypt_data *crypt_data_array;
+static unsigned cda_size = 0;
+
+void enable_crypt(int fd, crypt_function *recv, crypt_function *send,
+ void *private_data)
+{
+ if (fd + 1 > cda_size) {
+ crypt_data_array = para_realloc(crypt_data_array,
+ (fd + 1) * sizeof(struct crypt_data));
+ memset(crypt_data_array + cda_size * sizeof(struct crypt_data), 0,
+ (fd + 1 - cda_size) * sizeof(struct crypt_data));
+ cda_size = fd + 1;
+ }
+ crypt_data_array[fd].recv = recv;
+ crypt_data_array[fd].send = send;
+ crypt_data_array[fd].private_data = private_data;
+ PARA_INFO_LOG("rc4 encryption activated for fd %d\n", fd);
+}
+
+void disable_crypt(int fd)
+{
+ if (cda_size < fd + 1)
+ return;
+ crypt_data_array[fd].recv = NULL;
+ crypt_data_array[fd].send = NULL;
+ crypt_data_array[fd].private_data = NULL;
+}