X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/d084d9ae9f7bcd7f7d1926e7eeae921dbad49273..0cfa021cfd1395e2f6146d52f9e5ffa64be17976:/stglibs/srvconf.lib/netunit.cpp diff --git a/stglibs/srvconf.lib/netunit.cpp b/stglibs/srvconf.lib/netunit.cpp index a8b36e57..f6fcf500 100644 --- a/stglibs/srvconf.lib/netunit.cpp +++ b/stglibs/srvconf.lib/netunit.cpp @@ -68,6 +68,7 @@ NETTRANSACT::NETTRANSACT(const std::string & s, uint16_t p, const std::string & l, const std::string & pwd) : server(s), port(p), + localPort(0), login(l), password(pwd), outerSocket(-1) @@ -313,22 +314,14 @@ int NETTRANSACT::TxLoginS() { char loginZ[ADM_LOGIN_LEN]; memset(loginZ, 0, ADM_LOGIN_LEN); -strncpy(loginZ, login.c_str(), ADM_LOGIN_LEN); - BLOWFISH_CTX ctx; -EnDecodeInit(password.c_str(), PASSWD_LEN, &ctx); - -for (int j = 0; j < ADM_LOGIN_LEN / ENC_MSG_LEN; j++) +InitContext(password.c_str(), PASSWD_LEN, &ctx); +EncryptString(loginZ, login.c_str(), std::min(login.length() + 1, ADM_LOGIN_LEN), &ctx); +if (send(outerSocket, loginZ, ADM_LOGIN_LEN, 0) <= 0) { - char ct[ENC_MSG_LEN]; - EncodeString(ct, loginZ + j * ENC_MSG_LEN, &ctx); - if (send(outerSocket, ct, ENC_MSG_LEN, 0) <= 0) - { - errorMsg = SEND_LOGIN_ERROR; - return st_send_fail; - } + errorMsg = SEND_LOGIN_ERROR; + return st_send_fail; } - return st_ok; } //--------------------------------------------------------------------------- @@ -365,32 +358,21 @@ else int NETTRANSACT::TxData(const std::string & text) { BLOWFISH_CTX ctx; -EnDecodeInit(password.c_str(), PASSWD_LEN, &ctx); - -size_t pos = 0; -while (pos < text.size()) +InitContext(password.c_str(), PASSWD_LEN, &ctx); +char buffer[text.length() + 9]; +EncryptString(buffer, text.c_str(), text.length() + 1, &ctx); +if (send(outerSocket, buffer, sizeof(buffer), 0) <= 0) { - char textZ[ENC_MSG_LEN]; - if (text.size() - pos < ENC_MSG_LEN) - memset(textZ, 0, ENC_MSG_LEN); - strncpy(textZ, text.c_str() + pos, std::min(ENC_MSG_LEN, (int)(text.size() - pos))); - char ct[ENC_MSG_LEN]; - EncodeString(ct, textZ, &ctx); - if (send(outerSocket, ct, ENC_MSG_LEN, 0) <= 0) - { - errorMsg = SEND_DATA_ERROR; - return st_send_fail; - } - pos += ENC_MSG_LEN; + errorMsg = SEND_DATA_ERROR; + return st_send_fail; } - return st_ok; } //--------------------------------------------------------------------------- int NETTRANSACT::RxDataAnswer(CALLBACK callback, void * data) { BLOWFISH_CTX ctx; -EnDecodeInit(password.c_str(), PASSWD_LEN, &ctx); +InitContext(password.c_str(), PASSWD_LEN, &ctx); std::string chunk; while (true) @@ -411,7 +393,7 @@ while (true) } char buffer[ENC_MSG_LEN]; - DecodeString(buffer, bufferS, &ctx); + DecryptBlock(buffer, bufferS, &ctx); bool final = false; size_t pos = 0;