diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-14 15:34:08 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-14 15:34:08 +0300 |
commit | 8bf21ad8fe9da1800e30487c921f14f6532dbe14 (patch) | |
tree | 211f3f985d881db0f2c79a68b53d8084ebc67f22 /utilities.cpp | |
parent | dc334c5e6eec4d1d5ff919b925d68d9743e6c654 (diff) |
fixed sign in outgoing prescense
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 41 |
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*)¶ms); + 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; |