Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
2c92677
#276 add Additional Authenticated Data
PropzSaladaz Dec 15, 2025
4ba8f41
#276 format
PropzSaladaz Dec 15, 2025
46f5ca8
#276 use const references
PropzSaladaz Dec 15, 2025
6e91e55
#276 update sgx_wallet container to latest
PropzSaladaz Dec 16, 2025
e246c63
#276 improve sxg container wait in tests
PropzSaladaz Dec 16, 2025
ed03e7d
#276 fix sgx_wallet container tor firewall causing container to hang
PropzSaladaz Dec 16, 2025
d70f356
#276 add AAD to JS client side
PropzSaladaz Dec 17, 2025
9d1aea5
#276 fix emscripten tests
PropzSaladaz Dec 17, 2025
4e2670e
#276 fix tests; add AAD to decryption validation methods
PropzSaladaz Dec 17, 2025
5224b2e
#276 format
PropzSaladaz Dec 17, 2025
5519bd9
#276 move to camelCase
PropzSaladaz Dec 18, 2025
c35569c
Merge pull request #277 from skalenetwork/feature/276-additional-auth…
PropzSaladaz Dec 22, 2025
4fe4380
#279 add AAD for TE
PropzSaladaz Dec 23, 2025
026c7bf
#279 format; fix mistypes
PropzSaladaz Dec 24, 2025
f2b1a4f
#279 add more tests for AAD TE
PropzSaladaz Dec 24, 2025
e1559cf
#279 format
PropzSaladaz Dec 24, 2025
9871616
Merge pull request #280 from skalenetwork/feature/279-add-AAD-to-TE
PropzSaladaz Jan 5, 2026
c22667a
add decimal string conversion for G2Point
PropzSaladaz Jan 9, 2026
bc675d0
#278 add seeded encryption
PropzSaladaz Jan 12, 2026
e07346d
#278 add tests for seeded encryption
PropzSaladaz Jan 12, 2026
9ec674e
#278 format
PropzSaladaz Jan 12, 2026
ebfcdd8
#278 remove empty() on array; rename loop variable
PropzSaladaz Jan 12, 2026
9a71c02
#278 refactor AesGcmCipher seed into Seed256 wrapper struct
PropzSaladaz Jan 13, 2026
4cc30fe
Merge pull request #282 from skalenetwork/feature/278-add-seed-for-de…
PropzSaladaz Jan 13, 2026
bc71313
Add threshold encryption support for python
oleksandrSydorenkoJ Jan 15, 2026
af005e3
Fix review changes
oleksandrSydorenkoJ Jan 15, 2026
c731b0e
Fix request changes
oleksandrSydorenkoJ Jan 15, 2026
ec16a8d
Update python/tepython.cpp
oleksandrSydorenkoJ Jan 15, 2026
a70cbcb
Update CMakeLists.txt to handle macOS build
oleksandrSydorenkoJ Jan 16, 2026
469ca34
Merge branch 'add-python-te' of https://github.com/skalenetwork/libBL…
oleksandrSydorenkoJ Jan 16, 2026
761ec10
Explicitly add dependencies for MacOS to CMakeList
oleksandrSydorenkoJ Jan 16, 2026
cc25340
Request for changes corrected
oleksandrSydorenkoJ Jan 16, 2026
9156795
Fix formatting
oleksandrSydorenkoJ Jan 16, 2026
1bca6b9
#281 add restricted mcl build for SGX environment
PropzSaladaz Jan 16, 2026
3f7ae2e
#281 format build script; remove cout print
PropzSaladaz Jan 16, 2026
0b4870e
Merge branch 'develop' into enhancement/281-sgx-compilation-support
PropzSaladaz Jan 16, 2026
cc01c79
#287 update AAD TE validation API
PropzSaladaz Jan 20, 2026
8519ed5
#287 format
PropzSaladaz Jan 20, 2026
50b093d
#287 add unit tests; update verifyBatch call
PropzSaladaz Jan 21, 2026
fde7078
#287 udpate validateDecryptionSharesBatch call docs
PropzSaladaz Jan 21, 2026
d3fdb7c
#287 format
PropzSaladaz Jan 21, 2026
82c4d61
#281 improve build for boost dependencies
PropzSaladaz Jan 21, 2026
665c723
Merge branch 'enhancement/281-sgx-compilation-support' of https://git…
PropzSaladaz Jan 21, 2026
c746b20
#281 fix build script for sgx
PropzSaladaz Jan 22, 2026
cf31ca4
Merge pull request #288 from skalenetwork/enhancement/287-update-AAD-…
PropzSaladaz Jan 23, 2026
a1e06a9
Merge branch 'develop' into enhancement/281-sgx-compilation-support
PropzSaladaz Jan 23, 2026
ff27218
#281 add symb link for jsoncpp
PropzSaladaz Jan 23, 2026
41d62ab
Merge branch 'enhancement/281-sgx-compilation-support' of https://git…
PropzSaladaz Jan 26, 2026
144c337
Merge branch 'develop' into add-python-te
olehnikolaiev Jan 30, 2026
a47ae53
set c++20 for folly dependency
PropzSaladaz Feb 2, 2026
01105cc
publish skale_te_python on pypi
olehnikolaiev Feb 2, 2026
725ba30
refactor init.py]
olehnikolaiev Feb 2, 2026
b386ec9
#281 update build - set MCL_BINT_ASM flag for better performance in SGX
PropzSaladaz Feb 3, 2026
51b8559
#281 remove dummy files
PropzSaladaz Feb 4, 2026
ecee50a
#289 update js module to pass aad
olehnikolaiev Feb 6, 2026
ef043fa
#289 update js tests
olehnikolaiev Feb 6, 2026
72ec4fc
#289 fix typo
olehnikolaiev Feb 6, 2026
269950d
#289 update js tests
olehnikolaiev Feb 6, 2026
097fb27
#289 fix typo
olehnikolaiev Feb 6, 2026
fa9fb45
#289 update decrypt_message tool
olehnikolaiev Feb 6, 2026
cdb1f17
#289 format
olehnikolaiev Feb 6, 2026
afe1fac
#289 update decrypt_message
olehnikolaiev Feb 9, 2026
00f55cf
#289 fix tests
olehnikolaiev Feb 9, 2026
c440b01
#289 format
olehnikolaiev Feb 9, 2026
265a16d
#289 update interface
olehnikolaiev Feb 9, 2026
dbe03b3
#289 fix tests
olehnikolaiev Feb 9, 2026
80e2fb7
#289 format
olehnikolaiev Feb 9, 2026
6a0eabe
Merge pull request #290 from skalenetwork/feature/289-add-aad-js-module
olehnikolaiev Feb 9, 2026
191105f
Merge branch 'develop' into add-python-te
olehnikolaiev Feb 9, 2026
4fa6e0e
format
olehnikolaiev Feb 9, 2026
4365d4d
Merge branch 'develop' into enhancement/281-sgx-compilation-support
PropzSaladaz Feb 9, 2026
7bd4c5f
Merge pull request #286 from skalenetwork/enhancement/281-sgx-compila…
PropzSaladaz Feb 10, 2026
6402175
Merge branch 'develop' into add-python-te
olehnikolaiev Feb 10, 2026
e747bf5
fix build
olehnikolaiev Feb 10, 2026
ae8c2fd
format
olehnikolaiev Feb 10, 2026
cacedd7
format
olehnikolaiev Feb 10, 2026
f662f7a
Merge pull request #285 from skalenetwork/add-python-te
olehnikolaiev Feb 10, 2026
e13f98b
Rename skale_te to t-encrypt
oleksandrSydorenkoJ Feb 13, 2026
309fc70
Merge pull request #293 from skalenetwork/292-rename-skale-te
oleksandrSydorenkoJ Feb 16, 2026
3815b16
bite-ts-37 optimize t-encrypt size
olehnikolaiev Feb 16, 2026
aeb3c64
use MinSizeRel for emscripten build
olehnikolaiev Feb 16, 2026
795d48a
tree-shakable package
olehnikolaiev Feb 16, 2026
2b0b1e7
update version
olehnikolaiev Feb 17, 2026
0f04224
Merge branch 'bite-ts-37/optimize-t-encrypt' of github.com:skalenetwo…
olehnikolaiev Feb 17, 2026
d529f39
Merge pull request #294 from skalenetwork/bite-ts-37/optimize-t-encrypt
olehnikolaiev Feb 17, 2026
3fdf347
fix pypi publishing
olehnikolaiev Feb 17, 2026
0a25c05
fix typo
olehnikolaiev Feb 17, 2026
6c0cbcb
Merge pull request #295 from skalenetwork/fix-pypi-publishing
olehnikolaiev Feb 17, 2026
b25255c
#296 allow skipping validation for TEDecryptionSHare constructor
PropzSaladaz Mar 30, 2026
8405b94
Merge branch 'develop' into feature/296-allow-skipping-validation-TED…
PropzSaladaz Mar 30, 2026
0a16cb4
#296 format
PropzSaladaz Mar 30, 2026
dd55b99
Merge branch 'feature/296-allow-skipping-validation-TEDecryptionShare…
PropzSaladaz Mar 30, 2026
5a90249
#296 format
PropzSaladaz Mar 30, 2026
86c01ca
#296 update doc comments
PropzSaladaz Mar 30, 2026
67db4a7
#296 format
PropzSaladaz Mar 30, 2026
aab2edf
Merge pull request #297 from skalenetwork/feature/296-allow-skipping-…
PropzSaladaz Mar 31, 2026
4b5e7b5
Merge branch 'beta' into develop-to-beta
olehnikolaiev Apr 2, 2026
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
61 changes: 53 additions & 8 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ jobs:
- name: Checkout
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- uses: actions/setup-node@v1
with:
node-version: '18.x'
Expand All @@ -42,7 +47,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y gawk sed shtool \
libffi-dev yasm texinfo libgnutls28-dev gcc-multilib
libffi-dev yasm texinfo libgnutls28-dev gcc-multilib jq
- name: Build dependencies
run: |
export CC=gcc-11
Expand All @@ -59,7 +64,7 @@ jobs:
export TARGET=all
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo

