summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-07-02 23:26:17 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-07-02 23:26:17 +0300
commite0db8851abe880553f48a0b2454dde293ffb22b2 (patch)
treedeb6e0f21d85573f1996f7d9b90562bb0349fb03 /utilities.cpp
parent166017ac72e412afef52e42ac5c31679211c8b55 (diff)
added ability to set private key for each protocol (#50 Свой ключ для каждой учетной записи)
Diffstat (limited to 'utilities.cpp')
-rwxr-xr-xutilities.cpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/utilities.cpp b/utilities.cpp
index 6b2261d..2207213 100755
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -195,8 +195,23 @@ int SendKey(WPARAM w, LPARAM l)
HANDLE hContact = (HANDLE)w;
if(metaIsProtoMetaContacts(hContact))
hContact = metaGetMostOnline(hContact);
- char *szMessage = UniGetContactSettingUtf(NULL, szGPGModuleName, "GPGPubKey", "");
- if(strlen(szMessage) > 1)
+ char *szMessage;
+ {
+ char *proto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ char setting[64];
+ if(proto)
+ {
+ strcpy(setting, proto);
+ strcat(setting, "_GPGPubKey");
+ szMessage = UniGetContactSettingUtf(NULL, szGPGModuleName, setting, "");
+ }
+ if(!szMessage[0])
+ {
+ mir_free(szMessage);
+ szMessage = UniGetContactSettingUtf(NULL, szGPGModuleName, "GPGPubKey", "");
+ }
+ }
+ if(szMessage[0])
{
BYTE enc = DBGetContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 0);
DBWriteContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 0);
@@ -746,7 +761,19 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU
DWORD code;
wstring cmd;
{
- char *inkeyid = UniGetContactSettingUtf(NULL, szGPGModuleName, "KeyID", "");
+ char *inkeyid;
+ {
+ char *proto = ji->Sys()->GetModuleName();
+ char setting[64];
+ strcpy(setting, proto);
+ strcat(setting, "_KeyID");
+ inkeyid = UniGetContactSettingUtf(NULL, szGPGModuleName, setting, "");
+ if(!inkeyid[0])
+ {
+ mir_free(inkeyid);
+ inkeyid = UniGetContactSettingUtf(NULL, szGPGModuleName, "KeyID", "");
+ }
+ }
TCHAR *pass = NULL;
if(inkeyid[0])
{