OSDN Git Service

Support password timeout.
[tombo/Tombo.git] / Src / Crypt.cpp
1 #include <windows.h>\r
2 #include "Crypt.h"\r
3 \r
4 extern "C" {\r
5         void *BF_Init(byte *key, unsigned keylen);\r
6         void BF_Enc(void *handle, byte *chipher, byte *plain, int len);\r
7         void BF_Dec(void *handle, byte *plain, byte *chipher);\r
8         void BF_Free(void *handle);\r
9 };\r
10 \r
11 \r
12 Crypt::Crypt() : handle(NULL)\r
13 {\r
14 }\r
15 \r
16 Crypt::~Crypt()\r
17 {\r
18         if (handle != NULL) {\r
19                 BF_Free(handle);\r
20         }\r
21 }\r
22 \r
23 BOOL Crypt::ResetStream(byte *key, unsigned int len)\r
24 {\r
25         if (handle != NULL) {\r
26                 BF_Free(handle);\r
27                 handle = NULL;\r
28         }\r
29 \r
30         handle = BF_Init(key, len);\r
31         if (handle == NULL) return FALSE;\r
32 \r
33         return TRUE;\r
34 }\r
35 \r
36 BOOL Crypt::Encrypt(byte *chipher, byte *plain, int len)\r
37 {\r
38         if (handle == NULL) {\r
39                 SetLastError(ERROR_INVALID_DATA);\r
40                 return FALSE;\r
41         }\r
42         BF_Enc(handle, chipher, plain, len);\r
43         return TRUE;\r
44 }\r
45 \r
46 BOOL Crypt::Decrypt(byte *plain, byte *chipher)\r
47 {\r
48         if (handle == NULL) {\r
49                 SetLastError(ERROR_INVALID_DATA);\r
50                 return FALSE;\r
51         }\r
52         BF_Dec(handle, plain, chipher);\r
53         return TRUE;\r
54 }\r