1#include <test/jtx/multisign.h>
3#include <test/jtx/Account.h>
4#include <test/jtx/Env.h>
5#include <test/jtx/JTx.h>
6#include <test/jtx/tags.h>
7#include <test/jtx/utility.h>
9#include <xrpl/basics/base_uint.h>
10#include <xrpl/basics/contract.h>
11#include <xrpl/basics/strHex.h>
12#include <xrpl/json/json_value.h>
13#include <xrpl/json/to_string.h>
14#include <xrpl/protocol/PublicKey.h>
15#include <xrpl/protocol/SField.h>
16#include <xrpl/protocol/STObject.h>
17#include <xrpl/protocol/SecretKey.h>
18#include <xrpl/protocol/Serializer.h>
19#include <xrpl/protocol/Sign.h>
20#include <xrpl/protocol/jss.h>
34 jv[jss::Account] = account.human();
35 jv[jss::TransactionType] = jss::SignerListSet;
36 jv[sfSignerQuorum.getJsonName()] = quorum;
37 auto& ja = jv[sfSignerEntries.getJsonName()];
41 auto& je = ja[i][sfSignerEntry.getJsonName()];
42 je[jss::Account] = e.account.human();
43 je[sfSignerWeight.getJsonName()] = e.weight;
45 je[sfWalletLocator.getJsonName()] =
to_string(*e.tag);
54 jv[jss::Account] = account.human();
55 jv[jss::TransactionType] = jss::SignerListSet;
56 jv[sfSignerQuorum.getJsonName()] = 0;
73 sigObject[sfSigningPubKey] =
"";
75 else if (sigObject.isNull())
89 auto& js = sigObject[sfSigners];
92 auto const& e = mySigners[i];
93 auto& jo = js[i][sfSigner.getJsonName()];
94 jo[jss::Account] = e.acct.human();
95 jo[jss::SigningPubKey] =
strHex(e.sig.pk().slice());
99 jo[sfTxnSignature.getJsonName()] =
strHex(
Slice{sig.data(), sig.size()});
LogOs< char > log
Logging output stream.
Slice slice() const noexcept
An immutable linear range of bytes.
Immutable cryptographic account descriptor.
A transaction testing environment.
beast::unit_test::Suite & test
void operator()(Env &, JTx &jt) const
std::vector< Reg > signers
SField const *const subField
Alternative transaction object field in which to place the signer list.
@ Object
object value (collection of name/value pairs).
STObject parse(json::Value const &jv)
Convert JSON to STObject.
json::Value signers(Account const &account, std::uint32_t quorum, std::vector< Signer > const &v)
std::string strHex(FwdIt begin, FwdIt end)
std::string to_string(BaseUInt< Bits, Tag > const &a)
std::optional< KeyType > publicKeyType(Slice const &slice)
Returns the type of public key.
XRPL_NO_SANITIZE_ADDRESS void rethrow()
Rethrow the exception currently being handled.
Buffer sign(PublicKey const &pk, SecretKey const &sk, Slice const &message)
Generate a signature for a message.
Serializer buildMultiSigningData(STObject const &obj, AccountID const &signingID)
Return a Serializer suitable for computing a multisigning TxnSignature.
Execution context for applying a JSON transaction.
std::vector< std::function< void(Env &, JTx &)> > postSigners
std::vector< std::function< void(Env &, JTx &)> > mainSigners