// calculate secret key BOOL CalculateKeyX(pUinKey ptr,MCONTACT hContact) { int agr = cpp_calc_keyx(ptr->cntx); if (agr) { // do this only if key exchanged is ok // we use a 192bit key int keysize = cpp_size_keyx(); PBYTE buffer = (PBYTE) alloca(keysize); // buffer for hash // store key cpp_get_keyx(ptr->cntx,buffer); // store key in database db_set_blob(hContact, MODULENAME, "offlineKey", buffer, keysize); // store timeout of key in database (2 days) db_set_dw(hContact, MODULENAME, "offlineKeyTimeout", gettime()+(60*60*24*db_get_w(0,MODULENAME,"okt",2))); // key exchange is finished showPopupEC(ptr->hContact); } else { // agree value problem showPopup(sim002,hContact,g_hPOP[POP_PU_DIS],0); } return agr != 0; }
// calculate secret key BOOL CalculateKeyX(pUinKey ptr,HANDLE hContact) { int agr = cpp_calc_keyx(ptr->cntx); if( agr ) { // do this only if key exchanged is ok // we use a 192bit key int keysize = cpp_size_keyx(); PBYTE buffer = (PBYTE) alloca(keysize); // buffer for hash // store key cpp_get_keyx(ptr->cntx,buffer); DBCONTACTWRITESETTING cws; cws.szModule = szModuleName; // store key in database cws.szSetting = "offlineKey"; cws.value.type = DBVT_BLOB; cws.value.cpbVal = keysize; cws.value.pbVal = buffer; CallService(MS_DB_CONTACT_WRITESETTING, (WPARAM)hContact, (LPARAM)&cws); // store timeout of key in database (2 days) cws.szSetting = "offlineKeyTimeout"; cws.value.type = DBVT_DWORD; cws.value.dVal = gettime()+(60*60*24*DBGetContactSettingWord(0,szModuleName,"okt",2)); CallService(MS_DB_CONTACT_WRITESETTING, (WPARAM)hContact, (LPARAM)&cws); // key exchange is finished showPopUpEC(ptr->hContact); } else { // agree value problem showPopUp(sim002,hContact,g_hPOP[POP_PU_DIS],0); } return agr!=0; }