This commit is contained in:
german 2025-12-25 18:01:56 +04:00
parent a198642207
commit 33b0878a81
9 changed files with 96 additions and 31 deletions

View File

@ -1,3 +1,4 @@
{ {
"makefile.configureOnOpen": false "makefile.configureOnOpen": false,
"C_Cpp.errorSquiggles": "disabled"
} }

14
DOCS.md
View File

@ -5,6 +5,7 @@
- [Создание пользователя и шифрование](#создание-пользователя-и-шифрование) - [Создание пользователя и шифрование](#создание-пользователя-и-шифрование)
- [Чтение данных пользователя и расшифровка](#чтение-данных-пользователя-и-расшифровка) - [Чтение данных пользователя и расшифровка](#чтение-данных-пользователя-и-расшифровка)
- [Опции команды](#опции-команды) - [Опции команды](#опции-команды)
- [API](#api)
## Установка ## Установка
Зависимости для компиляции: Зависимости для компиляции:
- GCC - GCC
@ -68,3 +69,16 @@ vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ПОЛЬ
"--help" - "-h" "--help" - "-h"
"--version" - "-v" "--version" - "-v"
``` ```
## API
У библиотеки есть **API**:
```c
/* Пример */
#include "vipre-manager.h"
int main(void) {
__set_api_mode("admin", "1234", "signature_key");
__create_sig("api_example_key.sig");
__create_user("api_example_key.sig", "api_example_user.bin", "example.txt");
__read_user("api_example_key.sig", "api_example_user.bin", "example_out.txt");
}
```

BIN
api_example Executable file

Binary file not shown.

9
api_example.c Normal file
View File

@ -0,0 +1,9 @@
/* Пример API */
#include "vipre-manager.h"
int main(void) {
__set_api_mode("admin", "1234", "signature_key");
__create_sig("api_example_key.sig");
__create_user("api_example_key.sig", "api_example_user.bin", "example.txt");
__read_user("api_example_key.sig", "api_example_user.bin", "example_out.txt");
}

BIN
api_example_key.sig Normal file

Binary file not shown.

BIN
api_example_user.bin Normal file

Binary file not shown.

BIN
user.bin

Binary file not shown.

Binary file not shown.

View File

@ -35,8 +35,22 @@
#define true 1 #define true 1
#define false 0 #define false 0
char* __YEFWHD_api_login = NULL;
char* __YEFWHD_api_password = NULL;
char* __YEFWHD_api_datakey = NULL;
char __YEFWHD_data_type = '\0';
#define VIPRE_API_MODE 'A'
typedef FILE* file_t; typedef FILE* file_t;
void __set_api_mode(char* login, char* password, char* data_key) {
__YEFWHD_api_login = login;
__YEFWHD_api_password = password;
__YEFWHD_api_datakey = data_key;
__YEFWHD_data_type = VIPRE_API_MODE;
}
void _put_vipre_help(void) { void _put_vipre_help(void) {
puts ( puts (
"Vipre Console Cryptor V " VERSION "\n" "Vipre Console Cryptor V " VERSION "\n"
@ -122,10 +136,15 @@ int __create_sig(char* file) {
str_dt ++; str_dt ++;
} }
char key[32] = ""; char key[32] = "";
fputs("Signature key: ", stdout);
if (!scanf("%32[^\n]", key)) puts("\033[1mvipre-cryptor: \033[91mKey read error!\033[0m");
file_t fp = fopen(file, "wb"); file_t fp = fopen(file, "wb");
if (fp == NULL) { _file_read_error(); free(arr); return EXIT_FAILURE; } if (fp == NULL) { _file_read_error(); free(arr); return EXIT_FAILURE; }
if (__YEFWHD_data_type != VIPRE_API_MODE) {
fputs("Signature key: ", stdout);
if (!scanf("%32[^\n]", key)) puts("\033[1mvipre-cryptor: \033[91mKey read error!\033[0m");
} else {
strncpy(key, __YEFWHD_api_datakey, 31);
key[31] = '\0';
}
_str_srand(__generate_hash(key)); _str_srand(__generate_hash(key));
unsigned short int pos = 0; unsigned short int pos = 0;
while (true) { while (true) {
@ -148,6 +167,10 @@ int __create_sig(char* file) {
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
static void __nl_del(char* user_login) {
if (user_login[strlen(user_login) - 1] == '\n') user_login[strlen(user_login) - 1] = '\0';
}
int __create_user(char* file, char* user_file, char* cry_file) { int __create_user(char* file, char* user_file, char* cry_file) {
file_t fp = fopen(file, "rb"); file_t fp = fopen(file, "rb");
file_t wp = fopen(user_file, "wb"); file_t wp = fopen(user_file, "wb");
@ -162,35 +185,42 @@ int __create_user(char* file, char* user_file, char* cry_file) {
} }
char user_login[32]; char user_login[32];
char password[32]; char password[32];
fputs("Login: ", stdout);
int c; int c;
size_t cnt = 0; if (__YEFWHD_data_type != VIPRE_API_MODE) {
while((c=getchar())!=EOF && cnt < 31 && c != '\n') { fputs("Login: ", stdout);
user_login[cnt] = c; size_t cnt = 0;
cnt ++; while((c=getchar())!=EOF && cnt < 31 && c != '\n') {
} user_login[cnt] = c;
fputs("Password: ", stdout); cnt ++;
cnt = 0; }
while((c=getchar())!=EOF && cnt < 31 && c != '\n') { fputs("Password: ", stdout);
password[cnt] = c; cnt = 0;
cnt ++; while((c=getchar())!=EOF && cnt < 31 && c != '\n') {
} password[cnt] = c;
size_t cnt_save = cnt; cnt ++;
password[cnt] = '\0'; }
fputs("Repeat password: ", stdout); size_t cnt_save = cnt;
cnt = 0; password[cnt] = '\0';
while((c=getchar())!=EOF && cnt < 31 && c != '\n') { fputs("Repeat password: ", stdout);
if (password[cnt] != c) { cnt = 0;
while((c=getchar())!=EOF && cnt < 31 && c != '\n') {
if (password[cnt] != c) {
puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m");
free(arr);
return EXIT_FAILURE;
}
cnt ++;
}
if (cnt != cnt_save) {
puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m"); puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m");
free(arr); free(arr);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
cnt ++; } else {
} strncpy(user_login, __YEFWHD_api_login, 31);
if (cnt != cnt_save) { strncpy(password, __YEFWHD_api_password, 31);
puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m"); user_login[31] = '\0';
free(arr); password[31] = '\0';
return EXIT_FAILURE;
} }
fputs(user_login, wp); putc('\n', wp); fputs(user_login, wp); putc('\n', wp);
fputs(password, wp); putc('\n', wp); fputs(password, wp); putc('\n', wp);
@ -228,14 +258,25 @@ int __read_user(char* file, char* user_file, char* cry_file) {
char correct_login[32]; char correct_login[32];
char password[32]; char password[32];
char correct_password[32]; char correct_password[32];
fputs("Login: ", stdout);
char* res; char* res;
res = fgets(user_login, 32, stdin);
res = fgets(correct_login, 32, up); res = fgets(correct_login, 32, up);
fputs("Password: ", stdout);
res = fgets(password, 32, stdin);
res = fgets(correct_password, 32, up); res = fgets(correct_password, 32, up);
if (__YEFWHD_data_type != VIPRE_API_MODE) {
fputs("Login: ", stdout);
res = fgets(user_login, 32, stdin);
fputs("Password: ", stdout);
res = fgets(password, 32, stdin);
} else {
strncpy(user_login, __YEFWHD_api_login, 31);
strncpy(password, __YEFWHD_api_password, 31);
user_login[31] = '\0';
password[31] = '\0';
}
if (res); if (res);
__nl_del(user_login); __nl_del(password);
__nl_del(correct_login); __nl_del(correct_password);
if (user_login[strlen(user_login) - 1] == '\n') user_login[strlen(user_login) - 1] = '\0';
if (!(strcmp(user_login, correct_login) == 0 && strcmp(password, correct_password) == 0)) { if (!(strcmp(user_login, correct_login) == 0 && strcmp(password, correct_password) == 0)) {
puts("\033[1mvipre-cryptor: \033[91mThe password or login is incorrect!\033[0m"); puts("\033[1mvipre-cryptor: \033[91mThe password or login is incorrect!\033[0m");
free(arr); free(arr);