From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- secureim/crypt_dll.cpp | 236 ------------------------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 secureim/crypt_dll.cpp (limited to 'secureim/crypt_dll.cpp') diff --git a/secureim/crypt_dll.cpp b/secureim/crypt_dll.cpp deleted file mode 100644 index 713374e..0000000 --- a/secureim/crypt_dll.cpp +++ /dev/null @@ -1,236 +0,0 @@ -#include "commonheaders.h" - - -// generate KeyA pair and return public key -LPSTR InitKeyA(pUinKey ptr,int features) { -#if defined(_DEBUG) || defined(NETLIB_LOG) - Sent_NetLog("InitKeyA: %04x", features); -#endif - if( !ptr->cntx ) - ptr->cntx = cpp_create_context(isProtoSmallPackets(ptr->hContact)?CPP_MODE_BASE64:0); - - char *tmp = myDBGetString(ptr->hContact,szModuleName,"PSK"); - if(tmp) { - cpp_init_keyp(ptr->cntx,tmp); // make pre-shared key from password - mir_free(tmp); - } - - LPSTR pub_text = cpp_init_keya(ptr->cntx,features); // calculate public and private key & fill KeyA - - LPSTR keysig; - if(features&CPP_FEATURES_NEWPG) { - if(features&KEY_B_SIG) - keysig = (LPSTR)SIG_KEYB; - else - keysig = (LPSTR)SIG_KEYA; - } - else - if(isProtoSmallPackets(ptr->hContact)) - keysig = (LPSTR)SIG_KEY4; - else - keysig = (LPSTR)SIG_KEY3; - - int slen = strlen(keysig); - int tlen = strlen(pub_text); - - LPSTR keyToSend = (LPSTR) mir_alloc(slen+tlen+1); - - memcpy(keyToSend,keysig,slen); - memcpy(keyToSend+slen,pub_text,tlen+1); - - return keyToSend; -} - -// store KeyB into context -int InitKeyB(pUinKey ptr,LPCSTR key) { -#if defined(_DEBUG) || defined(NETLIB_LOG) - Sent_NetLog("InitKeyB: %s", key); -#endif - if(!ptr->cntx) - ptr->cntx = cpp_create_context(isProtoSmallPackets(ptr->hContact)?CPP_MODE_BASE64:0); - - if(!cpp_keyp(ptr->cntx)) { - char *tmp = myDBGetString(ptr->hContact,szModuleName,"PSK"); - if(tmp) { - cpp_init_keyp(ptr->cntx,tmp); // make pre-shared key from password - mir_free(tmp); - } - } - - cpp_init_keyb(ptr->cntx,key); - ptr->features = cpp_get_features(ptr->cntx); - - return cpp_get_error(ptr->cntx); -} - - -// store KeyX into context -void InitKeyX(pUinKey ptr,BYTE *key) { - - if(!ptr->cntx) - ptr->cntx = cpp_create_context(isProtoSmallPackets(ptr->hContact)?CPP_MODE_BASE64:0); - - cpp_set_keyx(ptr->cntx,key); -} - - -// 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; -} - - -// encrypt message -LPSTR encrypt(pUinKey ptr, LPCSTR szEncMsg) { - - LPSTR szSig = (LPSTR) (ptr->offlineKey?SIG_ENOF:SIG_ENON); - - int slen = strlen(szSig); - int clen = strlen(szEncMsg); - - LPSTR szMsg = (LPSTR) mir_alloc(clen+slen+1); - memcpy(szMsg, szSig, slen); - memcpy(szMsg+slen, szEncMsg, clen+1); - - return szMsg; -} - - -// encode message -LPSTR encodeMsg(pUinKey ptr, LPARAM lParam) { - - CCSDATA *pccsd = (CCSDATA *)lParam; - LPSTR szNewMsg = NULL; - LPSTR szOldMsg = (LPSTR) pccsd->lParam; - - if( pccsd->wParam & PREF_UTF ) - szNewMsg = encrypt(ptr,cpp_encodeU(ptr->cntx,szOldMsg)); - else - if( pccsd->wParam & PREF_UNICODE ) - szNewMsg = encrypt(ptr,cpp_encodeW(ptr->cntx,(LPWSTR)(szOldMsg+strlen(szOldMsg)+1))); - else - szNewMsg = encrypt(ptr,cpp_encodeA(ptr->cntx,szOldMsg)); - -// pccsd->wParam &= ~(PREF_UNICODE|PREF_UTF); - pccsd->wParam &= ~PREF_UNICODE; - - return szNewMsg; -} - - -// decode message -LPSTR decodeMsg(pUinKey ptr, LPARAM lParam, LPSTR szEncMsg) { - - CCSDATA *pccsd = (CCSDATA *)lParam; - PROTORECVEVENT *ppre = (PROTORECVEVENT *)pccsd->lParam; - - LPSTR szNewMsg = NULL; - LPSTR szOldMsg = (ppre->flags&PREF_UTF)?cpp_decodeU(ptr->cntx,szEncMsg):cpp_decode(ptr->cntx,szEncMsg); - - if(szOldMsg == NULL) { - ptr->decoded=false; - switch(cpp_get_error(ptr->cntx)) { - case CPP_ERROR_BAD_LEN: - szNewMsg = mir_strdup(Translate(sim102)); - break; - case CPP_ERROR_BAD_CRC: - szNewMsg = mir_strdup(Translate(sim103)); - break; - default: { - ptr->decoded=true; - szNewMsg = mir_strdup(Translate(sim101)); - } - break; - } - ppre->flags &= ~(PREF_UNICODE|PREF_UTF); - pccsd->wParam &= ~(PREF_UNICODE|PREF_UTF); - } - else { - ptr->decoded=true; - if( ppre->flags & PREF_UTF ) { // если протокол поддерживает utf8 - тогда отправляем в utf8 - int olen = strlen(szOldMsg)+1; - szNewMsg = (LPSTR) mir_alloc(olen); - memcpy(szNewMsg,szOldMsg,olen); - } - else { - int olen = (strlen(szOldMsg)+1)*(sizeof(WCHAR)+1); - szNewMsg = (LPSTR) mir_alloc(olen); - memcpy(szNewMsg,szOldMsg,olen); - ppre->flags |= PREF_UNICODE; - pccsd->wParam |= PREF_UNICODE; - } - } - ppre->szMessage = szNewMsg; - return szNewMsg; -} - - -BOOL LoadKeyPGP(pUinKey ptr) { - int mode = DBGetContactSettingByte(ptr->hContact,szModuleName,"pgp_mode",255); - if(mode==0) { - DBVARIANT dbv; - DBGetContactSetting(ptr->hContact,szModuleName,"pgp",&dbv); - BOOL r=(dbv.type==DBVT_BLOB); - if(r) pgp_set_keyid(ptr->cntx,(PVOID)dbv.pbVal); - DBFreeVariant(&dbv); - return r; - } - else - if(mode==1) { - LPSTR key = myDBGetStringDecode(ptr->hContact,szModuleName,"pgp"); - if( key ) { - pgp_set_key(ptr->cntx,key); - mir_free(key); - return 1; - } - } - return 0; -} - - -BOOL LoadKeyGPG(pUinKey ptr) { - - LPSTR key = myDBGetString(ptr->hContact,szModuleName,"gpg"); - if( key ) { - gpg_set_keyid(ptr->cntx,key); - mir_free(key); - return 2; - } - return 0; -} - -// EOF -- cgit v1.2.3