Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
f834dfd
Start cmd/fmt
agievich Jun 12, 2025
c21de99
Start v2.1.9
agievich Jul 24, 2025
84c30e0
Abandon SAFE macro
agievich Jul 24, 2025
a97839b
Minor CMake maintenance (#62)
LecrisUT Jul 28, 2025
fd6abd3
Drop XXX_INSTALL_DIR
agievich Jul 28, 2025
5a1fb50
Refine info.h.in
agievich Jul 28, 2025
9f4d835
Rewrite oidFromDer() to suppress Valgrind warning
agievich Jul 31, 2025
4addd39
Start memSlice()
agievich Aug 10, 2025
2f387e3
Update memSlice()
agievich Aug 24, 2025
8c9ecdb
Start blobSlice()
agievich Aug 25, 2025
bf0042e
Finish blobSlice()
agievich Aug 27, 2025
2cf943d
Rename blobSlice() to blobCreate2()
agievich Aug 28, 2025
4095feb
Fix botpOCRAStepS()
agievich Aug 28, 2025
8f337bc
Fix bugs related to blobCreate() calls
agievich Aug 28, 2025
b838623
Update blobCreate2() calls
agievich Aug 31, 2025
3a211b0
Refactor g12s and dstu
agievich Sep 3, 2025
e88d7a2
Refactor crypto/bign
agievich Sep 4, 2025
90877c7
Refactor crypto/bign96
agievich Sep 5, 2025
6c143b6
Rename ecXXXGroup() to ecGroupXXX()
agievich Sep 5, 2025
dd71df7
Add utilAlign()
agievich Sep 5, 2025
77a8833
Update memSlice()
agievich Sep 5, 2025
9c3cb87
Upgrade stack management in math/pp and math/zz
agievich Sep 12, 2025
cd17839
Upgrade stack management in math/ec2+gf2+pri
agievich Sep 14, 2025
e1443c8
Upgrade stack management in math/qr+zm
agievich Sep 15, 2025
9e55713
Upgrade memory management in math/ecp
agievich Sep 22, 2025
a59184e
Upgrade memory management in cmd
agievich Sep 22, 2025
01e9779
Simplify core/mem avoiding words
agievich Sep 22, 2025
37536b0
Add memSliceNext()
agievich Sep 23, 2025
0101da0
Use memSliceNext()
agievich Sep 23, 2025
6942c60
Split crypto/bake
agievich Sep 24, 2025
df3a0c2
Refactor crypto/bake
agievich Sep 25, 2025
b15c261
Upgrade memory management in crypto/bake
agievich Sep 26, 2025
61edaa9
Upgrade memory management in btok/bauth
agievich Sep 27, 2025
9ab1f32
Update memory management in tests
agievich Sep 28, 2025
2dee682
Fix typos in tests
agievich Sep 29, 2025
7a57e17
Update tests
agievich Sep 29, 2025
3cc4e72
Upgrade memory management in math objects
agievich Sep 29, 2025
f013878
Update belsGenkStart()
agievich Sep 29, 2025
2fbdf62
Simplify crypto/brng
agievich Sep 29, 2025
83cdde7
Fix memory leakage in test/ecp_bench
agievich Sep 30, 2025
e1d9121
Add sanitize=alignment to clang/asan
agievich Sep 30, 2025
b5e53fd
Upgrade memory management in crypto/belt
agievich Oct 1, 2025
1949fe8
Update beltBlockInc
agievich Oct 1, 2025
0c537f8
Fix belt_fmt
agievich Oct 2, 2025
01298a0
Ensure proper alignment when calling beltBlockEncr()
agievich Oct 2, 2025
f8da85a
Process (word*) to ensure alignment
agievich Oct 2, 2025
1e761b3
Rewrite uXXTo()
agievich Oct 3, 2025
0e84a61
Add va_end to memSliceArgs() after Coverity
agievich Oct 3, 2025
01b8487
Update AUTHORS.md
agievich Oct 3, 2025
651ebaa
Improve formatting in crypto/bels
agievich Oct 3, 2025
0267e04
Merge branch 'master' into dev
agievich Oct 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Contributors*
- license issues
- bign/params
- code review
- memory alignment
- Alexander Zhirkevich
- cmd/sig, cmd/rng, cmd/test
- Vladimir Komisarenko
Expand Down
37 changes: 15 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
cmake_minimum_required(VERSION 3.5...3.31)
project(BEE2 C)
project(BEE2
VERSION 2.1.9
LANGUAGES C
)

set(BEE2_VERSION_MAJOR "2")
set(BEE2_VERSION_MINOR "1")
set(BEE2_VERSION_PATCH "8")
set(BEE2_VERSION
"${BEE2_VERSION_MAJOR}.${BEE2_VERSION_MINOR}.${BEE2_VERSION_PATCH}")
include(GNUInstallDirs)

# \remark Set BUILD_PIC even for static libraries if they are linked
# into shared libraries
Expand Down Expand Up @@ -115,17 +114,19 @@ if(CMAKE_COMPILER_IS_CLANG)
-fno-strict-aliasing")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g3")
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_COVERAGE} -O0 -g3 -coverage")
set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -fsanitize=address \
-fno-common -fsanitize=undefined -fno-sanitize-recover -O3 \
-fno-strict-aliasing")
set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -fsanitize=address \
-fno-common -fsanitize=undefined -fno-sanitize-recover -O1 -g3 \
-fno-omit-frame-pointer -fno-optimize-sibling-calls")
set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_ASAN} -fsanitize=address,undefined\
-fno-sanitize=signed-integer-overflow -fno-sanitize=unsigned-integer-overflow\
-fno-sanitize-recover\
-fno-common -O3 -fno-strict-aliasing")
set(CMAKE_C_FLAGS_ASANDBG "${CMAKE_C_FLAGS_ASANDBG} -fsanitize=address,udefined \
-fno-sanitize=signed-integer-overflow -fno-sanitize=unsigned-integer-overflow\
-fno-sanitize-recover\
-fno-common -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
set(CMAKE_C_FLAGS_MEMSAN "${CMAKE_C_FLAGS_MEMSAN} -fsanitize=memory -O3 \
-fno-strict-aliasing")
set(CMAKE_C_FLAGS_MEMSANDBG "${CMAKE_C_FLAGS_MEMSANDBG} -fsanitize=memory \
-O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls \
-fsanitize-memory-track-origins=2")
-fsanitize-memory-track-origins=2\
-O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
set(CMAKE_C_FLAGS_CHECK "${CMAKE_C_FLAGS_CHECK} -Werror -O1 -Wcast-qual")
endif(CMAKE_COMPILER_IS_CLANG)

Expand All @@ -145,14 +146,6 @@ if(BUILD_FAST)
add_definitions(-DSAFE_FAST)
endif()

if(NOT LIB_INSTALL_DIR)
set(LIB_INSTALL_DIR lib)
endif()

if(NOT BIN_INSTALL_DIR)
set(BIN_INSTALL_DIR bin)
endif()

include_directories(include)
include_directories(src)

Expand Down
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ Russia and Ukraine.
mkdir build
cd build
cmake [-DCMAKE_BUILD_TYPE={Release|Debug|Coverage|ASan|ASanDbg|MemSan|MemSanDbg|Check}]\
[-DBUILD_FAST=ON]\
[-DBASH_PLATFORM={BASH_32|BASH_64|BASH_AVX2|BASH_AVX512|BASH_NEON}]\
..
make
Expand All @@ -53,7 +52,6 @@ compiler:
> mkdir build
> cd build
> cmake [-DCMAKE_BUILD_TYPE={Release|Debug|Coverage|ASan|ASanDbg|MemSan|MemSanDbg|Check}]\
> [-DBUILD_FAST=ON]\
> [-DBASH_PLATFORM={BASH_32|BASH_64|BASH_AVX2|BASH_AVX512|BASH_NEON}]\
> -G "MinGW Makefiles"\
> ..
Expand All @@ -69,9 +67,6 @@ Build types (`Release` by default):
* `MemSan`, `MemSanDbg` — [memory sanitizer](http://code.google.com/p/memory-sanitizer/);
* `Check` — strict compile rules.

The `BUILD_FAST` option (`OFF` by default) switches from safe (constant-time)
functions to fast (non-constant-time) ones.

The `BASH_PLATFORM` option (`BASH_64` by default) requests to use a specific
implementation of the STB 34.101.77 algorithms optimized for a given hardware
platform. The request may be rejected if it conflicts with other options.
Expand Down
3 changes: 2 additions & 1 deletion cmd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ add_executable(bee2cmd
cvc/cvc.c
cvr/cvr.c
es/es.c
fmt/fmt.c
kg/kg.c
pwd/pwd.c
sig/sig.c
Expand All @@ -33,7 +34,7 @@ include_directories(include)
target_link_libraries(bee2cmd bee2_static)

install(TARGETS bee2cmd
DESTINATION ${BIN_INSTALL_DIR}
DESTINATION ${CMAKE_INSTALL_BINDIR}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
Expand Down
7 changes: 5 additions & 2 deletions cmd/cmd_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
\brief Command-line interface to Bee2: main
\project bee2/cmd
\created 2022.06.07
\version 2025.06.09
\version 2025.09.22
\copyright The Bee2 authors
\license Licensed under the Apache License, Version 2.0 (see LICENSE.txt).
*******************************************************************************
Expand Down Expand Up @@ -93,6 +93,7 @@ extern err_t cvcInit();
extern err_t cvrInit();
extern err_t sigInit();
extern err_t csrInit();
extern err_t fmtInit();
extern err_t stampInit();
extern err_t esInit();
extern err_t stInit();
Expand All @@ -117,6 +118,8 @@ static err_t cmdInit()
ERR_CALL_CHECK(code);
code = csrInit();
ERR_CALL_CHECK(code);
code = fmtInit();
ERR_CALL_CHECK(code);
code = stampInit();
ERR_CALL_CHECK(code);
code = esInit();
Expand Down Expand Up @@ -200,7 +203,7 @@ int main(int argc, char* argv[])
// обработка команды
for (pos = 0; pos < _count; ++pos)
if (strEq(argv[1], _cmds[pos].name))
return _cmds[pos].fn(argc - 1, argv + 1);
return _cmds[pos].fn(argc - 1, argv + 1);
printf("bee2cmd: %s\n", errMsg(ERR_CMD_NOT_FOUND));
return -1;
}
11 changes: 7 additions & 4 deletions cmd/core/cmd_arg.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
\brief Command-line interface to Bee2: parsing arguments
\project bee2/cmd
\created 2022.06.08
\version 2025.06.10
\version 2025.09.01
\copyright The Bee2 authors
\license Licensed under the Apache License, Version 2.0 (see LICENSE.txt).
*******************************************************************************
Expand Down Expand Up @@ -127,10 +127,13 @@ err_t cmdArgCreate(int* argc, char*** argv, const char* args)
*argc += 1, count += c, size += s;
}
// выделить и разметить память
if (!(state = blobCreate(*argc * sizeof(char*) + size)))
state = blobCreate2(
(size_t)*argc * sizeof(char*),
size,
SIZE_MAX,
argv, &strs);
if (state == 0)
return ERR_OUTOFMEMORY;
*argv = (char**)state;
strs = (char*)(*argv + *argc);
// разобрать аргументы
for (size = 0, pos = 0, count = argWsDec(args); args[count] != '\0';)
{
Expand Down
58 changes: 32 additions & 26 deletions cmd/core/cmd_cvc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
\brief Command-line interface to Bee2: managing CV-certificates
\project bee2/cmd
\created 2022.08.20
\version 2025.06.09
\version 2025.09.22
\copyright The Bee2 authors
\license Licensed under the Apache License, Version 2.0 (see LICENSE.txt).
*******************************************************************************
Expand Down Expand Up @@ -227,14 +227,16 @@ err_t cmdCVCsFind(size_t* offset, const octet* certs, size_t certs_len,
err_t cmdCVCsCheck(const octet* certs, size_t certs_len)
{
err_t code;
void* stack;
btok_cvc_t* cvc;
void* state;
btok_cvc_t* cvc; /* [1] */
// pre
ASSERT(memIsValid(certs, certs_len));
// выделить и разметить память
code = cmdBlobCreate(stack, sizeof(btok_cvc_t));
code = cmdBlobCreate2(state,
sizeof(btok_cvc_t),
SIZE_MAX,
&cvc);
ERR_CALL_CHECK(code);
cvc = (btok_cvc_t*)stack;
// цикл по сертификатам
while (certs_len)
{
Expand All @@ -244,40 +246,42 @@ err_t cmdCVCsCheck(const octet* certs, size_t certs_len)
code = ERR_BAD_CERTRING;
else
code = btokCVCUnwrap(cvc, certs, len, 0, 0);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
// к следующему
certs += len, certs_len -= len;
}
// завершить
cmdBlobClose(stack);
cmdBlobClose(state);
return code;
}

err_t cmdCVCsVal(const octet* certs, size_t certs_len, const octet date[6])
{
err_t code;
void* stack;
size_t len;
btok_cvc_t* cvca;
btok_cvc_t* cvc;
void* state;
btok_cvc_t* cvca; /* [1] */
btok_cvc_t* cvc; /* [1] */
// pre
ASSERT(memIsValid(certs, certs_len));
ASSERT(memIsNullOrValid(date, 6));
// пустая цепочка?
if (!certs_len)
return ERR_OK;
// выделить и разметить память
code = cmdBlobCreate(stack, 2 * sizeof(btok_cvc_t));
code = cmdBlobCreate2(state,
sizeof(btok_cvc_t),
sizeof(btok_cvc_t),
SIZE_MAX,
&cvca, &cvc);
ERR_CALL_CHECK(code);
cvca = (btok_cvc_t*)stack;
cvc = cvca + 1;
// найти и разобрать первый сертификат
len = btokCVCLen(certs, certs_len);
if (len == SIZE_MAX)
code = ERR_BAD_CERT;
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
code = btokCVCUnwrap(cvca, certs, len, 0, 0);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
certs_len -= len, certs += len;
// цикл по остальным сертификатам
while (certs_len)
Expand All @@ -286,34 +290,36 @@ err_t cmdCVCsVal(const octet* certs, size_t certs_len, const octet date[6])
len = btokCVCLen(certs, certs_len);
if (len == SIZE_MAX)
code = ERR_BAD_CERT;
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
// проверить сертификат
if (len == certs_len && date && !memIsZero(date, 6))
code = btokCVCVal2(cvc, certs, len, cvca, date);
else
code = btokCVCVal2(cvc, certs, len, cvca, 0);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
// к следующему сертификату
certs_len -= len, certs += len;
// издатель <- эмитент
memCopy(cvca, cvc, sizeof(btok_cvc_t));
}
// завершить
cmdBlobClose(stack);
cmdBlobClose(state);
return code;
}

err_t cmdCVCsPrint(const octet* certs, size_t certs_len)
{
err_t code;
void* stack;
btok_cvc_t* cvc;
void* state;
btok_cvc_t* cvc; /* [1] */
// pre
ASSERT(memIsValid(certs, certs_len));
// выделить и разметить память
code = cmdBlobCreate(stack, sizeof(btok_cvc_t));
code = cmdBlobCreate2(state,
sizeof(btok_cvc_t),
SIZE_MAX,
&cvc);
ERR_CALL_CHECK(code);
cvc = (btok_cvc_t*)stack;
// цикл по сертификатам
while (certs_len)
{
Expand All @@ -323,20 +329,20 @@ err_t cmdCVCsPrint(const octet* certs, size_t certs_len)
code = ERR_BAD_CERTRING;
else
code = btokCVCUnwrap(cvc, certs, len, 0, 0);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
// печатать
printf(" %s (%u bits, issued by %s, ",
cvc->holder, (unsigned)cvc->pubkey_len * 2, cvc->authority);
code = cmdPrintDate(cvc->from);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
printf("-");
code = cmdPrintDate(cvc->until);
ERR_CALL_HANDLE(code, cmdBlobClose(stack));
ERR_CALL_HANDLE(code, cmdBlobClose(state));
printf(")\n");
// к следующему
certs += len, certs_len -= len;
}
// завершить
cmdBlobClose(stack);
cmdBlobClose(state);
return code;
}
Loading