### Install GoogleTest on Ubuntu Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/GoogleTest-Installation.md Use apt to install the GoogleTest development package on Ubuntu systems. ```shell sudo apt install libgtest-dev ``` -------------------------------- ### Install GoogleTest on macOS Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/GoogleTest-Installation.md Use Homebrew to install the GoogleTest framework on macOS. ```shell brew install googletest ``` -------------------------------- ### Install OpenSSL on Ubuntu Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/OpenSSL-Installation.md Use this command to install OpenSSL on Ubuntu systems if it's not already present. ```shell apt install openssl ``` -------------------------------- ### Build and Install Protocol Buffers on Linux Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/Protocol-Buffers-Installation.md Configures, builds, and installs the Protocol Buffer runtime and compiler. Ensures the shared library cache is refreshed. ```shell ./configure make -j$(nproc) # $(nproc) ensures it uses all cores for compilation make check sudo make install sudo ldconfig # refresh shared library cache. ``` -------------------------------- ### Install Build Dependencies on Ubuntu/Debian Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/Protocol-Buffers-Installation.md Installs essential build tools required for compiling Protocol Buffers on Ubuntu/Debian-based systems. ```shell sudo apt-get install autoconf automake libtool curl make g++ unzip ``` -------------------------------- ### Build Multi-Party-Sig-Cpp (non-SGX) Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md Clones the repository, updates submodules, configures with CMake, builds, tests, and installs the library for the default platform. Use -DOPENSSL_ROOT_DIR on Mac OS. Enable tests with -DENABLE_TESTS=ON. For Stark curve, use -DTEST_STARK_CURVE=ON. ```shell git clone https://github.com/safeheron/multi-party-sig-cpp.git cd multi-party-sig-cpp git submodule update --recursive --init mkdir build && cd build # Run "cmake .. -DOPENSSL_ROOT_DIR=Your-Root-Directory-of-OPENSSL -DENABLE_TESTS=ON" instead of the command below on Mac OS. # Use cmake .. -DENABLE_TESTS=ON -DTEST_STARK_CURVE=ON for stark curve. cmake .. -DENABLE_TESTS=ON # Add the path to the LD_LIBRARY_PATH environment variable on Mac OS; Ignore it on Linux export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/ make make test sudo make install ``` -------------------------------- ### Install GoogleTest on CentOS/Red Hat Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/GoogleTest-Installation.md Use yum to install the GoogleTest development package on CentOS or Red Hat systems. ```shell yum install gtest ``` -------------------------------- ### Install OpenSSL on macOS with Homebrew Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/OpenSSL-Installation.md Install the latest version of OpenSSL on macOS using Homebrew if your current version is outdated. ```shell brew install openssl ``` -------------------------------- ### Install OpenSSL on CentOS/Red Hat Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/OpenSSL-Installation.md Use this command to install OpenSSL on CentOS or Red Hat systems if it's not already present. ```shell yum install openssl ``` -------------------------------- ### Install Build Dependencies on Mac Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/Protocol-Buffers-Installation.md Installs essential build tools required for compiling Protocol Buffers on macOS using Homebrew. ```shell brew install autoconf automake libtool ``` -------------------------------- ### Build Multi-Party-Sig-Cpp for SGX Platform Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md Builds the library specifically for the Intel SGX trusted computing platform. Requires ssgx and safeheron-crypto-suites-cpp to be pre-built and installed for SGX. ```shell mkdir build-sgx && cd build-sgx cmake .. -DPLATFORM=SGX -DCMAKE_INSTALL_PREFIX=/opt/safeheron/ssgx make sudo make install ``` -------------------------------- ### Clone and Prepare Protocol Buffers Source Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/Protocol-Buffers-Installation.md Clones the Protocol Buffers repository, checks out a specific version, initializes submodules, and generates the configure script. ```shell git clone https://github.com/protocolbuffers/protobuf.git cd protobuf git checkout v3.14.0 git submodule update --init --recursive ./autogen.sh ``` -------------------------------- ### Configure Dependencies for Non-SGX Platform Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/src/CMakeLists.txt Finds and links necessary libraries for the project when not building for the SGX platform. This includes Protobuf, OpenSSL, and custom SafeheronCryptoSuites. ```cmake if (NOT PLATFORM STREQUAL "SGX") find_package(PkgConfig REQUIRED) pkg_search_module(PROTOBUF REQUIRED protobuf) # depend on pkg-config, this looks for opencv.pc file #set(OPENSSL_USE_STATIC_LIBS TRUE) find_package(OpenSSL REQUIRED) find_package(SafeheronCryptoSuites REQUIRED) target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE /usr/local/lib) target_link_libraries(${CMAKE_PROJECT_NAME} ${PROTOBUF_LIBRARIES} OpenSSL::Crypto -ldl SafeheronCryptoSuites ) endif() ``` -------------------------------- ### Link Multi-Party-Sig-Cpp Library with CMake Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md Demonstrates how to find and link the MultiPartySig library, Protocol Buffers, and OpenSSL within a CMake project. Sets C++ standard and build type. ```cmake project(XXXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_BUILD_TYPE "Release") find_package(PkgConfig REQUIRED) pkg_search_module(PROTOBUF REQUIRED protobuf) # this looks for *.pc file #set(OPENSSL_USE_STATIC_LIBS TRUE) find_package(OpenSSL REQUIRED) find_package(MultiPartySig REQUIRED) add_executable(${PROJECT_NAME} XXXX.cpp) target_include_directories(${PROJECT_NAME} PUBLIC ${MultiPartySig_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS} ) target_link_libraries(${PROJECT_NAME} PUBLIC MultiPartySig OpenSSL::Crypto ${PROTOBUF_LINK_LIBRARIES} pthread ) ``` -------------------------------- ### Key Generation Parameters Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md These parameters are essential for the key generation process in the multi-party signature scheme. They include prime factors, their squares, and related modular arithmetic values. ```json { "p": "EF7CBAC70A9A16E76DEB176BDE0EA0A4F00635ED9F8154105A106CDE36740AE4A55DD6E06A3B4FFACA38AF12A5C931B72A766A362F9473DAD112553DADD9F3F0A8B4A8AE96E9D93010B4BE335DC451F08D7ECB9A3634779A5DFBD1A9C8A4F237BB795D82770D31BC030047DEE6906BB98938B5BC4A4829A9BD0FF2D943607F8B", "q": "C87CD2891D53121046C32612E4E774CC50B82B49653B3521004CDC71135514CAE9148EF8CA6CAFCA3EF474FCA1F4BED99273291268E2345FD64DA22AA86E4EDD1F94215DF8877F50C367CFB0A99C481B75B5B7EE6E7EF7EDCD7D87EF7B33ED51965EC0D653568B4DEFB5B6C4D278D85A518954719A9E4F996423480B9FCFC033", "pSqr": "E00A21851EE3D233B4B7BF8A3FB8CB48A4BEB2BD66855D10F4F9CDAFEB581B717F71EA80DD2B811AE646D51FA21270F0D0AC5CF66DC4BB024496D87C9914F67877789E50EC3F97B7CA902ED99DB37A57CB91BC040806F1AF68C4F23125806506A165DB4898BB258DE36D97516CBE1356DAEF3A7DE03BF8CB09859F1B04016BE6D82CA2CCBB9CE6FF6151C5A3FDDC94506F3ECB5254249116E486D4A1C6E961A3478F171C9C92845E45DD91CEFF60EEA19ACE27A7D90A9F4B0508D45E1CC0CDC974FE66F7B8FCB25CDEAF0A348770E09A9166FD1C03E3FACCC83DC70FF3A1323D449AC4C105517EB4F4BAE921EA04947A78885A2F21C4C8EDECC0ACC8A9CB3579", "qSqr": "9D0345D2DFCB723F9E3D6F1AB7298AA474D3C3D7B52BA2F693EA0CCD99BC02EC2DC161BE9598E47227A90395A6EFD3C5896BF6B6BF1C5715DB0DFC7737BFABB5B8D172E8250FB3E62DE978DB3461F3522C5D52699C6824A284F5A38B08FBC5BF611D1429880F0A786E4C2A493A728493994DA1E1F168F91605596F3A0FDB0A99ED94282807E7019FC46DEBDBF9A947E6928B5BDE8EB02562A073C00F814E21915388AA20467D42BCE3F476A7FDD508CAE9D2DD1242C9A3C11D430F3A58BAD2AEB1B8C18B8188A2C0E0C96BE14D302D286E8C6FD3BFB277E594FDC1457F2EBBB3C4A94E9A8E46BE29B1EB0C31BACB08ECF28D3C61B635C25861ACEDB9BCC68A29", "pMinus1": "EF7CBAC70A9A16E76DEB176BDE0EA0A4F00635ED9F8154105A106CDE36740AE4A55DD6E06A3B4FFACA38AF12A5C931B72A766A362F9473DAD112553DADD9F3F0A8B4A8AE96E9D93010B4BE335DC451F08D7ECB9A3634779A5DFBD1A9C8A4F237BB795D82770D31BC030047DEE6906BB98938B5BC4A4829A9BD0FF2D943607F8A", "qMinus1": "C87CD2891D53121046C32612E4E774CC50B82B49653B3521004CDC71135514CAE9148EF8CA6CAFCA3EF474FCA1F4BED99273291268E2345FD64DA22AA86E4EDD1F94215DF8877F50C367CFB0A99C481B75B5B7EE6E7EF7EDCD7D87EF7B33ED51965EC0D653568B4DEFB5B6C4D278D85A518954719A9E4F996423480B9FCFC032", "hp": "D64879AA27F6732BD16282560B079B26EFA03A20AD971462EBB46C40FB001856687DE25A4D0293376864B9E5ADC353189CEF0656D9BED7936CE590EB2DC12D579DF52AAABEF96446B2F34E070F9369CF0139507DAAB724B51E3C20A03A5B364410F6657AB7AC473DEF38F3238122CCB0A85E654D74B1F2D5433CFEEE07E88532", "hq": "1519871F22A516442843B1C4AEA009E57162C115F32A09B15DEE50B44C8EBF7EA238E20DE7A3D1F4947C20AA8A93B8E5B66B3A5ACCA1AC98C4A0D877E513498D0437AD5D9A665B97BE5EEF1E7505D9F75DBDAF3CC516CFA7819A11FA6079799887542033633CAAEFCEE37F458BB498BEF1B5339BAF91998B8B1359695217B66B3A5ACCA1AC98C4A0D877E513498D0437AD5D9A665B97BE5EEF1E7505D9F75DBDAF3CC516CFA7819A11FA6079799887542033633CAAEFCEE37F458BB498BEF1B5339BAF91998B8B1359695217B66B", "qInvP": "1934411CE2A3A3BB9C889515D307057E0065FBCCF1EA3FAD6E5C009D3B73F28E3CDFF4861D38BCC361D3F52CF805DE9E8D8763DF55D59C47642CC4528018C6990ABF7E03D7F074E95DC1702C4E30E8218C457B1C8B7D52E53FBFB1098E49BBF3AA82F807BF60EA7E13C754BB656D9F08E0DA506ED59636D479D2F3EB3B77FA59", "pInvQ": "B3634B69FAADFBCC1E7F744E36476AE6DF556A3372112B6FA25E8BBCC6C6554C46DBACEAE2C8DDD5AA785452176105F3DC07EEB79C4087C711ACC9B2C35B05501B5C74005E2123B90508E09234966E2417F808B1A96828464BE375F51ABA73B90F0AA0A2F019E05E20D2377F46C43F9B5FD420D5EB0CB60DD90FEEA24DB809C5" } ``` -------------------------------- ### Build Multi-Party-Sig-Cpp with Disabled Protocols Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md Configures the build to exclude specific MPC protocols using CMake macros like -DNO_MPC_GG18=ON. Use -DOPENSSL_ROOT_DIR on Mac OS. ```shell # Run "cmake .. -DOPENSSL_ROOT_DIR=Your-Root-Directory-of-OPENSSL -DENABLE_TESTS=ON -DNO_MPC_GG18=ON" instead of the command below on Mac OS. cmake .. -DENABLE_TESTS=ON -DNO_MPC_GG18=ON ``` -------------------------------- ### Minimal Key Generation Output (Base64) Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md This is the secret share output in base64 format after the minimal key generation procedure in the CMP protocol. It contains cryptographic material for each signer. ```c++ "EAMYAyLkAQoKY29fc2lnbmVyMRICMDEaQDRGRDA5RjJBRTYzQkZCOTk1QUJFMUJBOTE2M0Q4MzYyM0JCRTkxNjI5RDlCRTAyMDRBNThBNTE4MTExNDFFODAijwEKQDFEQ0QxMUM1RDkwOTlCNzA3MDBDRkNDRkM2REFGNDgyMzk2NEU2NzcyQTlBOThENDQzRTlBRDc2MkRBQTQ4M0QSQDI5QkFDMkExOTYxQjFBNkE0ODYzQjdGMTU1RkZCMzlBRkFFMTI3QzJDRkE5OTg5RDAyNURCNEI2QTZDNDZGQUUaCXNlY3AyNTZrMSqiAQoKY29fc2lnbmVyMhICMDIijwEKQERFMTNFOTJENTgyQUQ2MzVGNDVFQTlENEFDNDVDOEJCQTU4OTE2NkY2RTZGRUIwMkEyNjQ0N0VFRUMyRUIwM0ESQDY5RkZFNzc3N0QyOEUyOEE0MjI5REQzRUUwRUE3RDI0OUNBRTg1NkQ4QjVEMjU4NTMzQ0ZENTAxOTA2OTc4QTMaCXNlY3AyNTZrMSqiAQoKY29fc2lnbmVyMxICMDMijwEKQDA5RTA1QjM4RTkzOUEzODk0REJEMEQzN0IxREM5MUJERTdDQTM1MDY0OTY1NTgwRTY2OTg5NDU2NEJFNDU0OEYSQEVBQzlFNkM0NjAyRDY1OEVDMUZDMDhDQ0EyNEJDRUJBRTAxMDdCNEE1NkFFNDg5NEQ0MTMwQ0FCQkZFMEE4MjQaCXNlY3AyNTZrMTKPAQpAREZFQTI2QTBCMTM5OERGNTJEODAyOTEzREIxMkMxRDA2OTJGMDUwMDQ3RTdCM0JDQTJEMzREQ0ZDMzY2OUYxNBJAQjI3RjI2QTBDMzhFOEU5QjA0QjJEN0U2RDYwMkQ0QzBCM0M1RENFRkNCQUE1MEFCRTdDRkIwMTkxQURDMkJGRBoJc2VjcDI1Nmsx" ``` -------------------------------- ### Set LD_LIBRARY_PATH for Compilation on Mac Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/Protocol-Buffers-Installation.md Adds the Protocol Buffers library path to the LD_LIBRARY_PATH environment variable, which is necessary for compilation on macOS. ```shell export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/ ``` -------------------------------- ### Auxiliary Info and Key Refresh Protocol Output Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md The secret share in base64 format obtained after the MPC procedure. This share is used as input for the 'Sign' protocol. ```c++ "EAIYAyKFEwoKY29fc2lnbmVyMRICMDEaQEQ0MjdEOUZGRTNBOTQ4RUJBNUFFMkVENUZCQ0QzRkFERjBDMzlEODM3N0Y0REExMThFNUQzNDlEMDcwQ0JDQzUijwEKQDk2M0VDNzkxRjhBQTJFMTlEQjRCMDMyQThBNkUzNTgxQ0E3NUEyRTA1NTY4MzVFMUM1QjJEMjNEOTcxM0NEOUMSQEIzNDdFNDI0NzFBODFCMDY3QzNCRkE3OENCRkUyNzZGN0FFMzgxQURCNzQyNzY5RTFFQTQxODE4RUU5RDgzQTQaCXNlY3AyNTZrMSqPAQpAMzUyOTVGQjFCNERDM0ZCRkEwQzVGQURFRTM3Q0U4ODcwNkIwMDlDQTRDNDRDMjY5MTM5QTZGREYwQUEzNTE5QxJANEExOTVBMkMxREZENUUzQ0YwMjM4RjZERkE5RTBFQUU4ODA5ODYwOEQzN0I1OUJCMTE4MTE5ODA3OEJBRjFCOBoJc2VjcDI1NmsxUoAEQ0M0MTQzNzExRUI5RDQ3MDNFMTQ5MzJDMDRBNkZBRDAzQTFENEZFODM2NTcwNTgwNTE5MkVDOUExNUEwQjE3RDU1OUEwOUQ0RUVDMDE0MDBENThGRkQyMzJFNzA5OTM4MTIwOThCQzlDNjc4NEI3MEJDQTA3MTk5Q0JDQTAxODRFOEY0REY0Mzk5RDNDNTRENTdEODNFMDk1N0FEOEQxRDUxNTlCQ0IxOTdERkYzNDM4QzBDNjk4NTIyNUYwQjM2MTUwMEI5RENDQTMxMUM3NjAyNEIwOEY1QjlDQTk0MzE2NEVDQkMzOTFDMDQzQzU3NEUwMTFGODlGNEFCNjI1RkI4MURBMkQ3NkZGMEZEN0ZEOTFGMDc2M0Q4OUZERDEyNUQxQjM0RDA1ODQ0M0NEMTk3QTU0ODg0MUE4RTJFMzYxNzQzOTYzQzg4QzNEQ0YyM0JBODlGNzFFNTY4QkRGOUM1RkJGNkQ5Njk1RkI0QjZEMjNFQzNEN0FFOUY2QkE2ODdCNDY3QzBERDNERTEwMTYxODBDQjIzNzFBMENBNkU0OTI3QkEwMzRBMTI0MDY4RTRFNzUwODAwQkVEQTAxREM4QTk0RjM1ODZEN0UzNDUxNzZCMEQ1QjE4RTY1RjdFQkM3NTY5MTAwRjc2REI5QzlBNUI3MkUzN0MwNEE3MDFagAQ0MTEwRkMyN0I3MkIwRkIyODE4REQxRUU4RDZENkQxOTY2MkIyOUY3OUI4MTQ2Q0YxMzkyOEJFNzJEOUE1QjNGMTU5MDc4RkFEMTNFN0YzNjQ5QThGRkEyOTQ0NkFENzI1RDBDNzE5MTQ0MjY0OTJGRjA2ODcxMkQ3RkYxRUEyNTVBMzE0Q0RBMDc4MUUyMjM2MjYwRTk4MTBGQzBFOTVCQUE3QzM3QzAwNTNGNEQxRUZDMEE0MkIzQ0FBOTI2MkFEMzU3OTRBQUM1Q0RGRDU2RTIwNjlBMjI2NTg4ODJCMzNGRDBDODE4MUQyNUEyNEMyNDU1ODYzNTQyODNEQUI3NjBGMzkxMEJENDAwRjZBQzE0NEQ4NUJFNTgyODczN0Q2QTBCRUNDMTNENDZERjUzM0IyQUUwRDE4M0Y2QTJCMTg3NUUyRUEyNERBQkJCQkExOTQ4M0U1NjMwNkE3QzJEMTBCNTVFRkJDN0YyQTFBMUVDRjNBREVCNDkxMDYzMkU4NkFENjA2NDBBRDM3QTYxN0E3MzEyQUQ2RUZFOTk0NjAwQjM0MzREODlDRjFBNTQ1MzkyMjFEOUQxNzczMTU5QUI5N0Y0REJEMjdCMUM4MTg0RTIyRjA0NEMxQkU5RTI2RDNCMTJGMDc1REZDQ0UzMjQ1OUU3OEVBQjJFODE1MmKABDk3MTZDOUU4QUEwNDUyREQ2NkE3RDc1Mjc5MDEwODVBMDMwODk4Qzg3OEM1RENDQ0UxNDk4MDlGRjk3MjVBODFENEQxRjIxMjJCMTBCNjk0QjU4M0RGMjBGNzgwRDIzNDUzMTlDRUQzNzZERTdENDQwRDNFNEVFODhEQzIzRDU4QTVDMjhEOTg2QTY5MjkyMzQzQTE2QjhENDBDNDgxNDI5RDQ3QkI4QkQ4MEVDMDY0OTVCQzY5QjhCMTdEMjFFRTA5NDg2OTFGOTA2N0ZDMkQ3NjZGRDgwRUI1MTUzM0U4NkUwQ0Q4OTgzRkJDMkE1QzhBRERDNTYyQTY4Mzg5QTU3MUJDMDBFOURDOUM3NzhFOEIwRkREMDg5NzI2MjU1M0MyRTM3MUQwRjRCMkI1QzUxQ0U3RkM4OTRFNEUzQjk0QzkzNzdENEI5OEFBQjA5QzhBRjhDNDcyMzM1REIxQkI5MTVBNTUwN0UzQ0JDQ0UxN0MzQkRGNDIyRTY4QzJGRDE0OTgzOTg0OEYwQjJCREFGNjQ2ODYzQkM3MUFCRUMwMjhFNTZCQkMwODUxOUYyQ0JCQzQ4NzU1NUEzNzE0NzFBNTRFMTcwREUwMTNDRDkyQzZEQkVDNERCN0VCNTc4MjRBNENEM0Q3NjYyMUJDREIwQzhCMDg3N0YwMjVDQzIyaoACREYxQzFDN0ZFNTU1NTA3QkM1MTQ0MTNENzhBRkFDMTIxNEM4NkZCMDM5NTY2NEVGQkMyRTQ0REQxMUVBMzg5Mjg3NzJGMjRENzkyRkQxMEIxMjY0NDFFRkQ1RkQxQUIwQUQwRDdGMTNBQzgwNkRGQzZBNEYzNDJGMTNCMDIxOTI1MUQwRDRBRDdBRDQzQUFDMDU1NTU4NjU4N0VFNTcxODZGMUM0MzYzODNCMjBDMkZFODUxN0Y1RTQ5NDQ4QjJFMDJFQUNBMTlBNTVDQjRGRTI1MDc5OUU5QUQxREEyQkZERThEMzJGQkUzNjEwMDM0REZDOTQxQ0E5NDg5ODUyQnKAAkVBNUQ5N0FBMjNDMTI0M0U1NzdGNjEwN0VGQUREMTAxMzc3QzJFNTJFOUY4OEIzRTI4MzQ0RkU4NEYwOTg1NjI2NDZCNTgxMjMxMDNDNUI1NkEwMkNCNDA2N0ZDNjNFMzcxRkIyMzVFMTk0Qzg0MzdEMkQ5MzU5RDhFQzUwMjVEODI5NzBBNDA2MzAwNEJDMjMxM0NDMzNERUFCNDk4OUY4N0YxMkYyMUE2REZDMjEwNzMzNUJEQzVFMzg1NkIzNDU4OTQ2RTM1NDk5QjA0RDkzNzhGM0ZFNjJCQjY5M0EyREJERjYyNTYxREIwOEExRTY0NDcxNkIzNzM1Mzg2ODMqvQ4KCmNvX3NpZ25lcjISAjAyIo8BCkAxMDVCQzI3QzU0MDIzQTUxNDNDRDk2QUUxMUU0MURCNjhCODMwMjRCOTVGOEUzQTlGRjhBMTVCQ0U1QzU0N0RDEkAwMjBDMzFDM0E2RkI4NTlDMzk5QjIxRTMyMjBDNjM4Q0M1NjYxOEUxNTM5MURBMjk4NjE5NDc5Q0QzRkU3OTY2GglzZWNwMjU2azEqjwEKQDE3NEI3QTM2OEY5MzlBOTkxQUI4OUUxMzQzQUNFNDFBNTNCMzM2QjcyMDlGQjg3NERGOThBNDlFNzYwRDlDMTASQERDMDEyNjM2N0Y5RjU1RDdERjExRUY2NTI0RDM0Qzg3QkNCNjU5NzZBREEyOENFREFBMDBBNERDNTIzNTQwNTAaCXNlY3AyNTZrMVKABENGNDlEODdCNEFDMEE2QzU0MzE4QjY5QUZBQ0EwM0I3QkVBNjlBRUQzRDE3MDlCODE0RUI0Qjg0NzY3OUJBQzJDRjNDRENENDc4NkU5M0Y4MzE3MDcxQjBDQzk0RTZERjQ1MDQ5RDZENzFGRTgzQzk2NkZDQjQ1RjQ4NDFCQjc4QzBCNDY5NjA5M0ZGRERCMDY4OUE2OEVGODdGQTg5MDI2MkMwMkJEMUQ4M0I3RTEwQjlFOTVDQkJDQ0UzNkYyOTM3QTFDOUNBN0Y2OTlEMUJGQUZCNDYxNDMxNURDQjEwMDNCNDc1MDIzRTM4NzdCRjU2MTIwMjBGQ0RERjQ4Qjg5NTA1NEI3RkE4MzdBNTVGQTU0QkQ0NTVGMkQ3MDg1MEY5MzU3RTQ0RjAwRTMzOUU1NTBDNTY5OERGMTlBNjdGODIwNUY3QUYyODE0ODY0MjA0MTE5QUE3MTk5QzgxMjNCMUY2OTc4QjI1NEI3ODQ4N0VGMzA3MTBGNzdBRkU4QTQxQjY5NzZGRDQzNDBCQTE4NDUwQzYzRUVGQjIyNjNDODM1RDdFMjVCMzg1RDI0RjI1NUY5QTNENUU4NDJEQjlBRUU0QzQzREFFNTExQUY0QjBDQkE4OTI1RUNCMDhFQzUwRTJCRkY5MUYyRkYxRkIyQkJEMTA0QTAzQzU3RkY5WoAENjAzMTZCMDNCMDRFOTA5QkM3NjU2MjVGODk5NDkwQTU1RkEyNDE1NUYxMjFBMjE4OURFODlBRDVBNjFBMDNGOTNDQ0RDQUFENDIyNDExNjJFNjVEQUM5RDcxRTU0OUQxMzUzMDkxRDNGNzQxNzIwNjNBNkQ0OTIwQzU5M0E5MjQ3MjU1OEEzN0 ``` -------------------------------- ### Include Project Subdirectories Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/src/CMakeLists.txt Adds subdirectories to the CMake build. These likely contain modules for multi-party cryptographic operations. ```cmake add_subdirectory(multi-party-sig/mpc-flow) ``` ```cmake add_subdirectory(multi-party-sig/multi-party-ecdsa) ``` ```cmake add_subdirectory(multi-party-sig/two-party-ecdsa) ``` -------------------------------- ### Minimal Key Generation Output (JSON) Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md This is the secret share output in JSON format after the minimal key generation procedure in the CMP protocol. It details the threshold, number of parties, and cryptographic parameters for each signer. ```json { "threshold": 3, "nParties": 3, "localParty": { "partyId": "co_signer1", "index": "01", "x": "4FD09F2AE63BFB995ABE1BA9163D83623BBE91629D9BE0204A58A51811141E80", "gX": { "x": "1DCD11C5D9099B70700CFCCFC6DAF4823964E6772A9A98D443E9AD762DAA483D", "y": "29BAC2A1961B1A6A4863B7F155FFB39AFAE127C2CFA9989D025DB4B6A6C46FAE", "curve": "secp256k1" } }, "remoteParties": [ { "partyId": "co_signer2", "index": "02", "gX": { "x": "DE13E92D582AD635F45EA9D4AC45C8BBA589166F6E6FEB02A26447EEEC2EB03A", "y": "69FFE7777D28E28A4229DD3EE0EA7D249CAE856D8B5D258533CFD501906978A3", "curve": "secp256k1" } }, { "partyId": "co_signer3", "index": "03", "gX": { "x": "09E05B38E939A3894DBD0D37B1DC91BDE7CA35064965580E669894564BE4548F", "y": "EAC9E6C4602D658EC1FC08CCA24BCEBAE0107B4A56AE4894D4130CABBFE0A824", "curve": "secp256k1" } } ], "gX": { "x": "DFEA26A0B1398DF52D802913DB12C1D0692F050047E7B3BCA2D34DCFC3669F14", "y": "B27F26A0C38E8E9B04B2D7E6D602D4C0B3C5DCEFCBAA50ABE7CFB0191ADC2BFD", "curve": "secp256k1" } } ``` -------------------------------- ### P1's Secret Share in Base64 Format Source: https://github.com/safeheron/multi-party-sig-cpp/blob/main/README.md This snippet shows the base64 encoded secret share obtained by P1 at the end of the MPC Key Generation procedure. Ensure correct decoding for usage. ```c++ "CkBFNTE1QkU0RTdDMjU3RUQ2MTM1MjdENDIxQUM5QzRFNEZGNzY4MjFBRDAwNUE1NDA5RTczRjY2QzkxMjU4OEQxEo8BCkA0QkMxODY4QTZFOTUzMUVGODE5OURDNTk3NEFEN0IwQ0QzMUEwNzIyOUJCNUEyNTc5RTFEMkQ0QkZCNTIwQ0VFEkAwQTA2Njg5OEVBMDkwMDUyMjQwNDRDNDlBQUYyNDAzODBEQUVCQjU4QjI5NDlGODRDOTIzOUEyMjlEMzBBOEQ5GglzZWNwMjU2azEapyQKgARCQjhFMzc0QThGMTc5NzNFMTMxNTNDQTA1MEEwN0FFNzg2QTUyODA4MEVGMkNCMEU1MDdGRDkxRDFDRDM0MDQxOUYwRkMyREExNTQ0OTIxODM3NDIwRTU0QzEwMDU0QzIwREQ0NUJGQ0NERDA5NERBQzg5QkM1QUFGN0Y4RUVEMkQyOEMwODJEMjQ4QTQ4N0E4MjA0NjUzOEQ4MUFGQ0ZGRUVERTI1NjJCMUYwREE1N0JDODUyMTUyMzczQzEzM0IxOTZEMThFOThGM0Q2RkM5M0U0RUMxNERCQzI3NENCMEVGNkExNEUwQjdEOGQzMEIzQTo3OTYxMUIzMThEMENEMDIyN0ExQzRBRjhBNEFBRUY3RDlCRkYwQzZENTJDRTA2REJBQTQyNUNDMDM2ODU5MjdCMDc5QjI1NTc0MUUyMzIzQjQ0QUNBMDVERTdEOTg1Mjc1NjdFRTgzN0QxNDM5NDhCRUFEMDNFQ0Q0OENDNUNBODA3MzZBMkQwNzdGQjIxOTAwMEYzMUNDQUM4MkI0NENCRDYwMDkxODQwMEVGNUUwRDg3MkQ2MDFBNTlBOTA2MzQwNzFGQkIwNjUwNkNGN0FGNjc2Q0FCRTVDNDQwQ0RDQURBQThCOTVFNzkzNjQzRjg5MDg5QTBGMzMzQTdBNzM5MkE5MTYyMzVGMTY2OEY0GoAEOUQwMzQ1RDJERkNCNzIzRjlFM0Q2RjFBQjcyOThBQTQ3NEQzQzNEN0I1MkJBMkY2OTNFQTBDQ0Q5OUJDMDJFQzJEQzE2MUJFOTU5OEU0NzIyN0E5MDM5NUE2RUZEM0M1ODk2QkY2QjZCRjFDNTcxNURCMERGQzc3MzdCRkFCQjVCOEQxNzJFODI1MEZCM0U2MkRFOTc4REIzNDYxRjM1MjJDNUQ1MjY5OUM2ODI0QTI4NEY1QTM4QjA4RkJDNUJGNjExRDE0Mjk4ODBGMEE3ODZFNEMyQTQ5M0E3Mjg0OTM5OTREQTFFMUYxNjhGOTE2MDU1OTZGM0EwRkRCMEE5OUVEOTQyODI4MDdFNzAxOUZDNDZERUJEQkY5QTk0N0U2OTI4QjVCREU4RUIwMjU2MkEwNzNDMDBGODE0RTIxOTE1Mzg4QUEyMDQ2N0Q0MkJDRTNGNDc2QTdGREQ1MDhDQUU5RDJERDEyNDJDOUEzQzExRDQzMEYzQTU4QkFEMkFFQjFCOEMxOEI4MTg4QTJDMEUwQzk2QkUxNEQzMDJEMjg2RThDNkZEM0JGQjI3N0U1OTRGREMxNDU3RjJFQkJCM0M0QTk0RTlBOEU0NkJFMjlCMUVCMEMzMUJBQ0IwOEVDRjI4RDNDNjFCNjM1QzI1ODYxQUNFREI5QkNDNjhBMjlCgAJFRjdDQkFDNzBBOUExNkU3NkRFQjE3NkJERTBFQTBBNEYwMDYzNUVEOUY4MTU0MTA1QTEwNkNERTM2NzQwQUU0QTU1REQ2RTA2QTNCNEZGQUNBMzhBRjEyQTVDOTMxQjcyQTc2NkEzNjJGOTQ3M0RBRDExMjU1M0RBREQ5RjNGMEE4QjRBOEFFOTZFOUQ5MzAxMEI0QkUzMzVEQzQ1MUYwOEQ3RUNCOUEzNjM0Nzc5QTVERkJEMUE5QzhBNEYyMzdCQjc5NUQ4Mjc3MEQzMUJDMDMwMDQ3REVFNjkwNkJCOTg5MzhCNUJDNEE0ODI5QTlCRDBGRjJEOTQzNjA3RjhBSoACQzg3Q0QyODkxRDUzMTIxMD ```