From 33b0878a81767719cf8fab62575b2a8d7c2799c6 Mon Sep 17 00:00:00 2001 From: german Date: Thu, 25 Dec 2025 18:01:56 +0400 Subject: [PATCH] API --- .vscode/settings.json | 3 +- DOCS.md | 14 ++++++ api_example | Bin 0 -> 21752 bytes api_example.c | 9 ++++ api_example_key.sig | Bin 0 -> 256 bytes api_example_user.bin | Bin 0 -> 195 bytes user.bin | Bin 195 -> 195 bytes vipre-cryptor | Bin 17400 -> 21760 bytes vipre-manager.h | 101 +++++++++++++++++++++++++++++------------- 9 files changed, 96 insertions(+), 31 deletions(-) create mode 100755 api_example create mode 100644 api_example.c create mode 100644 api_example_key.sig create mode 100644 api_example_user.bin diff --git a/.vscode/settings.json b/.vscode/settings.json index 082b194..f14a6a0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "makefile.configureOnOpen": false + "makefile.configureOnOpen": false, + "C_Cpp.errorSquiggles": "disabled" } \ No newline at end of file diff --git a/DOCS.md b/DOCS.md index 49d2f08..33e0213 100644 --- a/DOCS.md +++ b/DOCS.md @@ -5,6 +5,7 @@ - [Создание пользователя и шифрование](#создание-пользователя-и-шифрование) - [Чтение данных пользователя и расшифровка](#чтение-данных-пользователя-и-расшифровка) - [Опции команды](#опции-команды) + - [API](#api) ## Установка Зависимости для компиляции: - GCC @@ -67,4 +68,17 @@ vipre-cryptor ИМЯ_ФАЙЛА_С_КЛЮЧОМ.sig --user-data ИМЯ_ПОЛЬ # Опции "--file-input" и "--file-out" можно сократить до "--file" или просто "-f" "--help" - "-h" "--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"); +} ``` \ No newline at end of file diff --git a/api_example b/api_example new file mode 100755 index 0000000000000000000000000000000000000000..008cd2bf381d654830a817313da8211603fbeb57 GIT binary patch literal 21752 zcmeHPeRNaDm4EUFIL1h#0b;_JNJS4cv10LQQ=C{vhUY|l1Pn<^KnP35Dz@b614GNE zCbFp&qlRtTY_`qr(w^NDx|`i{+LUG~4F;zsY}*{5yV@A-97!Ie|UW4JNGyD-kG`c_1?Vq<_qC!Z56!;>BY3a2ZL8=zsD9EKH94`bVy>f~SL#Jr4B&aAMQPRs7_K(q01eL5B zPkO}^<-CzTG)|KfRHSF}tJKmZ1ND#Aa6$EY^mTu+#6SRcadljcbkK9FiHm+ym zdV&seM+hqXNj{-p6}M-khGI)by%w%#q;A-xASmTQVaE71h<^}WaZS_~Q21D`f72B&8R4kb1h=v_= zSP`gPHvFhhEnBfxf|)+TL~|B&YP_&VY2$f1$)B1(Y3`ZH-Tgm!`)I@~|MQK1i|^k> zGE{ETAsGr}j~6k+PezPnG=F?U>NHs;!lp6_Nt!iv&y-Vv*V?wM^$9odlq|U)(T`=> zOe~TIpOgn5hl1EL+S$ndJo4^5_`W>&hCKL;JU9)<;p+8#9-RC*oc!PB!Ta;z)V9Of zc{&eXk;iXa^T_{49(+z7d}SW|;XL@i=D`o=!58N#{{wmC{lLdbcS^QZh#-jhrwj4B z7?S(X43^|84f0a+mOv~jMFJhckY9?%{K1ga9*;F48VNPE?~uISXw28N)!Wpv)!Xa~ zwgPC61VgcALZs$MAVB|oehGG(q_#j?TX-9waC;y`Hd-0+hvPA+&DYu*Zh}6hf+n&W ziFw<6$j|F-+V1l<2SdKr;OC$l3$(UMO`3FbQ)@U13}uQ!Fc=LtRabkXO}#91R4vN@Sa6l?Bo=Pea`j?;OX%Ol+=WUM8N6&CN#VIOa>YYX+z||pr5WlM9E(i~-bS9{6*6;62NkF^`xA5rG&0@B}tus?LPdU zc^&^P(`zM?Z=rrG+K^c9y3LgY@YvPYX=?SeB=SCH?v|Lp z)tQgiVJ-x2fkW(>qD7pHs*? znf&}u5}AEVP7caPuiP&my-_He2INz>V&h@p!lyI?CF(h?-wAyh-<>sMp)1AjUMnYR zjzJQYybvpsdus;3C=I_;RmG384lpyO4baWxPx|Q&B=YhQFDGl>qWqHcUt?s#5s-o6 z1NiUiZ_d`$GF_W*P=^hZF+!}!i0P+l#!dw<2|iftf^OT20he4{T}hUU=K+w9D%N4` zC2J-i8O7A>uaT1I2tbHs8=Z%pq-+os%U6T_xZ^)J<|1Bqu zn&j$N(=XA~w_di?AM4lrrUArg?ZwL5eL8lBv+rUV{30j%pnNPgy0&WZsQA16 zFHs}+XX{MzZp%T>LRC(!QxjJTz!WV^o^tmTS-OW}v)rk=TMwj)Mhp9vgXmkwJhPAW zl+8gzPAD*cGp@LMESdTt`z>;6sp@KU!BDDJbtU`PdQ$e$YaU45Guo5vZ!mq7YQM$n zTQAjH4vx3GdJ5%K(ZcRCv8m)IEgyOIwYr|N0$oPGarfNeN~BHkf%O|)kM;Lc`CW}K zlUvr3Uysn;3x-jpU+yiMISa6yblYb+`;=oJVLr87?UPgUUztMiSvmP5%j_b%WwzUH zRX(n@ho#E_1D!QbSEF;t$$m@Mm&jo6*d_ohn?p1^Hzd!amwW+slu{@<`#i~C19+T( zG&1V$vvl1JMNjfK%7-`6(r^`F3xPR@oPDgpU6zAoMQH3-Wz%bN;ubab2fV%F@5tRl ztZikBdr(fMohUoa&vI~x^}AgITF1L4AN?O|;#g;Mw;G#6?VVI~?S3?NZUB8=SA4=F(4sqO<-CR?d=@uYo7G z9b@UtZQUoZRy(Tdx(-SAdXtT(zm?(vgIqsN={n3e@fGG_X$haD~PZTsdQ6idOh}Xy%&!+B#$dU zxPcVrNK5xN$amJ1qi!xs7wvSS-(6fFNr&iygw@}925$N|N~SywixzJ0f zQ5u`nnbz0UG-qrJBJSlr%_c!f$g zi>$r_St{M@o>a_klT)qsT2J*mu}`CZCAdLVp8kN`ttwkVS!YUD!y!zVwK~&4Pbh>j zPx1q04dlRHnvVifub_^2KQQ!)`%yf*m!v$&E6UfH;VVbT8_G{LhJ>HcAtlA%;h8KtU(hJog;AFk~9>c*afethk^^b(4$8)9Ad z{Qxk^zRPmLaKZ>X&W4e)k7YIg6R^QX*(=JIfGqD;G2qw$JI@CgJ;bBo)@4CN8(?-_Nc#ocwJT5*oD?x*nbyVc50G6q>yskH)-O%6MhT{nLJu#SB^lF zEOZb}xeL|Ks?vDj00ep$+Z7+7y=8W!n6fG8JF+HToB^pKa{)G_+@muf8J-5Pb7#@? z(s=QJyNFgFx)@cq0PgOK<3ew-9er7O7(6D*@wnWXgeGXm{fP42_p~PH1x;^9pTaa= z??iutEE{spAs|?Rl}CZl9Pb2mo|copBz*Q8SiQB0xf-}ky&(yQA)dlfifu|sVk>c~&NH5r`*mx*^Rn|Y=CgX|>3V|3 z9>%2a9J)BAwreQ3S0GaH4x*5$!8!sP2oosq@3zJDM#APc$@@B|WAS_o=_il!qxNPb1?Y*oYrq-hIZ>bsI`l+jZH}{W|if z?>cYkKFcCNUO)s@{4c6v`@3l68QMDEko;LXN8``1z=mY{J-FY+ z3~2m2)Evk`PX5A^eBF~gt7Vmbl`b%VXAzo@hLgMxQ$9-keK=ovVh{~liHzAjI=fSZ z4Q7O^`YYR9w2SZ3BF6bON6&UweqZNkHJ(_t7S#YJc3vv{BGDt3adXg`_9t8|!1%SUH%*%r_e z{3fq=w&l2ek!|w&YG>P0@+iIUY70an;mC~1>nq#z-7lZsgMl5xs^yb!Yzf%febHz~ zIO4Z;_@Yp5r*`(EIh(?fNT4a!x8}lK4TU>GwlHfc z+g&rGcQFNex>3Fs!!--5$F8biVKxz&RL;5lCha zeydRb85|^RAAYUCgbkuE;@4upUIpei=)MW86IdB21**>=emj9ZOhCQankXo!Ej5=s zIA*E2glt<;ro%{QbtWD^YKJ#~c@U>?4}R1pYxy02!@Dsd443QSdH$whS_*_~_@^IVkLKn$<%&Q8YHIJAJ<^!g}n+2ujDwny^Wu65Y$ku6v zpx3cv{4T-Xstc<6{2#aXfO*hVa6FGWs&f_U@uGrPDPWVzmZGxlq5AADLjH+jx4E*g z2$h-z2=&s6B9AF(1oVIosvqM9;{H7(S4N_K_X6_lL%;hx;?#D#3s#!T6NM|xwt{+d zIU2!bE}^86Fyes`4~%$V!~=i%9@s<|1PC@xX*r>AQX^6sr{Y5=@vVw`hL(VLZ&(oD zD^2FSSO~;79pbwsx(1*i(%-+OhKWBwYa)X9mgfMy6OF)$bdINs>)Lg^pyFE_yt2cB z{u>nnxSC{Lsio8MPr=F~yxNlZCJ66-u<$JZ=ttoDd4WZ_2e}*Nh%vo;#6v}#B#r>i*K#A!RHot*CF zbRVY&IPK%~B&X*%9pn@rJ+ffs)W&Hgr?s4};&cPillexU5%VT{ltWnJ-i`pJQeQ( z3@bl_$xo83t29B;pXj=HIQvfE1(H=dKn8UIFY++_oB?0TaWU?N3f(i9@EvLu&sX@T zh2ax3-yaJ3rx2lh#XKVLuQT}xneP|{p0E6enEZHY(?TJcrNh`+B+Q=N&mw;_@Zs{^ znkV1C;`YUNm76ezJ`F0-pV+^-Sozpc*b{~T1X^yYL z%V8AQ{TAriJa%s8!N=zD!*qsQrM-Njr~5Pt_i((APv|o=SX#jGL5_>{%mtj<En9~u) zxB9-#L2t~rMZb&ZXp%w!Z0tcM8jIu8m?kOvslPYY=EZ3Pp#U8;;17GZw1zkPTD^X3 z+(*5>_;#r&Ogn|xgTRKLA>5b0OgLh zpjjmxC}xJfSrSpgBZ`B@cN@+6d>fMvnd)@!ZwcY@M5PLH4@ce znZ|as)9Dqunh{J};M$=axw!<$Bh;7u)Irfx{ekV;@fx{u-p$b{uMa=RBYQGPMv@NQ zAg{wUw1qBC2+5?gcB0clauBq00K)@K&=&Sn(e(#^WF!~n)=4}s;Rl0c#I(VHlRU)O z%60B%E!+C81_()++#{|tMe@>9EJ<=iceKTPn?Yj{jkbsw zj#LRm+9gLQ91A$MgyN3&2)q)B?a)D+<3Svt6!de*Ro75K6C4v~{m|jx5keLcqp^sV zBA$^kG0u3A774WaNRY?cTVs-g)x&|PV@nt;MWTTw$q}Pj)4_(UBNArg(h+Fk6IzQO z)&!^7&}KGGL&TAluPq2;nmRg<{Z&if)+3gS9g<0NSTB6@w}xnFi6$SIbuoX`MHuP^T71hwTzYiE<`A-Z0~ zCn8}{ezD&nXeAdO#i_CUKH#+1A@s$5h@kW=i2{|8{4DgvzC;ihE;TaxVt++Yv7Z7F z7RZJ^d=?DtRfzn>{)C{5xv(g|kQ4NAq|@Gq;Klxjpqse9vHTpCQixES2z{|1Bj_L( z6!{zL|2JH}j?0Pt9YMu@5b2Z8jQZaIMm`btGuJ`3Cf=3 z31v{8oT1Mf^!M_84?%^zFd=wB4;b|KaeYBI85&&Z3Ht8_eQ{ka=o0;5HINm0qC7_o z`rB%U9M$Bs^X5D3YKm; qMfpX&X#Y=?UDMG1cP`WD-x)fb$XCeHa2-y6D&GLP)1Y8rrT+!bx((6* literal 0 HcmV?d00001 diff --git a/api_example.c b/api_example.c new file mode 100644 index 0000000..7b0abe1 --- /dev/null +++ b/api_example.c @@ -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"); +} diff --git a/api_example_key.sig b/api_example_key.sig new file mode 100644 index 0000000000000000000000000000000000000000..d1128f1a0b25567bde8992c97bb5874c579fba5b GIT binary patch literal 256 zcmV+b0ssC@^SCZ!>>SF*=E*ke>dQlXFGfKJlPbb3|1jkJn37)(s*PS%m%Z)vVD=eP zizy@b#rg$|VrCx=a!UCEsiyQt{O_%Ku7Fb0zpT4!S!lK-3*X15h9?Ns`=IW6!5ToX z9VSfCtFr?v*#;6aZGrIteFGz!}Z?O3SK3HEYW^XVp0$l3Sdca?He!f;!)u61jC(ZKw> zKYN*MJ#ypoOGQkg9+k4hy^%G~>0Y&~aWUS}Ns7B}4T!<-|3&~e{3pl*_roABSap}0 zTL-9hYe><+1H0GUGKC6qP4lEh%E!F@vK76NQ&n*MR5ATo+>>h_83^1mY*tEY3pcwb x$Sn7@AVy7e!s#isY;9I4vA_enmVh>K@ACl*H;o)Syf3oE?dLT`>0q^iA~ETeVI}|o literal 0 HcmV?d00001 diff --git a/user.bin b/user.bin index aaa94e7b9156851b76eeb19271a121d4955251a4..1bd6e9116725102a976c0f6c50b5f097de0d4e4f 100644 GIT binary patch literal 195 zcmV;!06hO;WNm3~3NbP>Gz!}Z?O3SK3HEYW^XVp0$l3Sdca?He!f;!)u61jC(ZKw> zKYN*MJ#ypoOGQkg9+k4hy^%G~>0Y&~aWUS}Ns7B}4T!<-|3&~e{3pl*_roABSap}0 zTL-9hYe><+1H0GUGKC6qP4lEh%E!F@vK76NQ&n*MR5ATo+>>h_83^1mY*tEY3pcwb x$Sn7@AVy7e!s#isY;9I4vA_enmVh>K@ACl*H;o)Syf3oE?dLT`>0q^iA~ETeVI}|o literal 195 zcmYdH$<55;GBh$a;p!J-KRYd|zmMH?+7~SqcIjzLv=pX&jL!Tx&GF;3sUN4M_TOip zz4%`LZ}z#-DIb9hkji)c+u6^`!IeezhqBL_cJt%3B|rx2w3}a~Gl3@b*JSqZ0O_3? z4K!Bp4P>YQMKXaF%>~*n2x3TsEdm)8y|zC@ Y^y9S0K$AJAacKQvpEr%8UpC7T0RMAZ^8f$< diff --git a/vipre-cryptor b/vipre-cryptor index ef420e676147e6425cbe59b9882887a35aa88535..0ff39768b74a8ddb48d892632c1855b999815cba 100755 GIT binary patch literal 21760 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 diff --git a/vipre-manager.h b/vipre-manager.h index 5e5bb8e..7d77758 100644 --- a/vipre-manager.h +++ b/vipre-manager.h @@ -35,8 +35,22 @@ #define true 1 #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; +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) { puts ( "Vipre Console Cryptor V " VERSION "\n" @@ -122,10 +136,15 @@ int __create_sig(char* file) { str_dt ++; } 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"); 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)); unsigned short int pos = 0; while (true) { @@ -148,6 +167,10 @@ int __create_sig(char* file) { 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) { file_t fp = fopen(file, "rb"); 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 password[32]; - fputs("Login: ", stdout); int c; - size_t cnt = 0; - while((c=getchar())!=EOF && cnt < 31 && c != '\n') { - user_login[cnt] = c; - cnt ++; - } - fputs("Password: ", stdout); - cnt = 0; - while((c=getchar())!=EOF && cnt < 31 && c != '\n') { - password[cnt] = c; - cnt ++; - } - size_t cnt_save = cnt; - password[cnt] = '\0'; - fputs("Repeat password: ", stdout); - cnt = 0; - while((c=getchar())!=EOF && cnt < 31 && c != '\n') { - if (password[cnt] != c) { + if (__YEFWHD_data_type != VIPRE_API_MODE) { + fputs("Login: ", stdout); + size_t cnt = 0; + while((c=getchar())!=EOF && cnt < 31 && c != '\n') { + user_login[cnt] = c; + cnt ++; + } + fputs("Password: ", stdout); + cnt = 0; + while((c=getchar())!=EOF && cnt < 31 && c != '\n') { + password[cnt] = c; + cnt ++; + } + size_t cnt_save = cnt; + password[cnt] = '\0'; + fputs("Repeat password: ", stdout); + 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"); free(arr); return EXIT_FAILURE; } - cnt ++; - } - if (cnt != cnt_save) { - puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m"); - free(arr); - return EXIT_FAILURE; + } else { + strncpy(user_login, __YEFWHD_api_login, 31); + strncpy(password, __YEFWHD_api_password, 31); + user_login[31] = '\0'; + password[31] = '\0'; } fputs(user_login, 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 password[32]; char correct_password[32]; - fputs("Login: ", stdout); char* res; - res = fgets(user_login, 32, stdin); res = fgets(correct_login, 32, up); - fputs("Password: ", stdout); - res = fgets(password, 32, stdin); 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); + __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)) { puts("\033[1mvipre-cryptor: \033[91mThe password or login is incorrect!\033[0m"); free(arr);