summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-09-14 15:34:08 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-09-14 15:34:08 +0300
commit8bf21ad8fe9da1800e30487c921f14f6532dbe14 (patch)
tree211f3f985d881db0f2c79a68b53d8084ebc67f22 /utilities.cpp
parentdc334c5e6eec4d1d5ff919b925d68d9743e6c654 (diff)
fixed sign in outgoing prescense
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp41
1 files changed, 35 insertions, 6 deletions
diff --git a/utilities.cpp b/utilities.cpp
index a64abae..b9620d4 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -492,6 +492,7 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU
tmp[size]= '\0';
data.append(tmp);
delete [] tmp;
+ f.close();
DeleteFile(path_out.c_str());
}
if(data.empty())
@@ -509,10 +510,10 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU
if(data.find(_T("Version: "), p1) != wstring::npos)
{
p1 = data.find(_T("Version: "), p1);
- p1 = data.find(_T("\n"), p1)+2;
+ p1 = data.find(_T("\n"), p1)+1;
}
else
- p1 += 2;
+ p1 += 1;
}
if(data.find(_T("Comment: "), p1) != wstring::npos)
{
@@ -521,13 +522,13 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU
if(data.find(_T("Comment: "), p1) != wstring::npos)
{
p1 = data.find(_T("Comment: "), p1);
- p1 = data.find(_T("\n"), p1)+2;
+ p1 = data.find(_T("\n"), p1)+1;
}
else
- p1 += 2;
+ p1 += 1;
}
else
- p1+=2;
+ p1+=1;
wstring::size_type p2 = data.find(_T("-----END PGP MESSAGE-----"));
HXML encrypted_data = xi.addChild(node, _T("x"), data.substr(p1, p2-p1).c_str());
xi.addAttr(encrypted_data, _T("xmlns"), _T("jabber:x:signed"));
@@ -585,7 +586,35 @@ static JABBER_HANDLER_FUNC PrescenseHandler(IJabberInterface *ji, HXML node, voi
return FALSE;
}
}
-
+ { //gpg
+ string out;
+ DWORD code;
+ wstring cmd = _T(" -d -a \"");
+ cmd += path_out;
+ cmd += _T("\"");
+ gpg_execution_params params;
+ pxResult result;
+ params.cmd = &cmd;
+ params.useless = "";
+ params.out = &out;
+ params.code = &code;
+ params.result = &result;
+ HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)&params);
+ if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT)
+ {
+ TerminateThread(gpg_thread, 0);
+ MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK);
+ }
+ if(result == pxNotFound)
+ {
+ MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK);
+ }
+ if(out.find("key ID ") != string::npos)
+ {
+ string::size_type p = out.find("key ID ") + strlen("key ID ");
+ string::size_type p2 = out.find("\n", p);
+ }
+ }
DeleteFile(path_out.c_str());
ReleaseMutex(sign_file_mutex);
return FALSE;