зеркало из https://github.com/microsoft/CCF.git
Minor fixes (#1914)
This commit is contained in:
Родитель
18e3e03483
Коммит
81f53cedc5
|
@ -666,6 +666,34 @@ if(BUILD_TESTS)
|
||||||
ADDITIONAL_ARGS --js-app-bundle ${CMAKE_SOURCE_DIR}/tests/js-content-types
|
ADDITIONAL_ARGS --js-app-bundle ${CMAKE_SOURCE_DIR}/tests/js-content-types
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_e2e_test(
|
||||||
|
NAME governance_test
|
||||||
|
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/governance.py
|
||||||
|
CONSENSUS cft
|
||||||
|
ADDITIONAL_ARGS --oe-binary ${OE_BINDIR} --initial-operator-count 1
|
||||||
|
)
|
||||||
|
|
||||||
|
add_e2e_test(
|
||||||
|
NAME governance_ca_certs_test
|
||||||
|
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/governance_ca_certs.py GOV_SCRIPT
|
||||||
|
${CCF_DIR}/src/runtime_config/gov_ca_certs.lua
|
||||||
|
CONSENSUS cft
|
||||||
|
)
|
||||||
|
|
||||||
|
add_e2e_test(
|
||||||
|
NAME governance_ca_cert_mismatch_test
|
||||||
|
PYTHON_SCRIPT
|
||||||
|
${CMAKE_SOURCE_DIR}/tests/governance_ca_cert_mismatch.py GOV_SCRIPT
|
||||||
|
${CCF_DIR}/src/runtime_config/gov_ca_cert_mismatch.lua
|
||||||
|
CONSENSUS cft
|
||||||
|
)
|
||||||
|
|
||||||
|
add_e2e_test(
|
||||||
|
NAME jwt_test
|
||||||
|
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/jwt_test.py
|
||||||
|
CONSENSUS cft
|
||||||
|
)
|
||||||
|
|
||||||
if(QUOTES_ENABLED)
|
if(QUOTES_ENABLED)
|
||||||
add_e2e_test(
|
add_e2e_test(
|
||||||
NAME reconfiguration_test
|
NAME reconfiguration_test
|
||||||
|
@ -687,34 +715,6 @@ if(BUILD_TESTS)
|
||||||
CONSENSUS cft
|
CONSENSUS cft
|
||||||
ADDITIONAL_ARGS --oe-binary ${OE_BINDIR} --raft-election-timeout 4000
|
ADDITIONAL_ARGS --oe-binary ${OE_BINDIR} --raft-election-timeout 4000
|
||||||
)
|
)
|
||||||
|
|
||||||
add_e2e_test(
|
|
||||||
NAME governance_test
|
|
||||||
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/governance.py
|
|
||||||
CONSENSUS cft
|
|
||||||
ADDITIONAL_ARGS --oe-binary ${OE_BINDIR} --initial-operator-count 1
|
|
||||||
)
|
|
||||||
|
|
||||||
add_e2e_test(
|
|
||||||
NAME governance_ca_certs_test
|
|
||||||
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/governance_ca_certs.py GOV_SCRIPT
|
|
||||||
${CCF_DIR}/src/runtime_config/gov_ca_certs.lua
|
|
||||||
CONSENSUS cft
|
|
||||||
)
|
|
||||||
|
|
||||||
add_e2e_test(
|
|
||||||
NAME governance_ca_cert_mismatch_test
|
|
||||||
PYTHON_SCRIPT
|
|
||||||
${CMAKE_SOURCE_DIR}/tests/governance_ca_cert_mismatch.py GOV_SCRIPT
|
|
||||||
${CCF_DIR}/src/runtime_config/gov_ca_cert_mismatch.lua
|
|
||||||
CONSENSUS cft
|
|
||||||
)
|
|
||||||
|
|
||||||
add_e2e_test(
|
|
||||||
NAME jwt_test
|
|
||||||
PYTHON_SCRIPT ${CMAKE_SOURCE_DIR}/tests/jwt_test.py
|
|
||||||
CONSENSUS cft
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_SMALLBANK)
|
if(BUILD_SMALLBANK)
|
||||||
|
|
|
@ -97,6 +97,11 @@ namespace oversized
|
||||||
~FragmentReconstructor()
|
~FragmentReconstructor()
|
||||||
{
|
{
|
||||||
dispatcher.remove_message_handler(OversizedMessage::fragment);
|
dispatcher.remove_message_handler(OversizedMessage::fragment);
|
||||||
|
|
||||||
|
for (const auto& [_, partial] : partial_messages)
|
||||||
|
{
|
||||||
|
delete[] partial.data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace ccf
|
||||||
}
|
}
|
||||||
case nlohmann::json::value_t::object:
|
case nlohmann::json::value_t::object:
|
||||||
{
|
{
|
||||||
lua_newtable(l);
|
lua_createtable(l, 0, j.size());
|
||||||
for (auto it = j.begin(); it != j.end(); ++it)
|
for (auto it = j.begin(); it != j.end(); ++it)
|
||||||
{
|
{
|
||||||
push_raw(l, it.value());
|
push_raw(l, it.value());
|
||||||
|
@ -44,7 +44,7 @@ namespace ccf
|
||||||
// Set custom __was_object metatable property
|
// Set custom __was_object metatable property
|
||||||
if (lua_getmetatable(l, -1) == 0)
|
if (lua_getmetatable(l, -1) == 0)
|
||||||
{
|
{
|
||||||
lua_newtable(l);
|
lua_createtable(l, 0, 1);
|
||||||
}
|
}
|
||||||
lua_pushboolean(l, true);
|
lua_pushboolean(l, true);
|
||||||
lua_setfield(l, -2, "__was_object");
|
lua_setfield(l, -2, "__was_object");
|
||||||
|
@ -53,7 +53,7 @@ namespace ccf
|
||||||
}
|
}
|
||||||
case nlohmann::json::value_t::array:
|
case nlohmann::json::value_t::array:
|
||||||
{
|
{
|
||||||
lua_newtable(l);
|
lua_createtable(l, j.size(), 0);
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (const auto& v : j)
|
for (const auto& v : j)
|
||||||
{
|
{
|
||||||
|
@ -64,7 +64,7 @@ namespace ccf
|
||||||
// Set custom __was_object metatable property
|
// Set custom __was_object metatable property
|
||||||
if (lua_getmetatable(l, -1) == 0)
|
if (lua_getmetatable(l, -1) == 0)
|
||||||
{
|
{
|
||||||
lua_newtable(l);
|
lua_createtable(l, 0, 1);
|
||||||
}
|
}
|
||||||
lua_pushboolean(l, false);
|
lua_pushboolean(l, false);
|
||||||
lua_setfield(l, -2, "__was_object");
|
lua_setfield(l, -2, "__was_object");
|
||||||
|
|
|
@ -116,11 +116,18 @@ namespace ccf
|
||||||
template <typename F0, typename F1>
|
template <typename F0, typename F1>
|
||||||
auto check_and_convert(lua_State* l, int arg, F0 check, F1 convert)
|
auto check_and_convert(lua_State* l, int arg, F0 check, F1 convert)
|
||||||
{
|
{
|
||||||
sanitize_stack_idx(l, arg);
|
arg = sanitize_stack_idx(l, arg);
|
||||||
if (!check(l, arg)) // e.g., lua_isnumber()
|
const auto stack_before = lua_gettop(l);
|
||||||
|
|
||||||
|
const auto check_ok = check(l, arg); // e.g., lua_isnumber()
|
||||||
|
expect_top(l, stack_before);
|
||||||
|
if (!check_ok)
|
||||||
throw ex("Lua stack object has wrong type.");
|
throw ex("Lua stack object has wrong type.");
|
||||||
|
|
||||||
return convert(l, arg, nullptr); // e.g., lua_tonumberx()
|
const auto convert_result =
|
||||||
|
convert(l, arg, nullptr); // e.g., lua_tonumberx()
|
||||||
|
expect_top(l, stack_before);
|
||||||
|
return convert_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename F0, typename F1>
|
template <typename F0, typename F1>
|
||||||
|
|
|
@ -71,7 +71,6 @@ namespace ccf
|
||||||
|
|
||||||
static int lua_verify_cert_and_get_claims(lua_State* l)
|
static int lua_verify_cert_and_get_claims(lua_State* l)
|
||||||
{
|
{
|
||||||
LOG_INFO_FMT("lua_verify_cert_and_get_claims");
|
|
||||||
nlohmann::json json = lua::check_get<nlohmann::json>(l, -1);
|
nlohmann::json json = lua::check_get<nlohmann::json>(l, -1);
|
||||||
std::vector<uint8_t> cert_der = json;
|
std::vector<uint8_t> cert_der = json;
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,6 @@ namespace ccf
|
||||||
};
|
};
|
||||||
DECLARE_JSON_TYPE_WITH_BASE(PrimarySignature, NodeSignature)
|
DECLARE_JSON_TYPE_WITH_BASE(PrimarySignature, NodeSignature)
|
||||||
DECLARE_JSON_REQUIRED_FIELDS(
|
DECLARE_JSON_REQUIRED_FIELDS(
|
||||||
PrimarySignature, seqno, view, commit_seqno, commit_view, root)
|
PrimarySignature, seqno, view, commit_seqno, commit_view, root, tree)
|
||||||
using Signatures = kv::Map<ObjectId, PrimarySignature>;
|
using Signatures = kv::Map<ObjectId, PrimarySignature>;
|
||||||
}
|
}
|
|
@ -19,7 +19,7 @@ namespace tls
|
||||||
|
|
||||||
// Obtain the size of the output buffer
|
// Obtain the size of the output buffer
|
||||||
auto rc = mbedtls_base64_decode(nullptr, 0, &len_written, data, size);
|
auto rc = mbedtls_base64_decode(nullptr, 0, &len_written, data, size);
|
||||||
if (rc != MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL)
|
if (rc < 0 && rc != MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL)
|
||||||
{
|
{
|
||||||
throw std::logic_error(fmt::format(
|
throw std::logic_error(fmt::format(
|
||||||
"Could not obtain length of decoded base64 buffer: {}",
|
"Could not obtain length of decoded base64 buffer: {}",
|
||||||
|
@ -45,7 +45,7 @@ namespace tls
|
||||||
|
|
||||||
// Obtain required size for output buffer
|
// Obtain required size for output buffer
|
||||||
auto rc = mbedtls_base64_encode(nullptr, 0, &len_written, data, size);
|
auto rc = mbedtls_base64_encode(nullptr, 0, &len_written, data, size);
|
||||||
if (rc != MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL)
|
if (rc < 0 && rc != MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL)
|
||||||
{
|
{
|
||||||
throw std::logic_error(fmt::format(
|
throw std::logic_error(fmt::format(
|
||||||
"Could not obtain length required for encoded base64 buffer: {}",
|
"Could not obtain length required for encoded base64 buffer: {}",
|
||||||
|
@ -63,9 +63,12 @@ namespace tls
|
||||||
fmt::format("Could not encode base64 string: {}", error_string(rc)));
|
fmt::format("Could not encode base64 string: {}", error_string(rc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// mbedtls includes the terminating null, but std-string provides this
|
if (b64_string.size() > 0)
|
||||||
// already
|
{
|
||||||
b64_string.pop_back();
|
// mbedtls includes the terminating null, but std-string provides this
|
||||||
|
// already
|
||||||
|
b64_string.pop_back();
|
||||||
|
}
|
||||||
|
|
||||||
return b64_string;
|
return b64_string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,12 @@ namespace tls
|
||||||
constexpr size_t len = 256;
|
constexpr size_t len = 256;
|
||||||
char buf[len];
|
char buf[len];
|
||||||
mbedtls_strerror(err, buf, len);
|
mbedtls_strerror(err, buf, len);
|
||||||
|
|
||||||
|
if (strlen(buf) == 0)
|
||||||
|
{
|
||||||
|
return std::to_string(err);
|
||||||
|
}
|
||||||
|
|
||||||
return std::string(buf);
|
return std::string(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -148,7 +148,7 @@ class Member:
|
||||||
with remote_node.client(f"member{self.member_id}") as mc:
|
with remote_node.client(f"member{self.member_id}") as mc:
|
||||||
r = mc.post(
|
r = mc.post(
|
||||||
"/gov/ack",
|
"/gov/ack",
|
||||||
body={"state_digest": state_digest["state_digest"]},
|
body=state_digest,
|
||||||
signed=True,
|
signed=True,
|
||||||
)
|
)
|
||||||
assert r.status_code == 200, f"Error ACK: {r}"
|
assert r.status_code == 200, f"Error ACK: {r}"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче