xrpld
Loading...
Searching...
No Matches
Sign.h
1#pragma once
2
3#include <xrpl/protocol/AccountID.h>
4#include <xrpl/protocol/HashPrefix.h>
5#include <xrpl/protocol/KeyType.h>
6#include <xrpl/protocol/PublicKey.h>
7#include <xrpl/protocol/Rules.h>
8#include <xrpl/protocol/SField.h>
9#include <xrpl/protocol/STObject.h>
10#include <xrpl/protocol/SecretKey.h>
11#include <xrpl/protocol/Serializer.h>
12
13#include <optional>
14
15namespace xrpl {
16
37
44[[nodiscard]] SField const*
46
54signatureRole(SField const& sigField);
55
63[[nodiscard]] HashPrefix
64signingPrefix(SignatureRole role, bool multiSigning, Rules const& rules);
65
78void
79sign(
80 STObject& st,
81 HashPrefix const& prefix,
82 KeyType type,
83 SecretKey const& sk,
84 SF_VL const& sigField = sfSignature);
85
95bool
96verify(
97 STObject const& st,
98 HashPrefix const& prefix,
99 PublicKey const& pk,
100 SF_VL const& sigField = sfSignature);
101
108Serializer
109buildMultiSigningData(STObject const& obj, AccountID const& signingID, HashPrefix prefix);
110
124Serializer
125startMultiSigningData(STObject const& obj, HashPrefix prefix);
126
127inline void
129{
130 s.addBitString(signingID);
131}
132
133} // namespace xrpl
int addBitString(BaseUInt< Bits, Tag > const &v)
Definition Serializer.h:202
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
KeyType
Definition KeyType.h:8
Serializer startMultiSigningData(STObject const &obj, HashPrefix prefix)
Break the multi-signing hash computation into 2 parts for optimization.
std::optional< SignatureRole > signatureRole(SField const &sigField)
The role that signs into the given field.
HashPrefix signingPrefix(SignatureRole role, bool multiSigning, Rules const &rules)
The hash prefix that binds a transaction signature to the role that made it.
bool verify(PublicKey const &publicKey, Slice const &m, Slice const &sig) noexcept
Verify a signature on a message.
SField const * signatureField(SignatureRole role)
The field that holds this role's signature.
void finishMultiSigningData(AccountID const &signingID, Serializer &s)
Definition Sign.h:128
SignatureRole
The signature slots on a transaction.
Definition Sign.h:23
@ Sponsor
The sponsor's signature, in sfSponsorSignature.
Definition Sign.h:35
@ Counterparty
The counterparty's signature, in sfCounterpartySignature.
Definition Sign.h:31
TypedField< STBlob > SF_VL
Definition SField.h:362
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:34
HashPrefix
Prefix for hashing functions.
Definition HashPrefix.h:35
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, HashPrefix prefix)
Return a Serializer suitable for computing a multisigning TxnSignature.