Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cryptoconditions (RIPD-1139) #2170

Closed
wants to merge 15 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 19 additions & 11 deletions Builds/CMake/CMakeFuncs.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -517,20 +517,28 @@ endmacro()

macro(setup_build_boilerplate)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commit message is marked fold, but please don't lose the instructions for the fuzzer when this is squashed.

if (NOT WIN32 AND san)
add_compile_options(-fsanitize=${san} -fno-omit-frame-pointer)
STRING(REPLACE ";" "," comma_san "${san}")
add_compile_options(-fsanitize=${comma_san} -fno-omit-frame-pointer)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we can't spec to pass a comma on the command line instead of the semicolon?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. There are places where we want to treat ${san} like a list and iterate through its individual values - so we need a semi-colon. There are other places where we need to separate them with a comma because that's how the compiler wants them. So if we passed them with a comma on the command line we'd have to replace that comma with a semi-colon in other places.


append_flags(CMAKE_EXE_LINKER_FLAGS
-fsanitize=${san})
-fsanitize=${comma_san})

string(TOLOWER ${san} ci_san)
if (${ci_san} STREQUAL address)
set(SANITIZER_LIBRARIES asan)
add_definitions(-DSANITIZER=ASAN)
endif()
if (${ci_san} STREQUAL thread)
set(SANITIZER_LIBRARIES tsan)
add_definitions(-DSANITIZER=TSAN)
endif()
foreach(cur_san ${san})
string(TOLOWER ${cur_san} ci_san)
if (${ci_san} STREQUAL address)
# set(SANITIZER_LIBRARIES asan)
add_definitions(-DSANITIZER=ASAN)
endif()
if (${ci_san} STREQUAL thread)
# set(SANITIZER_LIBRARIES tsan)
add_definitions(-DSANITIZER=TSAN)
endif()
if (${ci_san} STREQUAL fuzzer)
add_compile_options(-fsanitize-coverage=trace-pc-guard)
append_flags(CMAKE_EXE_LINKER_FLAGS
-fsanitize-coverage=trace-pc-guard)
endif()
endforeach()
endif()

if (perf)
Expand Down
82 changes: 81 additions & 1 deletion Builds/VisualStudio2015/RippleD.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1847,6 +1847,28 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\Der.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\DerCoder.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerCoder.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerPrimitiveTraits.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\DerTraits.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerTraits.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\Ed25519.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\Ed25519.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\error.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
Expand All @@ -1857,9 +1879,31 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple\conditions\impl\PrefixSha256.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\PrefixSha256.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\PreimageSha256.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\PreimageSha256.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\impl\utils.h">
<ClCompile Include="..\..\src\ripple\conditions\impl\RsaSha256.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\RsaSha256.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\ThresholdSha256.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\ThresholdSha256.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\Types.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\consensus\Consensus.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
Expand Down Expand Up @@ -4471,6 +4515,42 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\test\conditions\ConditionsTestBase.h">
</ClInclude>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_ed.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_json.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_prefix.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_preim.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_rsa.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_thresh.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\DerChoice.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\test\conditions\DerChoice.h">
</ClInclude>
<ClCompile Include="..\..\src\test\conditions\Der_test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\PreimageSha256_test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
Expand Down
77 changes: 76 additions & 1 deletion Builds/VisualStudio2015/RippleD.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -2490,6 +2490,30 @@
<ClCompile Include="..\..\src\ripple\conditions\impl\Condition.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\Der.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\DerCoder.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerCoder.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerPrimitiveTraits.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\DerTraits.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\DerTraits.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\Ed25519.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\Ed25519.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\error.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
Expand All @@ -2499,12 +2523,33 @@
<ClCompile Include="..\..\src\ripple\conditions\impl\Fulfillment.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple\conditions\impl\PrefixSha256.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\PrefixSha256.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\PreimageSha256.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\PreimageSha256.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\impl\utils.h">
<ClCompile Include="..\..\src\ripple\conditions\impl\RsaSha256.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\RsaSha256.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\conditions\impl\ThresholdSha256.cpp">
<Filter>ripple\conditions\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\conditions\impl\ThresholdSha256.h">
<Filter>ripple\conditions\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple\conditions\Types.h">
<Filter>ripple\conditions</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\consensus\Consensus.cpp">
<Filter>ripple\consensus</Filter>
</ClCompile>
Expand Down Expand Up @@ -5235,6 +5280,36 @@
<ClCompile Include="..\..\src\test\beast\SemanticVersion_test.cpp">
<Filter>test\beast</Filter>
</ClCompile>
<ClInclude Include="..\..\src\test\conditions\ConditionsTestBase.h">
<Filter>test\conditions</Filter>
</ClInclude>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_ed.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_json.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_prefix.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_preim.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_rsa.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\Conditions_generated_test_thresh.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\DerChoice.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClInclude Include="..\..\src\test\conditions\DerChoice.h">
<Filter>test\conditions</Filter>
</ClInclude>
<ClCompile Include="..\..\src\test\conditions\Der_test.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
<ClCompile Include="..\..\src\test\conditions\PreimageSha256_test.cpp">
<Filter>test\conditions</Filter>
</ClCompile>
Expand Down
50 changes: 43 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -465,16 +465,18 @@ if (WIN32 OR is_xcode)
endif()

