1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
// Windows API
#define _CRT_NONSTDC_NO_DEPRECATE
#define WIN32_LEAN_AND_MEAN
#define NETLIB_LOG
#define CRYPTOPP_DEFAULT_NO_DLL
#ifdef _MSC_VER
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#define _SCL_SECURE_NO_WARNINGS
#define NOMINMAX
#ifndef _WIN64
#define _USE_32BIT_TIME_T
#endif
#endif
#include <limits>
#include <windows.h>
#include <wincrypt.h>
#include <winsock2.h>
#include <CommCtrl.h>
#include <CommDlg.h>
#include <malloc.h>
#include <process.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef M_API_H__
#define M_API_H__
// Miranda API
#include <newpluginapi.h>
#include <m_system.h>
#include <m_utils.h>
#include <m_langpack.h>
#include <m_protosvc.h>
#include <m_utils.h>
#include <m_netlib.h>
#endif
#include "cryptopp.h"
#include "version.h"
#include "resource.h"
#include "mmi.h"
#include "utf8.h"
#include "base16.h"
#include "gettime.h"
#include "cpp_rsam.h"
#include "cpp_rsau.h"
#define MODULENAME "Crypto++"
struct CMPlugin : public PLUGIN<CMPlugin>
{
CMPlugin() :
PLUGIN<CMPlugin>(MODULENAME)
{}
};
extern LPCSTR szModuleName;
extern LPCSTR szVersionStr;
// shared vars
extern PLUGININFOEX pluginInfoEx;
extern HANDLE hPGPPRIV;
extern HANDLE hRSA4096;
extern mir_cs localQueueMutex;
void ExtractFile(char*, int, int);
size_t rtrim(LPCSTR);
std::string base64encode(const std::string&);
std::string base64decode(const std::string&);
std::string base64decode(const char *);
#if defined(_DEBUG) || defined(NETLIB_LOG)
extern HNETLIBUSER hNetlibUser;
void InitNetlib();
void DeinitNetlib();
int Sent_NetLog(const char *, ...);
#endif
#define DLLEXPORT __declspec(dllexport)
PBYTE cpp_alloc_pdata(pCNTX);
extern "C"
{
DLLEXPORT HANDLE __cdecl cpp_create_context(int); // create crypt-context
DLLEXPORT void __cdecl cpp_delete_context(HANDLE); // delete crypt-context
DLLEXPORT void __cdecl cpp_reset_context(HANDLE); // reset crypt-context (free all data)
DLLEXPORT LPSTR __cdecl cpp_init_keya(HANDLE, int); // make KeyA
DLLEXPORT int __cdecl cpp_init_keyb(HANDLE, LPCSTR); // load KeyB
DLLEXPORT int __cdecl cpp_calc_keyx(HANDLE); // calculate KeyX
DLLEXPORT int __cdecl cpp_init_keyp(HANDLE, LPCSTR); // make KeyP from password
DLLEXPORT LPSTR __cdecl cpp_encodeA(HANDLE, LPCSTR); // encode ANSIz string
DLLEXPORT LPSTR __cdecl cpp_encodeW(HANDLE, LPWSTR); // encode USC2z string
DLLEXPORT LPSTR __cdecl cpp_encodeU(HANDLE, LPCSTR); // encode UTF8z string
DLLEXPORT LPSTR __cdecl cpp_decode(HANDLE, LPCSTR); // decode as ANSIzUCS2z
DLLEXPORT LPSTR __cdecl cpp_decodeU(HANDLE, LPCSTR); // decode as UTF8z
DLLEXPORT int __cdecl cpp_encrypt_file(HANDLE, LPCSTR, LPCSTR); // encrypt file
DLLEXPORT int __cdecl cpp_decrypt_file(HANDLE, LPCSTR, LPCSTR); // decrypt file
DLLEXPORT int __cdecl cpp_get_features(HANDLE); // get features field from client
DLLEXPORT int __cdecl cpp_get_error(HANDLE); // get last error code
DLLEXPORT int __cdecl cpp_get_version(void); // get dll version
DLLEXPORT int __cdecl cpp_size_keyx(void);
DLLEXPORT void __cdecl cpp_get_keyx(HANDLE, byte*); // get crypto key
DLLEXPORT void __cdecl cpp_set_keyx(HANDLE, byte*); // set crypto key
DLLEXPORT int __cdecl cpp_size_keyp(void);
DLLEXPORT void __cdecl cpp_get_keyp(HANDLE, byte*); // get pre-shared key
DLLEXPORT void __cdecl cpp_set_keyp(HANDLE, byte*); // set pre-shared key
DLLEXPORT int __cdecl cpp_keya(HANDLE); // KeyA exist ?
DLLEXPORT int __cdecl cpp_keyb(HANDLE); // KeyB exist ?
DLLEXPORT int __cdecl cpp_keyx(HANDLE); // KeyX exist ?
DLLEXPORT int __cdecl cpp_keyp(HANDLE); // KeyP exist ?
DLLEXPORT int __cdecl pgp_init(void);
DLLEXPORT int __cdecl pgp_done(void);
DLLEXPORT int __cdecl pgp_open_keyrings(LPSTR, LPSTR);
DLLEXPORT int __cdecl pgp_close_keyrings(void);
DLLEXPORT int __cdecl pgp_get_version(void);
DLLEXPORT LPSTR __cdecl pgp_get_error(void);
DLLEXPORT int __cdecl pgp_set_priv_key(LPCSTR);
DLLEXPORT int __cdecl pgp_set_key(HANDLE, LPCSTR);
DLLEXPORT int __cdecl pgp_set_keyid(HANDLE, PVOID);
DLLEXPORT int __cdecl pgp_size_keyid(void);
DLLEXPORT PVOID __cdecl pgp_select_keyid(HWND, LPSTR);
DLLEXPORT LPSTR __cdecl pgp_encode(HANDLE, LPCSTR);
DLLEXPORT LPSTR __cdecl pgp_decode(HANDLE, LPCSTR);
DLLEXPORT int __cdecl gpg_init(void);
DLLEXPORT int __cdecl gpg_done(void);
DLLEXPORT int __cdecl gpg_open_keyrings(LPSTR, LPSTR);
DLLEXPORT int __cdecl gpg_close_keyrings(void);
DLLEXPORT void __cdecl gpg_set_log(LPCSTR);
DLLEXPORT void __cdecl gpg_set_tmp(LPCSTR);
DLLEXPORT LPSTR __cdecl gpg_get_error(void);
DLLEXPORT int __cdecl gpg_set_key(HANDLE, LPCSTR);
DLLEXPORT int __cdecl gpg_set_keyid(HANDLE, LPCSTR);
DLLEXPORT int __cdecl gpg_size_keyid(void);
DLLEXPORT int __cdecl gpg_select_keyid(HWND, LPSTR);
DLLEXPORT LPSTR __cdecl gpg_encode(HANDLE, LPCSTR);
DLLEXPORT LPSTR __cdecl gpg_decode(HANDLE, LPCSTR);
DLLEXPORT LPSTR __cdecl gpg_get_passphrases();
DLLEXPORT void __cdecl gpg_set_passphrases(LPCSTR);
DLLEXPORT int __cdecl rsa_init(pRSA_EXPORT*, pRSA_IMPORT);
DLLEXPORT int __cdecl rsa_done(void);
}
|