- name: Build
run: |
export CC=gcc-11
Expand All @@ -73,6 +78,7 @@ jobs:
export CC=gcc-11
export CXX=g++-11
export TARGET=all
export CMAKE_BUILD_TYPE=Release
cd deps
./clean.sh
./build.sh WITH_EMSCRIPTEN=1
Expand All @@ -87,11 +93,11 @@ jobs:
cd ../..
mkdir -p build_em && cd build_em
export LIBRARIES_ROOT=../deps/deps_inst/wasm32-emscripten/lib
emcmake cmake -DEMSCRIPTEN=ON -DBUILD_TESTS=OFF -DGMP_LIBRARY="$LIBRARIES_ROOT"/libgmp.a -DCRYPTOPP_LIBRARY="$LIBRARIES_ROOT"/libcrypto.a -DGMPXX_LIBRARY="$LIBRARIES_ROOT"/libgmpxx.a ..
emcmake cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DEMSCRIPTEN=ON -DBUILD_TESTS=OFF -DGMP_LIBRARY="$LIBRARIES_ROOT"/libgmp.a -DCRYPTOPP_LIBRARY="$LIBRARIES_ROOT"/libcrypto.a -DGMPXX_LIBRARY="$LIBRARIES_ROOT"/libgmpxx.a ..
emmake make -j$(nproc)
cd ..
cp build_em/threshold_encryption/encrypt.* node/

