From 7aaad6943c9cb89f11202ac600cd5b77f2d4d6df Mon Sep 17 00:00:00 2001 From: malloc Date: Wed, 14 Mar 2018 23:01:24 -0500 Subject: [PATCH] nothing else tonight --- server/CMakeLists.txt | 2 +- server/src/crypto/sha1.cpp | 47 +++++++++++++++++++++++++++++++------- server/src/main.cpp | 3 ++- server/src/sock/packet.cpp | 4 ++++ 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index f074636..d2d07d5 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -20,4 +20,4 @@ else() target_link_libraries(server pthread socket nsl resolv) endif() -install(TARGETS server RUNTIME DESTINATION bin) +install(TARGETS server RUNTIME DESTINATION bin) diff --git a/server/src/crypto/sha1.cpp b/server/src/crypto/sha1.cpp index dab5018..1100e65 100644 --- a/server/src/crypto/sha1.cpp +++ b/server/src/crypto/sha1.cpp @@ -2,6 +2,17 @@ #define SHA1_BLOCK_SIZE 64 +#undef A +#define A 0 +#undef B +#define B 1 +#undef C +#define C 2 +#undef D +#define D 3 +#undef E +#define E 4 + static inline uint32_t Z(uint32_t x, uint32_t y) { return x + y; } @@ -12,17 +23,17 @@ static inline uint32_t S(uint32_t X, uint8_t n) { } static uint32_t f - (uint8_t t, uint32_t B, uint32_t C, uint32_t D) + (uint8_t t, uint32_t b, uint32_t c, uint32_t d) { t = t % 80; if(t <= 19) - return (B & C) | (~B & D); + return (b & c) | (~b & d); else if(t >= 20 && t <= 39) - return B ^ C ^ D; + return b ^ c ^ d; else if(t >= 40 && t <= 59) - return (B & C) | (B & D) | (C & D); + return (b & c) | (b & d) | (c & d); else - return B ^ C ^ D; + return b ^ c ^ d; } static uint32_t K(uint8_t t) { @@ -58,16 +69,36 @@ std::string sosc::cgc::sha1(const std::string& data) { 0x98BADCFE, 0x10325476, 0xC3D2E1F0 - }, W[80], A, B, C, D, E; + }, W[80], T, O[5]; for(int i = 0; i < data.length() + padding.length(); i += SHA1_BLOCK_SIZE) { for(int j = 0; j < 16; ++j) { W[j] = 0; for(int k = 0; k < 4; ++k) { - if(i + j + k < data.length()) - W[j] |= (data[i + j + k] + W[j] |= (((i + j + k < data.length()) + ? data : padding)[i + j + k] >> (8 * (3 - i))) & 0xFF; } } + + for(int j = 16; j < 80; ++j) + W[j] = S(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1); + + for(int j = 0; j < 5; ++j) + O[j] = H[j]; + + for(int j = 0; j < 80; ++j) { + T = S(O[A], 5) + f(j, O[B], O[C], O[D]) + O[E] + W[j] + K(j); + O[E] = O[D]; + O[D] = O[C]; + O[C] = S(O[B], 30); + O[B] = O[A]; + O[A] = T; + } + + for(int j = 0; j < 5; ++j) + H[j] += O[j]; } + + return ""; } diff --git a/server/src/main.cpp b/server/src/main.cpp index 6691e29..063bf1d 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -5,6 +5,7 @@ #include "utils/net.hpp" #include "utils/time.hpp" #include "sock/tcpsock.hpp" +#include "crypto/sha1.hpp" int main(int argc, char **argv) { //auto sock = sosc::TcpClient(); @@ -28,7 +29,7 @@ int main(int argc, char **argv) { std::cout << got << std::endl; }*/ - + std::string a = sosc::cgc::sha1("test"); return 0; } diff --git a/server/src/sock/packet.cpp b/server/src/sock/packet.cpp index 5474b9a..1fceb3c 100644 --- a/server/src/sock/packet.cpp +++ b/server/src/sock/packet.cpp @@ -133,3 +133,7 @@ bool sosc::Packet::Check(int region_count, ...) { return true; } + +std::string sosc::Packet::ToString() const { + return "TODO"; +}