if(unity)
add_executable(rippled ${rippled_src_unity} ${PROTO_HDRS})
add_executable(rippled_classic EXCLUDE_FROM_ALL ${rippled_src_nonunity} ${PROTO_HDRS})
set(other_target rippled_classic)
add_executable(rippled ${rippled_src_unity} ${PROTO_HDRS})
add_executable(rippled_classic EXCLUDE_FROM_ALL ${rippled_src_nonunity} ${PROTO_HDRS})
set(other_target rippled_classic)
else()
add_executable(rippled ${rippled_src_nonunity} ${PROTO_HDRS})
add_executable(rippled_unity EXCLUDE_FROM_ALL ${rippled_src_unity} ${PROTO_HDRS})
set(other_target rippled_unity)
add_executable(rippled ${rippled_src_nonunity} ${PROTO_HDRS})
add_executable(rippled_unity EXCLUDE_FROM_ALL ${rippled_src_unity} ${PROTO_HDRS})
set(other_target rippled_unity)
endif()

list(APPEND targets "rippled")
list(APPEND targets ${other_target})

# Not the same as EXCLUDE_FROM_ALL. Prevents Visual Studio from building the
# other_target when the user builds the solution (default when pressing <F7>)
set_property(TARGET ${other_target} PROPERTY EXCLUDE_FROM_DEFAULT_BUILD true)
Expand Down Expand Up @@ -530,11 +532,45 @@ set_startup_project(rippled)

foreach(target IN LISTS targets)
target_link_libraries(${target}
${OPENSSL_LIBRARIES} ${PROTOBUF_LIBRARIES} ${SANITIZER_LIBRARIES})
${OPENSSL_LIBRARIES} ${PROTOBUF_LIBRARIES})

link_common_libraries(${target})
endforeach()

if (fuzzer_conditions)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there is much need for a user-defined variable for this since you can just set it based on the san values, something like: mellery451@a303c0f

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to keep this variable. If we add other fuzzers I think we want to control which fuzzers we are building. I don't mind the slightly clunkier build step for this because it's an uncommon build target.

set(FuzzerSrc
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/Condition.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/DerCommon.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/DerTraits.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/DerCoder.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/Ed25519.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/error.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/Fulfillment.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/PrefixSha256.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/PreimageSha256.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/RsaSha256.cpp
${CMAKE_SOURCE_DIR}/src/ripple/conditions/impl/ThresholdSha256.cpp

${CMAKE_SOURCE_DIR}/src/ripple/basics/impl/contract.cpp
${CMAKE_SOURCE_DIR}/src/ripple/basics/impl/Log.cpp
${CMAKE_SOURCE_DIR}/src/ripple/beast/utility/src/beast_Journal.cpp
${CMAKE_SOURCE_DIR}/src/ripple/basics/impl/Time.cpp
${CMAKE_SOURCE_DIR}/src/fuzzers/Conditions_fuzz_test.cpp)

add_with_props(FuzzerSrc src/ripple/unity/ed25519_donna.c
-I"${CMAKE_SOURCE_DIR}/"src/ed25519-donna)

add_executable(fulfillment_fuzzer ${FuzzerSrc})
target_link_libraries(fulfillment_fuzzer ${OPENSSL_LIBRARIES})
link_common_libraries(fulfillment_fuzzer)
target_compile_definitions(fulfillment_fuzzer PUBLIC -DFUZZ_TEST_FULFILLMENT)

add_executable(condition_fuzzer ${FuzzerSrc})
target_link_libraries(condition_fuzzer ${OPENSSL_LIBRARIES})
link_common_libraries(condition_fuzzer)
target_compile_definitions(condition_fuzzer PUBLIC -DFUZZ_TEST_CONDITION)
endif()

if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(WARNING "Rippled requires a 64 bit target architecture.\n"
"The most likely cause of this warning is trying to build rippled with a 32-bit OS.")
Expand Down
Loading