6 #ifndef IROHA_SHARED_MODEL_FIELD_VALIDATOR_HPP 7 #define IROHA_SHARED_MODEL_FIELD_VALIDATOR_HPP 24 class AccountDetailPaginationMeta;
25 class AccountDetailRecordId;
28 class AssetPaginationMeta;
32 class TxPaginationMeta;
35 namespace validation {
43 using TimeFunction = std::function<iroha::ts64_t()>;
49 time_t future_gap = kDefaultFutureGap,
50 TimeFunction time_provider = [] {
54 std::optional<ValidationError> validateAccountId(
57 std::optional<ValidationError> validateAssetId(
60 std::optional<ValidationError> validateEvmHexAddress(
61 std::string_view address)
const;
63 std::optional<ValidationError> validateBytecode(
64 interface::types::EvmCodeHexStringView input)
const;
66 std::optional<ValidationError> validatePeer(
69 std::optional<ValidationError> validateAmount(
73 std::string_view pubkey)
const;
75 std::optional<ValidationError> validatePeerAddress(
78 std::optional<ValidationError> validateRoleId(
81 std::optional<ValidationError> validateAccountName(
106 std::optional<ValidationError> validateDomainId(
109 std::optional<ValidationError> validateDomain(
112 std::optional<ValidationError> validateAssetName(
115 std::optional<ValidationError> validateAccountDetailKey(
118 std::optional<ValidationError> validateAccountDetailValue(
121 std::optional<ValidationError> validateOldAccountDetailValue(
122 const std::optional<interface::types::AccountDetailValueType>
125 std::optional<ValidationError> validatePrecision(
128 std::optional<ValidationError> validateRolePermission(
131 std::optional<ValidationError> validateGrantablePermission(
134 std::optional<ValidationError> validateQuorum(
137 std::optional<ValidationError> validateCreatorAccountId(
140 std::optional<ValidationError> validateAccount(
146 std::optional<ValidationError> validateCreatedTime(
153 std::optional<ValidationError> validateCreatedTime(
156 std::optional<ValidationError> validateCounter(
159 std::optional<ValidationError> validateSignatureForm(
162 std::optional<ValidationError> validateSignatures(
166 std::optional<ValidationError> validateQueryPayloadMeta(
169 std::optional<ValidationError> validateDescription(
172 std::optional<ValidationError> validateBatchMeta(
175 std::optional<ValidationError> validateHeight(
178 std::optional<ValidationError> validateHash(
181 std::optional<ValidationError> validateTxPaginationMeta(
184 std::optional<ValidationError> validateAccountAsset(
187 std::optional<ValidationError> validateAsset(
190 std::optional<ValidationError> validateAssetPaginationMeta(
193 std::optional<ValidationError> validateAccountDetailRecordId(
196 std::optional<ValidationError> validateAccountDetailPaginationMeta(
203 TimeFunction time_provider_;
207 static constexpr
auto kMaxDelay =
208 std::chrono::hours(24) / std::chrono::milliseconds(1);
210 static constexpr
auto kDefaultFutureGap =
211 std::chrono::minutes(5) / std::chrono::milliseconds(1);
213 static constexpr
size_t hash_size =
216 static constexpr
size_t value_size = 4 * 1024 * 1024;
217 static constexpr
size_t kMaxDescriptionSize = 100 * 1024;
221 shared_model::interface::types::PublicKeyHexStringView pubkey);
223 std::optional<ValidationError>
validatePubkey(std::string_view pubkey);
228 #endif // IROHA_SHARED_MODEL_FIELD_VALIDATOR_HPP Definition: account.hpp:20
std::string AddressType
Type of peer address.
Definition: types.hpp:50
uint64_t HeightType
Type of height (for Block, Proposal etc)
Definition: types.hpp:48
Definition: signature.hpp:18
Grantable
Definition: permissions.hpp:75
decltype(iroha::time::now()) time_t
Definition: time.hpp:38
std::string DomainIdType
Iroha domain id type.
Definition: types.hpp:56
Definition: amount.hpp:19
Definition: domain.hpp:19
auto now()
Definition: time.hpp:23
boost::any_range< interface::Signature, boost::forward_traversal_tag, const Signature & > SignatureRangeType
Type of signature range, which returns when signatures are invoked.
Definition: range_types.hpp:24
Provides query metadata for account detail list pagination.
Definition: account_detail_record_id.hpp:17
std::string DescriptionType
Type of the transfer message.
Definition: types.hpp:86
std::string AccountDetailKeyType
Type of account detail key.
Definition: types.hpp:79
std::optional< ValidationError > validatePubkey(shared_model::interface::types::PublicKeyHexStringView pubkey)
Role
Definition: permissions.hpp:17
std::string AccountIdType
Type of account id.
Definition: types.hpp:38
hash256_t hash(const T &pb)
Definition: pb_common.hpp:43
Definition: sha3_256.hpp:17
Definition: field_validator.hpp:41
uint8_t PrecisionType
Type of precision.
Definition: types.hpp:46
std::string AccountNameType
Type of account name.
Definition: types.hpp:71
uint64_t CounterType
Type of counter.
Definition: types.hpp:69
std::string AccountDetailValueType
Type of account detail value.
Definition: types.hpp:81
Definition: command_executor.hpp:12
Definition: account_asset.hpp:20
uint16_t QuorumType
Type of Quorum used in transaction and set quorum.
Definition: types.hpp:65
std::string AssetNameType
Type of asset name.
Definition: types.hpp:73
std::string RoleIdType
Type of role (i.e admin, user)
Definition: types.hpp:54
uint64_t TimestampType
Type of timestamp.
Definition: types.hpp:67
std::string AssetIdType
Type of asset id.
Definition: types.hpp:58