6 #ifndef IROHA_SHARED_MODEL_SIGNABLE_VALIDATOR_HPP 7 #define IROHA_SHARED_MODEL_SIGNABLE_VALIDATOR_HPP 12 namespace validation {
14 template <
typename ModelValidator,
16 typename FieldValidator,
17 bool SignatureRequired =
true>
20 template <
typename Val
idator>
21 std::optional<ValidationError> validateImpl(
const Model &model,
22 Validator &&validator)
const {
25 error_creator |= std::forward<Validator>(validator)(model);
26 if (SignatureRequired or not model.signatures().empty()) {
28 model.signatures(), model.payload());
31 return std::move(error_creator).getValidationError(
"SignedData");
35 FieldValidator &&validator)
36 : ModelValidator(config), field_validator_(std::move(validator)) {}
45 return validateImpl(model, [&, current_timestamp](
const Model &m) {
46 return ModelValidator::validate(m, current_timestamp);
50 std::optional<ValidationError>
validate(
const Model &model)
const {
52 model, [&](
const Model &m) {
return ModelValidator::validate(m); });
56 FieldValidator field_validator_;
60 #endif // IROHA_SHARED_MODEL_SIGNABLE_VALIDATOR_HPP Definition: signable_validator.hpp:18
std::optional< ValidationError > validate(const Model &model, interface::types::TimestampType current_timestamp) const
Definition: signable_validator.hpp:42
std::optional< ValidationError > validate(const Model &model) const
Definition: signable_validator.hpp:50
SignableModelValidator(std::shared_ptr< ValidatorsConfig > config)
Definition: signable_validator.hpp:39
Helper class for ValidationError creation.
Definition: validation_error_helpers.hpp:16
std::optional< ValidationError > validateSignatures(const interface::types::SignatureRangeType &signatures, const crypto::Blob &source) const
Definition: field_validator.cpp:318
Definition: command_executor.hpp:12
uint64_t TimestampType
Type of timestamp.
Definition: types.hpp:67