some updates...

This commit is contained in:
wheelchairy 2025-01-28 21:36:25 +03:00
parent ebd6d7466d
commit 7ed2435811
13 changed files with 31 additions and 13 deletions

BIN
bfsk.o Normal file

Binary file not shown.

BIN
cerberus Executable file

Binary file not shown.

View File

@ -5,11 +5,16 @@
#include <iostream> #include <iostream>
#include <cstdlib> #include <cstdlib>
#include <string> #include <string>
#include <cstring>
#include <algorithm>
#include "libs/linenoise.h" #include "libs/linenoise.h"
#define CLR_RESET "\x1b[0m"
#define CLR_CYAN "\x1b[36m"
static void completionCallback(const char *input, linenoiseCompletions *completions) { static void completionCallback(const char *input, linenoiseCompletions *completions) {
if (strncmp(input, "ni", 2) == 0) { if (strncmp(input, "nick", 4) == 0) {
linenoiseAddCompletion(completions, "nick set "); linenoiseAddCompletion(completions, "nick set ");
linenoiseAddCompletion(completions, "nick generatekey"); linenoiseAddCompletion(completions, "nick generatekey");
} }
@ -38,7 +43,7 @@ void runCLI(AppConfig &config) {
<< " exit\n\n" CLR_RESET; << " exit\n\n" CLR_RESET;
while (true) { while (true) {
char *line = linenoise(CLR_BOLD ">_ " CLR_RESET); char *line = linenoise(CLR_CYAN ">_ " CLR_RESET);
if (!line) { if (!line) {
std::cout << "\n[cli] EOF/Ctrl+C - выходим.\n"; std::cout << "\n[cli] EOF/Ctrl+C - выходим.\n";
break; break;

BIN
cli.o Normal file

Binary file not shown.

BIN
commands.o Normal file

Binary file not shown.

View File

@ -4,3 +4,12 @@ nick set platon
nick generatekey nick generatekey
web start web start
web connect pm localhost web connect pm localhost
web start
web stop
exit
nick set platon
nick generatekey
web find
web find
sound find
exit

BIN
libs/linenoise.o Normal file

Binary file not shown.

BIN
libs/monocypher.o Normal file

Binary file not shown.

BIN
main.o Normal file

Binary file not shown.

BIN
sound.o Normal file

Binary file not shown.

BIN
webserver.o Normal file

Binary file not shown.

View File

@ -1,34 +1,38 @@
#include "x25519_handshake.hpp" #include "x25519_handshake.hpp"
#include "config.hpp" #include "config.hpp"
extern "C" { #include <cstring> // Для std::memcpy и std::memset
#include "libs/monocypher.h"
}
#include <cstdio>
#include <cstring>
#include <iostream> #include <iostream>
// Подключаем Monocypher
extern "C" {
#include "monocypher.h"
}
void x25519GenerateEphemeral(AppConfig &config) { void x25519GenerateEphemeral(AppConfig &config) {
FILE* f = fopen("/dev/urandom", "rb"); FILE* f = fopen("/dev/urandom", "rb");
if (!f) { if (!f) {
std::cerr << "[x25519] Не удалось открыть /dev/urandom\n"; std::cerr << CLR_RED "[x25519] Не удалось открыть /dev/urandom\n" CLR_RESET;
return; return;
} }
fread(config.ephemeralSec, 1, 32, f); size_t read = fread(config.ephemeralSec, 1, 32, f);
fclose(f); fclose(f);
if (read != 32) {
std::cerr << CLR_RED "[x25519] Не удалось прочитать 32 байта из /dev/urandom\n" CLR_RESET;
return;
}
crypto_x25519_public_key(config.ephemeralPub, config.ephemeralSec); crypto_x25519_public_key(config.ephemeralPub, config.ephemeralSec);
memset(config.sharedSecret, 0, 32); std::memset(config.sharedSecret, 0, 32);
config.haveSharedSecret = false; config.haveSharedSecret = false;
} }
void x25519ComputeShared(AppConfig &config, const uint8_t otherPub[32]) { void x25519ComputeShared(AppConfig &config, const uint8_t otherPub[32]) {
uint8_t shared[32]; uint8_t shared[32];
crypto_x25519(shared, config.ephemeralSec, otherPub); crypto_x25519(shared, config.ephemeralSec, otherPub);
memcpy(config.sharedSecret, shared, 32); std::memcpy(config.sharedSecret, shared, 32);
config.haveSharedSecret = true; config.haveSharedSecret = true;
std::cout << "[x25519] Получен общий сеансовый ключ (32 байта).\n"; std::cout << CLR_GREEN "[x25519] Общий сеансовый ключ вычислен!\n" CLR_RESET;
} }

BIN
x25519_handshake.o Normal file

Binary file not shown.