- name: Calculate version
run: |
export BRANCH=${GITHUB_REF##*/}
Expand All @@ -106,12 +112,51 @@ jobs:
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

- name: Resolve t-encrypt version and library path
run: |
lib_path="${PWD}/build/threshold_encryption/libt_encrypt_python.so"
echo "T_ENCRYPT_LIB_PATH=${lib_path}" >> "$GITHUB_ENV"

# Calculate Python package version
cd python
BASE_VERSION=$(python3 setup_t_encrypt.py --version)
cd ..

PACKAGE_NAME="t-encrypt"
VERSION=$(bash ./scripts/calculate_version_pypi.sh $PACKAGE_NAME $BASE_VERSION ${{ env.BRANCH }})

echo "PACKAGE_VERSION=${VERSION}" >> "$GITHUB_ENV"

echo "Using lib: ${lib_path}"
echo "Publishing t-encrypt version: ${VERSION}"

- name: Build t-encrypt Python distributions
working-directory: python
env:
PACKAGE_VERSION: ${{ env.PACKAGE_VERSION }}
T_ENCRYPT_LIB_PATH: ${{ env.T_ENCRYPT_LIB_PATH }}
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools wheel twine
CURRENT_VERSION="$(python setup_t_encrypt.py --version)"
sed -i "s/${CURRENT_VERSION}/${PACKAGE_VERSION}/g" setup_t_encrypt.py
python setup_t_encrypt.py sdist bdist_wheel
python -m twine check dist/*

- name: Publish t-encrypt to PyPI
working-directory: python
env:
TWINE_USERNAME: ${{ secrets.PIP_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PIP_PASSWORD }}
run: |
python -m twine upload dist/*

- name: Publish on npm
if: github.ref != 'refs/heads/stable'
run: |
cd node
export PACKAGE_NAME=$(jq -r '.name' package.json)
export JS_LIBRARY_BASE_VERSION="$(npm run --silent version)"
export JS_LIBRARY_BASE_VERSION="$(npm run --silent version)"
export JS_LIBRARY_VERSION=$(bash ./../scripts/calculate_version_npm.sh $PACKAGE_NAME $JS_LIBRARY_BASE_VERSION $BRANCH)
npm version $JS_LIBRARY_VERSION --no-git-tag-version
npm publish --access public --tag ${{ env.BRANCH }}
Expand All @@ -138,7 +183,7 @@ jobs:

- name: Upload bls_glue to Release
uses: actions/upload-release-asset@latest
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
Expand All @@ -148,7 +193,7 @@ jobs:

- name: Upload hash_g1 to Release
uses: actions/upload-release-asset@latest
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
Expand All @@ -158,7 +203,7 @@ jobs:

- name: Upload verify_bls to Release
uses: actions/upload-release-asset@latest
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
Expand Down
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -272,10 +272,10 @@ if(LIBBLS_BUILD_TESTS)
target_compile_options(${name} PRIVATE -Wno-format-overflow)
endif()

target_link_libraries(${name} PRIVATE
bls
${CRYPTOPP_LIBRARY}
boost_program_options
target_link_libraries(${name} PRIVATE
bls
${CRYPTOPP_LIBRARY}
boost_program_options
${extra_libs}
${FOLLY_STATIC_LIBS}
)
Expand Down
18 changes: 12 additions & 6 deletions backends/interface/group/PointSerializer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,19 @@ class PointSerializer {
// ----------------------- String Serializations ----------------------- //

std::string toString( Base base ) const {
if ( base != libBLS::Base::HEXA ) {
throw ThresholdUtils::IncorrectInput(
"Point serialization to string is only supported in HEXA base" );
}

std::string out;
forEachAffineComponent( [&]( const FqElement& c, size_t ) { out += c.toString( base ); } );
if ( base == libBLS::Base::HEXA ) {
// HEXA: concatenate fixed-width (64 char) hex strings
forEachAffineComponent(
[&]( const FqElement& c, size_t ) { out += c.toString( base ); } );
} else {
// DEC: join with colon delimiter (variable length decimal strings)
forEachAffineComponent( [&]( const FqElement& c, size_t i ) {
if ( i > 0 )
out += ":";
out += c.toString( base );
} );
}
return out;
}

Expand Down
58 changes: 37 additions & 21 deletions backends/mcl/group/G2Point.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -195,33 +195,49 @@ G2Point G2Point::fromBytes( const std::vector< uint8_t >& bytes ) {
}

G2Point G2Point::fromString( const std::string& str, Base base ) {
if ( base != Base::HEXA ) {
throw ThresholdUtils::IncorrectInput(
"G2Point is currently only supported to be built from hexadecimal base string" );
}

const size_t elementStringSize = MAX_FIELD_ELEMENT_SIZE_BYTES * 2;

if ( str.size() != STRING_HEXA_CHARS ) {
throw ThresholdUtils::IncorrectInput( "Wrong string size to convert to G2" );
}

algebra::G2Point ret;

ret.value.z.clear();
ret.value.z.a = FqBackendType::one();

try {
trySettingFieldWithString(
ret.value.x.a, str.substr( 0 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.x.b, str.substr( 1 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.y.a, str.substr( 2 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.y.b, str.substr( 3 * elementStringSize, std::string::npos ), base );
if ( base == Base::HEXA ) {
// HEXA: fixed-width 64-char substrings (256 chars total)
const size_t elementStringSize = MAX_FIELD_ELEMENT_SIZE_BYTES * 2;

if ( str.size() != STRING_HEXA_CHARS ) {
throw ThresholdUtils::IncorrectInput( "Wrong string size to convert to G2" );
}

trySettingFieldWithString(
ret.value.x.a, str.substr( 0 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.x.b, str.substr( 1 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.y.a, str.substr( 2 * elementStringSize, elementStringSize ), base );
trySettingFieldWithString(
ret.value.y.b, str.substr( 3 * elementStringSize, std::string::npos ), base );
} else {
// DEC: colon-delimited variable-length decimal strings
std::vector< std::string > parts;
size_t start = 0;
size_t end = 0;
while ( ( end = str.find( ':', start ) ) != std::string::npos ) {
parts.push_back( str.substr( start, end - start ) );
start = end + 1;
}
parts.push_back( str.substr( start ) );

if ( parts.size() != G2_NUM_COMPONENTS_AFFINE ) {
throw ThresholdUtils::IncorrectInput(
"Wrong number of colon-delimited components for G2Point DEC string" );
}

trySettingFieldWithString( ret.value.x.a, parts[0], base );
trySettingFieldWithString( ret.value.x.b, parts[1], base );
trySettingFieldWithString( ret.value.y.a, parts[2], base );
trySettingFieldWithString( ret.value.y.b, parts[3], base );
}
} catch ( const std::exception& e ) {
std::cout << "EXCEPTION: " << e.what() << std::endl;
throw ThresholdUtils::IncorrectInput(
std::string( "Failed to set G2Point components from string: " ) + e.what() );
}
Expand Down
Loading
Loading