xrpld
Loading...
Searching...
No Matches
apply_test.cpp
1// Copyright (c) 2020 Dev Null Productions
2
3#include <test/jtx/Env.h>
4
5#include <xrpl/basics/Slice.h>
6#include <xrpl/basics/StringUtilities.h>
7#include <xrpl/beast/unit_test/suite.h>
8#include <xrpl/protocol/STTx.h>
9#include <xrpl/protocol/Serializer.h>
10#include <xrpl/tx/apply.h>
11
12#include <functional>
13#include <memory>
14
15namespace xrpl {
16
18{
19public:
20 void
21 run() override
22 {
23 testcase("Require Fully Canonical Signature");
25 }
26
27 void
29 {
30 // Construct a payments w/out a fully-canonical tx
31 std::string const nonFullyCanonicalTx =
32 "12000022000000002400000001201B00497D9C6140000000000F6950684000000"
33 "00000000C732103767C7B2C13AD90050A4263745E4BAB2B975417FA22E87780E1"
34 "506DDAF21139BE74483046022100E95670988A34C4DB0FA73A8BFD6383872AF43"
35 "8C147A62BC8387406298C3EADC1022100A7DC80508ED5A4750705C702A81CBF9D"
36 "2C2DC3AFEDBED37BBCCD97BC8C40E08F8114E25A26437D923EEF4D6D815DF9336"
37 "8B62E6440848314BB85996936E4F595287774684DC2AC6266024BEF";
38
39 auto ret = strUnHex(nonFullyCanonicalTx);
40 SerialIter sitTrans(makeSlice(*ret)); // NOLINT(bugprone-unchecked-optional-access)
41 STTx const tx = *std::make_shared<STTx const>(std::ref(sitTrans));
42
43 {
44 test::jtx::Env fullyCanonical(*this, test::jtx::testableAmendments());
45
46 Validity const valid =
48 fullyCanonical.app().getHashRouter(), tx, fullyCanonical.current()->rules())
49 .first;
51 fail("Non-Fully canonical signature was permitted");
52 }
53
54 pass();
55 }
56};
57
59
60} // namespace xrpl
A testsuite class.
Definition suite.h:50
void pass()
Record a successful test condition.
Definition suite.h:500
void fail(String const &reason, char const *file, int line)
Record a failure.
Definition suite.h:522
TestcaseT testcase
Memberspace for declaring test cases.
Definition suite.h:149
void testFullyCanonicalSigs()
void run() override
Runs the suite.
virtual HashRouter & getHashRouter()=0
A transaction testing environment.
Definition Env.h:143
Application & app()
Definition Env.h:280
std::shared_ptr< OpenView const > current() const
Returns the current ledger.
Definition Env.h:353
T make_shared(T... args)
TER valid(STTx const &tx, ReadView const &view, AccountID const &src, beast::Journal j)
FeatureBitset testableAmendments()
Definition Env.h:76
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Validity
Describes the pre-processing validity of a transaction.
Definition apply.h:19
@ Valid
Signature and local checks are good / passed.
Definition apply.h:25
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules)
Checks transaction signature and local checks.
Definition apply.cpp:37
std::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)
BEAST_DEFINE_TESTSUITE(AccountTxPaging, app, xrpl)
std::enable_if_t< std::is_same_v< T, char >||std::is_same_v< T, unsigned char >, Slice > makeSlice(std::array< T, N > const &a)
Definition Slice.h:215
T ref(T... args)