mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-22 03:55:53 +00:00
deploy: 1a8eb5e6e3
This commit is contained in:
@@ -114,245 +114,270 @@ $(function() {
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="classripple_1_1STValidation.html">STValidation</a> final : <span class="keyword">public</span> <a class="code" href="classripple_1_1STObject.html">STObject</a>, <span class="keyword">public</span> <a class="code" href="classripple_1_1CountedObject.html">CountedObject</a><STValidation></div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">template</span> <<span class="keyword">class</span> LookupNodeID></div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240"> 61</a></span>  <a class="code" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">STValidation</a>(</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a>& sit,</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  LookupNodeID&& lookupNodeID,</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">bool</span> checkSignature)</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  : <a class="code" href="classripple_1_1STObject.html">STObject</a>(<a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>(), sit, <a class="code" href="namespaceripple.html#a75e201e47a68c45fb0bb79ee330a1386">sfValidation</a>)</div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  , <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>([this]() {</div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">auto</span> <span class="keyword">const</span> spk = <a class="code" href="classripple_1_1STObject.html#a09be758ae97b9e9e392aa2606cc0559f">getFieldVL</a>(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>);</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">publicKeyType</a>(<a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(spk)) != <a class="code" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>)</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Throw<std::runtime_error>(<span class="stringliteral">"Invalid public key in validation"</span>);</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a>{<a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(spk)};</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }())</div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  , <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>(lookupNodeID(<a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>))</div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (checkSignature && !<a class="code" href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">isValid</a>())</div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  JLOG(<a class="code" href="namespaceripple.html#a94e13759bd026c8ac305482e17f05adb">debugLog</a>().error()) << <span class="stringliteral">"Invalid signature in validation: "</span></div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  << <a class="code" href="classripple_1_1STObject.html#acc2ceb95cdb8fc8b2520aeceabf17553">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Throw<std::runtime_error>(<span class="stringliteral">"Invalid signature in validation"</span>);</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  assert(<a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> F></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a3c378199969a1776d68565d0083355fa"> 95</a></span>  <a class="code" href="classripple_1_1STValidation.html#a3c378199969a1776d68565d0083355fa">STValidation</a>(</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> signTime,</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>& pk,</div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classripple_1_1SecretKey.html">SecretKey</a> <span class="keyword">const</span>& sk,</div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span>& nodeID,</div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  F&& f)</div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  : <a class="code" href="classripple_1_1STObject.html">STObject</a>(<a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>(), <a class="code" href="namespaceripple.html#a75e201e47a68c45fb0bb79ee330a1386">sfValidation</a>)</div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  , <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>(pk)</div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  , <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>(nodeID)</div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  , <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a>(signTime)</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  assert(<a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b"> 46</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Determines the validity of the signature in this validation; unseated</span></div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// optional if we haven't yet checked it, a boolean otherwise.</span></div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82"> 50</a></span>  <span class="keyword">mutable</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<bool></a> <a class="code" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">valid_</a>;</div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// The public key associated with the key used to sign this validation</span></div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68"> 53</a></span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span> <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>;</div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// The ID of the validator that issued this validation. For validators</span></div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// that use manifests this will be derived from the master public key.</span></div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c"> 57</a></span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span> <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>;</div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69"> 59</a></span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a> = {};</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">public</span>:</div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">template</span> <<span class="keyword">class</span> LookupNodeID></div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">STValidation</a>(</div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a>& sit,</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  LookupNodeID&& lookupNodeID,</div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">bool</span> checkSignature);</div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> F></div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">STValidation</a>(</div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> signTime,</div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>& pk,</div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classripple_1_1SecretKey.html">SecretKey</a> <span class="keyword">const</span>& sk,</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span>& nodeID,</div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  F&& f);</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// Hash of the validated ledger</span></div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classripple_1_1STValidation.html#abdf587b8dd5331ad1517f4e1969a8662">getLedgerHash</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Hash of consensus transaction set used to generate ledger</span></div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classripple_1_1STValidation.html#a23a7944d7d642c1c0ce8dc1817672d4b">getConsensusHash</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a></div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classripple_1_1STValidation.html#aeeef4bccb0e2c4d98a84cb82e433ce90">getSignTime</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// First, set our own public key:</span></div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">publicKeyType</a>(pk) != <a class="code" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>)</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="namespaceripple.html#aefd2f77338ce3c9a2fffc4f0b289b483">LogicError</a>(</div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="stringliteral">"We can only use secp256k1 keys for signing validations"</span>);</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>, pk.<a class="code" href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">slice</a>());</div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">setFieldU32</a>(<a class="code" href="namespaceripple.html#a1323d21bedd138bb1a2c17a5ac0ec500">sfSigningTime</a>, signTime.<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">time_since_epoch</a>().count());</div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Perform additional initialization</span></div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  f(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Finally, sign the validation and mark it as trusted:</span></div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classripple_1_1STObject.html#a4fa764a09a6e972491891d939eb9d2f2">setFlag</a>(<a class="code" href="namespaceripple.html#abedda589258487931711c4efea516376">vfFullyCanonicalSig</a>);</div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(<a class="code" href="namespaceripple.html#a61932ff70203e248b70ca3b215667435">sfSignature</a>, <a class="code" href="namespaceripple.html#a0429dc3d934c2cebe43fb8a723cf9eb3">signDigest</a>(pk, sk, <a class="code" href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">getSigningHash</a>()));</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">setTrusted</a>();</div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Check to ensure that all required fields are present.</span></div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& e : <a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>())</div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (e.style() == <a class="code" href="namespaceripple.html#ad905dc8b70717f4492bebb6b7e189042a515d1dfe6cbb412fbbcece5bb23a0763">soeREQUIRED</a> && !<a class="code" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(e.sField()))</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespaceripple.html#aefd2f77338ce3c9a2fffc4f0b289b483">LogicError</a>(</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="stringliteral">"Required field '"</span> + e.sField().getName() +</div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="stringliteral">"' missing from validation."</span>);</div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  </div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// We just signed this, so it should be valid.</span></div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">valid_</a> = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classripple_1_1STBase.html">STBase</a>*</div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#ad695924d70d80024e856ff841c23906c"> 138</a></span>  <a class="code" href="classripple_1_1STValidation.html#ad695924d70d80024e856ff841c23906c">copy</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> n, <span class="keywordtype">void</span>* buf)<span class="keyword"> const override</span></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keyword"> </span>{</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STBase.html#a7fb3256be27a1c525eca36470f25e131">emplace</a>(n, buf, *<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classripple_1_1STBase.html">STBase</a>*</div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa219392b3da88cb0ed350962367cce4d"> 144</a></span>  <a class="code" href="classripple_1_1STValidation.html#aa219392b3da88cb0ed350962367cce4d">move</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> n, <span class="keywordtype">void</span>* buf)<span class="keyword"> override</span></div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword"> </span>{</div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STBase.html#a7fb3256be27a1c525eca36470f25e131">emplace</a>(n, buf, std::move(*<span class="keyword">this</span>));</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// Hash of the validated ledger</span></div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classripple_1_1STValidation.html#abdf587b8dd5331ad1517f4e1969a8662">getLedgerHash</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a></div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classripple_1_1STValidation.html#a3ef77d68fa4c619198ce70529d643b0d">getSeenTime</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> const&</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classripple_1_1STValidation.html#a1332084b8404976678c7b10aa90fd373">getSignerPublic</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> const&</div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classripple_1_1STValidation.html#a8ab98e39dcf307516d3fac9dc647cde4">getNodeID</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">isValid</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classripple_1_1STValidation.html#aa0911213ec5399168a171156b130ba7a">isFull</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f">isTrusted</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">getSigningHash</a>() const;</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">setTrusted</a>();</div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14">setUntrusted</a>();</div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2">setSeen</a>(<a class="code" href="classripple_1_1NetClock.html">NetClock</a>::time_point s);</div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">Blob</a></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="classripple_1_1STValidation.html#a3ce9844ef8dc996ccd4091bb74136e98">getSerialized</a>() const;</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">Blob</a></div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classripple_1_1STValidation.html#ad6a6e4556b9cae5cbe91026f20541136">getSignature</a>() const;</div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> private:</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  static <a class="code" href="classripple_1_1SOTemplate.html">SOTemplate</a> const&</div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>();</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  </div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classripple_1_1STBase.html">STBase</a>*</div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="classripple_1_1STValidation.html#ab5eff466019cb7d0bdc5c6490f685a1f">copy</a>(<a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n, <span class="keywordtype">void</span>* buf) const override;</div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="classripple_1_1STBase.html">STBase</a>*</div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classripple_1_1STValidation.html#ae2ad4368ffbab07c0ceae3d7aabf0bb7">move</a>(<a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n, <span class="keywordtype">void</span>* buf) override;</div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// Hash of consensus transaction set used to generate ledger</span></div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classripple_1_1STValidation.html#a23a7944d7d642c1c0ce8dc1817672d4b">getConsensusHash</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a></div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classripple_1_1STValidation.html#aeeef4bccb0e2c4d98a84cb82e433ce90">getSignTime</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classripple_1_1STValidation.html#a3ef77d68fa4c619198ce70529d643b0d">getSeenTime</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> const&</div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a97202fcb263c9f938f4782d73626309c"> 164</a></span>  <a class="code" href="classripple_1_1STValidation.html#a97202fcb263c9f938f4782d73626309c">getSignerPublic</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>;</div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa2ae63254e56e19d43daeccdfa6bfb05"> 170</a></span>  <a class="code" href="classripple_1_1STValidation.html#aa2ae63254e56e19d43daeccdfa6bfb05">getNodeID</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>;</div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">isValid</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div>
|
||||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classripple_1_1STValidation.html#aa0911213ec5399168a171156b130ba7a">isFull</a>() const noexcept;</div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f"> 182</a></span>  <a class="code" href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f">isTrusted</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a>;</div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classripple_1_1base__uint.html">uint256</a></div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">getSigningHash</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  </div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e"> 191</a></span>  <a class="code" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">setTrusted</a>()</div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14"> 197</a></span>  <a class="code" href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14">setUntrusted</a>()</div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2"> 203</a></span>  <a class="code" href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2">setSeen</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> s)</div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a> = s;</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a5e49bd8b743617d1af92ffed7ac6b665"> 153</a></span>  friend class detail::STVar;</div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> };</div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> template <class LookupNodeID></div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240"> 157</a></span> <a class="code" href="classripple_1_1STValidation.html">STValidation</a>::<a class="code" href="classripple_1_1STValidation.html">STValidation</a>(</div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a>& sit,</div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  LookupNodeID&& lookupNodeID,</div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">bool</span> checkSignature)</div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  : <a class="code" href="classripple_1_1STObject.html">STObject</a>(<a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>(), sit, <a class="code" href="namespaceripple.html#a75e201e47a68c45fb0bb79ee330a1386">sfValidation</a>)</div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  , <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>([this]() {</div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">auto</span> <span class="keyword">const</span> spk = <a class="code" href="classripple_1_1STObject.html#a09be758ae97b9e9e392aa2606cc0559f">getFieldVL</a>(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>);</div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">publicKeyType</a>(<a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(spk)) != <a class="code" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>)</div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  Throw<std::runtime_error>(<span class="stringliteral">"Invalid public key in validation"</span>);</div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a>{<a class="code" href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">makeSlice</a>(spk)};</div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }())</div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  , <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>(lookupNodeID(<a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>))</div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span> (checkSignature && !<a class="code" href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">isValid</a>())</div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  JLOG(<a class="code" href="namespaceripple.html#a94e13759bd026c8ac305482e17f05adb">debugLog</a>().error()) << <span class="stringliteral">"Invalid signature in validation: "</span></div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  << <a class="code" href="classripple_1_1STObject.html#acc2ceb95cdb8fc8b2520aeceabf17553">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  Throw<std::runtime_error>(<span class="stringliteral">"Invalid signature in validation"</span>);</div>
|
||||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div>
|
||||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  assert(<a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">template</span> <<span class="keyword">typename</span> F></div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a3c378199969a1776d68565d0083355fa"> 191</a></span> <a class="code" href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">STValidation::STValidation</a>(</div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> signTime,</div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>& pk,</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classripple_1_1SecretKey.html">SecretKey</a> <span class="keyword">const</span>& sk,</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span>& nodeID,</div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  F&& f)</div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  : <a class="code" href="classripple_1_1STObject.html">STObject</a>(<a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>(), <a class="code" href="namespaceripple.html#a75e201e47a68c45fb0bb79ee330a1386">sfValidation</a>)</div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  , <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>(pk)</div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  , <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>(nodeID)</div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  , <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a>(signTime)</div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  assert(<a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>.<a class="code" href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">isNonZero</a>());</div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// First, set our own public key:</span></div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">publicKeyType</a>(pk) != <a class="code" href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">KeyType::secp256k1</a>)</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceripple.html#aefd2f77338ce3c9a2fffc4f0b289b483">LogicError</a>(<span class="stringliteral">"We can only use secp256k1 keys for signing validations"</span>);</div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  </div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">Blob</a></div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classripple_1_1STValidation.html#a3ce9844ef8dc996ccd4091bb74136e98">getSerialized</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>, pk.<a class="code" href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">slice</a>());</div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">setFieldU32</a>(<a class="code" href="namespaceripple.html#a1323d21bedd138bb1a2c17a5ac0ec500">sfSigningTime</a>, signTime.<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">time_since_epoch</a>().count());</div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">Blob</a></div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classripple_1_1STValidation.html#ad6a6e4556b9cae5cbe91026f20541136">getSignature</a>() <span class="keyword">const</span>;</div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// Perform additional initialization</span></div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  f(*<span class="keyword">this</span>);</div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  </div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">static</span> <a class="code" href="classripple_1_1SOTemplate.html">SOTemplate</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>();</div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  </div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b"> 218</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Determines the validity of the signature in this validation; unseated</span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// optional if we haven't yet checked it, a boolean otherwise.</span></div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82"> 222</a></span>  <span class="keyword">mutable</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional<bool></a> <a class="code" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">valid_</a>;</div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  </div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// The public key associated with the key used to sign this validation</span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68"> 225</a></span>  <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span> <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>;</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// The ID of the validator that issued this validation. For validators</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// that use manifests this will be derived from the master public key.</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c"> 229</a></span>  <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span> <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>;</div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  </div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69"> 231</a></span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a> = {};</div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> };</div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  </div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Finally, sign the validation and mark it as trusted:</span></div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classripple_1_1STObject.html#a4fa764a09a6e972491891d939eb9d2f2">setFlag</a>(<a class="code" href="namespaceripple.html#abedda589258487931711c4efea516376">vfFullyCanonicalSig</a>);</div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">setFieldVL</a>(<a class="code" href="namespaceripple.html#a61932ff70203e248b70ca3b215667435">sfSignature</a>, <a class="code" href="namespaceripple.html#a0429dc3d934c2cebe43fb8a723cf9eb3">signDigest</a>(pk, sk, <a class="code" href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">getSigningHash</a>()));</div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">setTrusted</a>();</div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Check to ensure that all required fields are present.</span></div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& e : <a class="code" href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">validationFormat</a>())</div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (e.style() == <a class="code" href="namespaceripple.html#ad905dc8b70717f4492bebb6b7e189042a515d1dfe6cbb412fbbcece5bb23a0763">soeREQUIRED</a> && !<a class="code" href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">isFieldPresent</a>(e.sField()))</div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="namespaceripple.html#aefd2f77338ce3c9a2fffc4f0b289b483">LogicError</a>(</div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="stringliteral">"Required field '"</span> + e.sField().getName() +</div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="stringliteral">"' missing from validation."</span>);</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// We just signed this, so it should be valid.</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">valid_</a> = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">inline</span> <a class="code" href="classripple_1_1PublicKey.html">PublicKey</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a1332084b8404976678c7b10aa90fd373"> 233</a></span> <a class="code" href="classripple_1_1STValidation.html#a1332084b8404976678c7b10aa90fd373">STValidation::getSignerPublic</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> {</div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">signingPubKey_</a>;</div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="keyword">inline</span> <a class="code" href="classripple_1_1base__uint.html">NodeID</a> <span class="keyword">const</span>&</div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a8ab98e39dcf307516d3fac9dc647cde4"> 239</a></span> <a class="code" href="classripple_1_1STValidation.html#a8ab98e39dcf307516d3fac9dc647cde4">STValidation::getNodeID</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">nodeID_</a>;</div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  </div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f"> 245</a></span> <a class="code" href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f">STValidation::isTrusted</a>() const noexcept</div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a>;</div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e"> 251</a></span> <a class="code" href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">STValidation::setTrusted</a>()</div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14"> 257</a></span> <a class="code" href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14">STValidation::setUntrusted</a>()</div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> {</div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">mTrusted</a> = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> }</div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2"> 263</a></span> <a class="code" href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2">STValidation::setSeen</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/time_point.html">NetClock::time_point</a> s)</div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">seenTime_</a> = s;</div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  </div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor">#endif</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a948c3427a55c84828429f2c1c77abb9c"><div class="ttname"><a href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">ripple::STValidation::nodeID_</a></div><div class="ttdeci">const NodeID nodeID_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00229">STValidation.h:229</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a948c3427a55c84828429f2c1c77abb9c"><div class="ttname"><a href="classripple_1_1STValidation.html#a948c3427a55c84828429f2c1c77abb9c">ripple::STValidation::nodeID_</a></div><div class="ttdeci">const NodeID nodeID_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00057">STValidation.h:57</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aabe37451093c21757855542d68fba3ce"><div class="ttname"><a href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">ripple::makeSlice</a></div><div class="ttdeci">std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)</div><div class="ttdef"><b>Definition:</b> <a href="Slice_8h_source.html#l00240">Slice.h:240</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa219392b3da88cb0ed350962367cce4d"><div class="ttname"><a href="classripple_1_1STValidation.html#aa219392b3da88cb0ed350962367cce4d">ripple::STValidation::move</a></div><div class="ttdeci">STBase * move(std::size_t n, void *buf) override</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00144">STValidation.h:144</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a23a7944d7d642c1c0ce8dc1817672d4b"><div class="ttname"><a href="classripple_1_1STValidation.html#a23a7944d7d642c1c0ce8dc1817672d4b">ripple::STValidation::getConsensusHash</a></div><div class="ttdeci">uint256 getConsensusHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00071">STValidation.cpp:71</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a23a7944d7d642c1c0ce8dc1817672d4b"><div class="ttname"><a href="classripple_1_1STValidation.html#a23a7944d7d642c1c0ce8dc1817672d4b">ripple::STValidation::getConsensusHash</a></div><div class="ttdeci">uint256 getConsensusHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00083">STValidation.cpp:83</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1CountedObject_html"><div class="ttname"><a href="classripple_1_1CountedObject.html">ripple::CountedObject</a></div><div class="ttdoc">Tracks the number of instances of an object.</div><div class="ttdef"><b>Definition:</b> <a href="CountedObject_8h_source.html#l00124">CountedObject.h:124</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1base__uint_html_ad2bffc75e554b89befbb9388e07392c0"><div class="ttname"><a href="classripple_1_1base__uint.html#ad2bffc75e554b89befbb9388e07392c0">ripple::base_uint::isNonZero</a></div><div class="ttdeci">bool isNonZero() const</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00516">base_uint.h:516</a></div></div>
|
||||
<div class="ttc" id="afunctional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/functional.html">functional</a></div></div>
|
||||
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector< unsigned char ></a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a590913040d5c9a68f3bf1d4da20311ad"><div class="ttname"><a href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">ripple::sfSigningPubKey</a></div><div class="ttdeci">const SF_VL sfSigningPubKey</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad695924d70d80024e856ff841c23906c"><div class="ttname"><a href="classripple_1_1STValidation.html#ad695924d70d80024e856ff841c23906c">ripple::STValidation::copy</a></div><div class="ttdeci">STBase * copy(std::size_t n, void *buf) const override</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00138">STValidation.h:138</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_abdf587b8dd5331ad1517f4e1969a8662"><div class="ttname"><a href="classripple_1_1STValidation.html#abdf587b8dd5331ad1517f4e1969a8662">ripple::STValidation::getLedgerHash</a></div><div class="ttdeci">uint256 getLedgerHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00065">STValidation.cpp:65</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ae70ef60517236d6b0f56300a68f06b68"><div class="ttname"><a href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">ripple::STValidation::signingPubKey_</a></div><div class="ttdeci">const PublicKey signingPubKey_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00225">STValidation.h:225</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a02433013ff252904f1d57e495873409b"><div class="ttname"><a href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">ripple::STValidation::mTrusted</a></div><div class="ttdeci">bool mTrusted</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00218">STValidation.h:218</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_abdf587b8dd5331ad1517f4e1969a8662"><div class="ttname"><a href="classripple_1_1STValidation.html#abdf587b8dd5331ad1517f4e1969a8662">ripple::STValidation::getLedgerHash</a></div><div class="ttdeci">uint256 getLedgerHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00077">STValidation.cpp:77</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ae70ef60517236d6b0f56300a68f06b68"><div class="ttname"><a href="classripple_1_1STValidation.html#ae70ef60517236d6b0f56300a68f06b68">ripple::STValidation::signingPubKey_</a></div><div class="ttdeci">const PublicKey signingPubKey_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00053">STValidation.h:53</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a8ab98e39dcf307516d3fac9dc647cde4"><div class="ttname"><a href="classripple_1_1STValidation.html#a8ab98e39dcf307516d3fac9dc647cde4">ripple::STValidation::getNodeID</a></div><div class="ttdeci">NodeID const & getNodeID() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00239">STValidation.h:239</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a02433013ff252904f1d57e495873409b"><div class="ttname"><a href="classripple_1_1STValidation.html#a02433013ff252904f1d57e495873409b">ripple::STValidation::mTrusted</a></div><div class="ttdeci">bool mTrusted</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00046">STValidation.h:46</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1PublicKey_html_ae0bcc607176a440ec63a86bae5767036"><div class="ttname"><a href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">ripple::PublicKey::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00123">PublicKey.h:123</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ad905dc8b70717f4492bebb6b7e189042a515d1dfe6cbb412fbbcece5bb23a0763"><div class="ttname"><a href="namespaceripple.html#ad905dc8b70717f4492bebb6b7e189042a515d1dfe6cbb412fbbcece5bb23a0763">ripple::soeREQUIRED</a></div><div class="ttdeci">@ soeREQUIRED</div><div class="ttdef"><b>Definition:</b> <a href="SOTemplate_8h_source.html#l00035">SOTemplate.h:35</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_af1235d307d6f464392a583d0dfaa3cc4"><div class="ttname"><a href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">ripple::STObject::setFieldVL</a></div><div class="ttdeci">void setFieldVL(SField const &field, Blob const &)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00668">STObject.cpp:668</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a09be758ae97b9e9e392aa2606cc0559f"><div class="ttname"><a href="classripple_1_1STObject.html#a09be758ae97b9e9e392aa2606cc0559f">ripple::STObject::getFieldVL</a></div><div class="ttdeci">Blob getFieldVL(SField const &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00568">STObject.cpp:568</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a8aa71319344367e6f6b04bf9ae320749"><div class="ttname"><a href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">ripple::STValidation::validationFormat</a></div><div class="ttdeci">static SOTemplate const & validationFormat()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00029">STValidation.cpp:29</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad6a6e4556b9cae5cbe91026f20541136"><div class="ttname"><a href="classripple_1_1STValidation.html#ad6a6e4556b9cae5cbe91026f20541136">ripple::STValidation::getSignature</a></div><div class="ttdeci">Blob getSignature() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00112">STValidation.cpp:112</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ab5eff466019cb7d0bdc5c6490f685a1f"><div class="ttname"><a href="classripple_1_1STValidation.html#ab5eff466019cb7d0bdc5c6490f685a1f">ripple::STValidation::copy</a></div><div class="ttdeci">STBase * copy(std::size_t n, void *buf) const override</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00029">STValidation.cpp:29</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_af1235d307d6f464392a583d0dfaa3cc4"><div class="ttname"><a href="classripple_1_1STObject.html#af1235d307d6f464392a583d0dfaa3cc4">ripple::STObject::setFieldVL</a></div><div class="ttdeci">void setFieldVL(SField const &field, Blob const &)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00695">STObject.cpp:695</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a09be758ae97b9e9e392aa2606cc0559f"><div class="ttname"><a href="classripple_1_1STObject.html#a09be758ae97b9e9e392aa2606cc0559f">ripple::STObject::getFieldVL</a></div><div class="ttdeci">Blob getFieldVL(SField const &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00595">STObject.cpp:595</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a8aa71319344367e6f6b04bf9ae320749"><div class="ttname"><a href="classripple_1_1STValidation.html#a8aa71319344367e6f6b04bf9ae320749">ripple::STValidation::validationFormat</a></div><div class="ttdeci">static SOTemplate const & validationFormat()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00041">STValidation.cpp:41</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad6a6e4556b9cae5cbe91026f20541136"><div class="ttname"><a href="classripple_1_1STValidation.html#ad6a6e4556b9cae5cbe91026f20541136">ripple::STValidation::getSignature</a></div><div class="ttdeci">Blob getSignature() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00124">STValidation.cpp:124</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a94e13759bd026c8ac305482e17f05adb"><div class="ttname"><a href="namespaceripple.html#a94e13759bd026c8ac305482e17f05adb">ripple::debugLog</a></div><div class="ttdeci">beast::Journal debugLog()</div><div class="ttdoc">Returns a debug journal.</div><div class="ttdef"><b>Definition:</b> <a href="Log_8cpp_source.html#l00452">Log.cpp:452</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a6b9786a473556f9d3730a17c09fa6c8f"><div class="ttname"><a href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f">ripple::STValidation::isTrusted</a></div><div class="ttdeci">bool isTrusted() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00182">STValidation.h:182</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a6b9786a473556f9d3730a17c09fa6c8f"><div class="ttname"><a href="classripple_1_1STValidation.html#a6b9786a473556f9d3730a17c09fa6c8f">ripple::STValidation::isTrusted</a></div><div class="ttdeci">bool isTrusted() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00245">STValidation.h:245</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html"><div class="ttname"><a href="classripple_1_1STValidation.html">ripple::STValidation</a></div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00044">STValidation.h:44</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a97202fcb263c9f938f4782d73626309c"><div class="ttname"><a href="classripple_1_1STValidation.html#a97202fcb263c9f938f4782d73626309c">ripple::STValidation::getSignerPublic</a></div><div class="ttdeci">PublicKey const & getSignerPublic() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00164">STValidation.h:164</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_abedda589258487931711c4efea516376"><div class="ttname"><a href="namespaceripple.html#abedda589258487931711c4efea516376">ripple::vfFullyCanonicalSig</a></div><div class="ttdeci">constexpr std::uint32_t vfFullyCanonicalSig</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00042">STValidation.h:42</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STBase_html_a7fb3256be27a1c525eca36470f25e131"><div class="ttname"><a href="classripple_1_1STBase.html#a7fb3256be27a1c525eca36470f25e131">ripple::STBase::emplace</a></div><div class="ttdeci">static STBase * emplace(std::size_t n, void *buf, T &&val)</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00149">STBase.h:149</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_adc1f8a2c9b47d7c08e671ad3473e9d3a"><div class="ttname"><a href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">ripple::publicKeyType</a></div><div class="ttdeci">std::optional< KeyType > publicKeyType(Slice const &slice)</div><div class="ttdoc">Returns the type of public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8cpp_source.html#l00203">PublicKey.cpp:203</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint< 160, detail::NodeIDTag ></a></div></div>
|
||||
<div class="ttc" id="atime_since_epoch_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch.html">std::chrono::time_point::time_since_epoch</a></div><div class="ttdeci">T time_since_epoch(T... args)</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SOTemplate_html"><div class="ttname"><a href="classripple_1_1SOTemplate.html">ripple::SOTemplate</a></div><div class="ttdoc">Defines the fields and their attributes within a STObject.</div><div class="ttdef"><b>Definition:</b> <a href="SOTemplate_8h_source.html#l00082">SOTemplate.h:82</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a2b834566e12309f92d12e7f11771ad82"><div class="ttname"><a href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">ripple::STValidation::valid_</a></div><div class="ttdeci">std::optional< bool > valid_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00222">STValidation.h:222</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a1332084b8404976678c7b10aa90fd373"><div class="ttname"><a href="classripple_1_1STValidation.html#a1332084b8404976678c7b10aa90fd373">ripple::STValidation::getSignerPublic</a></div><div class="ttdeci">PublicKey const & getSignerPublic() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00233">STValidation.h:233</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a2b834566e12309f92d12e7f11771ad82"><div class="ttname"><a href="classripple_1_1STValidation.html#a2b834566e12309f92d12e7f11771ad82">ripple::STValidation::valid_</a></div><div class="ttdeci">std::optional< bool > valid_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00050">STValidation.h:50</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1PublicKey_html"><div class="ttname"><a href="classripple_1_1PublicKey.html">ripple::PublicKey</a></div><div class="ttdoc">A public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00059">PublicKey.h:59</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a0429dc3d934c2cebe43fb8a723cf9eb3"><div class="ttname"><a href="namespaceripple.html#a0429dc3d934c2cebe43fb8a723cf9eb3">ripple::signDigest</a></div><div class="ttdeci">Buffer signDigest(PublicKey const &pk, SecretKey const &sk, uint256 const &digest)</div><div class="ttdoc">Generate a signature for a message digest.</div><div class="ttdef"><b>Definition:</b> <a href="SecretKey_8cpp_source.html#l00212">SecretKey.cpp:212</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8"><div class="ttname"><a href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">ripple::JsonOptions::none</a></div><div class="ttdeci">@ none</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a3ce9844ef8dc996ccd4091bb74136e98"><div class="ttname"><a href="classripple_1_1STValidation.html#a3ce9844ef8dc996ccd4091bb74136e98">ripple::STValidation::getSerialized</a></div><div class="ttdeci">Blob getSerialized() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00118">STValidation.cpp:118</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa0911213ec5399168a171156b130ba7a"><div class="ttname"><a href="classripple_1_1STValidation.html#aa0911213ec5399168a171156b130ba7a">ripple::STValidation::isFull</a></div><div class="ttdeci">bool isFull() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00106">STValidation.cpp:106</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a3ce9844ef8dc996ccd4091bb74136e98"><div class="ttname"><a href="classripple_1_1STValidation.html#a3ce9844ef8dc996ccd4091bb74136e98">ripple::STValidation::getSerialized</a></div><div class="ttdeci">Blob getSerialized() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00130">STValidation.cpp:130</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ae2ad4368ffbab07c0ceae3d7aabf0bb7"><div class="ttname"><a href="classripple_1_1STValidation.html#ae2ad4368ffbab07c0ceae3d7aabf0bb7">ripple::STValidation::move</a></div><div class="ttdeci">STBase * move(std::size_t n, void *buf) override</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00035">STValidation.cpp:35</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa0911213ec5399168a171156b130ba7a"><div class="ttname"><a href="classripple_1_1STValidation.html#aa0911213ec5399168a171156b130ba7a">ripple::STValidation::isFull</a></div><div class="ttdeci">bool isFull() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00118">STValidation.cpp:118</a></div></div>
|
||||
<div class="ttc" id="atime_point_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/time_point.html">std::chrono::time_point</a></div></div>
|
||||
<div class="ttc" id="acstdint_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/cstdint.html">cstdint</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a51b5760becdd7961df71e2add6e1a9f2"><div class="ttname"><a href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2">ripple::STValidation::setSeen</a></div><div class="ttdeci">void setSeen(NetClock::time_point s)</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00203">STValidation.h:203</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a51b5760becdd7961df71e2add6e1a9f2"><div class="ttname"><a href="classripple_1_1STValidation.html#a51b5760becdd7961df71e2add6e1a9f2">ripple::STValidation::setSeen</a></div><div class="ttdeci">void setSeen(NetClock::time_point s)</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00263">STValidation.h:263</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SerialIter_html"><div class="ttname"><a href="classripple_1_1SerialIter.html">ripple::SerialIter</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00310">Serializer.h:310</a></div></div>
|
||||
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1SecretKey_html"><div class="ttname"><a href="classripple_1_1SecretKey.html">ripple::SecretKey</a></div><div class="ttdoc">A secret key.</div><div class="ttdef"><b>Definition:</b> <a href="SecretKey_8h_source.html#l00036">SecretKey.h:36</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aeeef4bccb0e2c4d98a84cb82e433ce90"><div class="ttname"><a href="classripple_1_1STValidation.html#aeeef4bccb0e2c4d98a84cb82e433ce90">ripple::STValidation::getSignTime</a></div><div class="ttdeci">NetClock::time_point getSignTime() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00077">STValidation.cpp:77</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aeeef4bccb0e2c4d98a84cb82e433ce90"><div class="ttname"><a href="classripple_1_1STValidation.html#aeeef4bccb0e2c4d98a84cb82e433ce90">ripple::STValidation::getSignTime</a></div><div class="ttdeci">NetClock::time_point getSignTime() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00089">STValidation.cpp:89</a></div></div>
|
||||
<div class="ttc" id="amemory_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/memory.html">memory</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa15dc30f67e497a1f114fe465b049b69"><div class="ttname"><a href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">ripple::STValidation::seenTime_</a></div><div class="ttdeci">NetClock::time_point seenTime_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00231">STValidation.h:231</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad20750500ba56dcb7383ed963681148e"><div class="ttname"><a href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">ripple::STValidation::isValid</a></div><div class="ttdeci">bool isValid() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00089">STValidation.cpp:89</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a153034dfe796ffd1b80a49a84bf79a14"><div class="ttname"><a href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14">ripple::STValidation::setUntrusted</a></div><div class="ttdeci">void setUntrusted()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00197">STValidation.h:197</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa15dc30f67e497a1f114fe465b049b69"><div class="ttname"><a href="classripple_1_1STValidation.html#aa15dc30f67e497a1f114fe465b049b69">ripple::STValidation::seenTime_</a></div><div class="ttdeci">NetClock::time_point seenTime_</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00059">STValidation.h:59</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad20750500ba56dcb7383ed963681148e"><div class="ttname"><a href="classripple_1_1STValidation.html#ad20750500ba56dcb7383ed963681148e">ripple::STValidation::isValid</a></div><div class="ttdeci">bool isValid() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00101">STValidation.cpp:101</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a153034dfe796ffd1b80a49a84bf79a14"><div class="ttname"><a href="classripple_1_1STValidation.html#a153034dfe796ffd1b80a49a84bf79a14">ripple::STValidation::setUntrusted</a></div><div class="ttdeci">void setUntrusted()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00257">STValidation.h:257</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757"><div class="ttname"><a href="namespaceripple.html#a9de744cfdefe1132969eb982e57e4ddea82c2b7829b8129e5a2d53665ba4b4757">ripple::KeyType::secp256k1</a></div><div class="ttdeci">@ secp256k1</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html"><div class="ttname"><a href="classripple_1_1STObject.html">ripple::STObject</a></div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00051">STObject.h:51</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STBase_html"><div class="ttname"><a href="classripple_1_1STBase.html">ripple::STBase</a></div><div class="ttdoc">A type which can be exported to a well known binary format.</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00062">STBase.h:62</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STBase_html"><div class="ttname"><a href="classripple_1_1STBase.html">ripple::STBase</a></div><div class="ttdoc">A type which can be exported to a well known binary format.</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00066">STBase.h:66</a></div></div>
|
||||
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace.</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_aefd2f77338ce3c9a2fffc4f0b289b483"><div class="ttname"><a href="namespaceripple.html#aefd2f77338ce3c9a2fffc4f0b289b483">ripple::LogicError</a></div><div class="ttdeci">void LogicError(std::string const &how) noexcept</div><div class="ttdoc">Called when faulty logic causes a broken invariant.</div><div class="ttdef"><b>Definition:</b> <a href="contract_8cpp_source.html#l00048">contract.cpp:48</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_aaf5d617701ac3afc4ad6a13862459692"><div class="ttname"><a href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">ripple::STObject::isFieldPresent</a></div><div class="ttdeci">bool isFieldPresent(SField const &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00401">STObject.cpp:401</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_aaf5d617701ac3afc4ad6a13862459692"><div class="ttname"><a href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">ripple::STObject::isFieldPresent</a></div><div class="ttdeci">bool isFieldPresent(SField const &field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00428">STObject.cpp:428</a></div></div>
|
||||
<div class="ttc" id="acassert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/cassert.html">cassert</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa74bbce4c07518d33fc25b60f841e22e"><div class="ttname"><a href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">ripple::STValidation::setTrusted</a></div><div class="ttdeci">void setTrusted()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00191">STValidation.h:191</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa74bbce4c07518d33fc25b60f841e22e"><div class="ttname"><a href="classripple_1_1STValidation.html#aa74bbce4c07518d33fc25b60f841e22e">ripple::STValidation::setTrusted</a></div><div class="ttdeci">void setTrusted()</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00251">STValidation.h:251</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a61932ff70203e248b70ca3b215667435"><div class="ttname"><a href="namespaceripple.html#a61932ff70203e248b70ca3b215667435">ripple::sfSignature</a></div><div class="ttdeci">const SF_VL sfSignature</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a3ef77d68fa4c619198ce70529d643b0d"><div class="ttname"><a href="classripple_1_1STValidation.html#a3ef77d68fa4c619198ce70529d643b0d">ripple::STValidation::getSeenTime</a></div><div class="ttdeci">NetClock::time_point getSeenTime() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00083">STValidation.cpp:83</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a4fa764a09a6e972491891d939eb9d2f2"><div class="ttname"><a href="classripple_1_1STObject.html#a4fa764a09a6e972491891d939eb9d2f2">ripple::STObject::setFlag</a></div><div class="ttdeci">bool setFlag(std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00424">STObject.cpp:424</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad564bbe1e66d71fbb6b3d90d23e85946"><div class="ttname"><a href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">ripple::STValidation::getSigningHash</a></div><div class="ttdeci">uint256 getSigningHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00059">STValidation.cpp:59</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a3ef77d68fa4c619198ce70529d643b0d"><div class="ttname"><a href="classripple_1_1STValidation.html#a3ef77d68fa4c619198ce70529d643b0d">ripple::STValidation::getSeenTime</a></div><div class="ttdeci">NetClock::time_point getSeenTime() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00095">STValidation.cpp:95</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_a4fa764a09a6e972491891d939eb9d2f2"><div class="ttname"><a href="classripple_1_1STObject.html#a4fa764a09a6e972491891d939eb9d2f2">ripple::STObject::setFlag</a></div><div class="ttdeci">bool setFlag(std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00451">STObject.cpp:451</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_ad564bbe1e66d71fbb6b3d90d23e85946"><div class="ttname"><a href="classripple_1_1STValidation.html#ad564bbe1e66d71fbb6b3d90d23e85946">ripple::STValidation::getSigningHash</a></div><div class="ttdeci">uint256 getSigningHash() const</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8cpp_source.html#l00071">STValidation.cpp:71</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a75e201e47a68c45fb0bb79ee330a1386"><div class="ttname"><a href="namespaceripple.html#a75e201e47a68c45fb0bb79ee330a1386">ripple::sfValidation</a></div><div class="ttdeci">const SField sfValidation</div></div>
|
||||
<div class="ttc" id="aoptional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/optional.html">optional</a></div></div>
|
||||
<div class="ttc" id="asize_t_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac8808889ac69393dbfc99e57187e8de8"><div class="ttname"><a href="namespaceripple.html#ac8808889ac69393dbfc99e57187e8de8">ripple::vfFullValidation</a></div><div class="ttdeci">constexpr std::uint32_t vfFullValidation</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00039">STValidation.h:39</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a3c378199969a1776d68565d0083355fa"><div class="ttname"><a href="classripple_1_1STValidation.html#a3c378199969a1776d68565d0083355fa">ripple::STValidation::STValidation</a></div><div class="ttdeci">STValidation(NetClock::time_point signTime, PublicKey const &pk, SecretKey const &sk, NodeID const &nodeID, F &&f)</div><div class="ttdoc">Construct, sign and trust a new STValidation issued by this node.</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00095">STValidation.h:95</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_acc2ceb95cdb8fc8b2520aeceabf17553"><div class="ttname"><a href="classripple_1_1STObject.html#acc2ceb95cdb8fc8b2520aeceabf17553">ripple::STObject::getJson</a></div><div class="ttdeci">virtual Json::Value getJson(JsonOptions options) const override</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00698">STObject.cpp:698</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_aa2ae63254e56e19d43daeccdfa6bfb05"><div class="ttname"><a href="classripple_1_1STValidation.html#aa2ae63254e56e19d43daeccdfa6bfb05">ripple::STValidation::getNodeID</a></div><div class="ttdeci">NodeID const & getNodeID() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00170">STValidation.h:170</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_acd1aac04649d694a3524faf2ddebf843"><div class="ttname"><a href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">ripple::STObject::setFieldU32</a></div><div class="ttdeci">void setFieldU32(SField const &field, std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00632">STObject.cpp:632</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1NetClock_html"><div class="ttname"><a href="classripple_1_1NetClock.html">ripple::NetClock</a></div><div class="ttdoc">Clock for measuring the network time.</div><div class="ttdef"><b>Definition:</b> <a href="chrono_8h_source.html#l00048">chrono.h:48</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_acc2ceb95cdb8fc8b2520aeceabf17553"><div class="ttname"><a href="classripple_1_1STObject.html#acc2ceb95cdb8fc8b2520aeceabf17553">ripple::STObject::getJson</a></div><div class="ttdeci">Json::Value getJson(JsonOptions options) const override</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00725">STObject.cpp:725</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STObject_html_acd1aac04649d694a3524faf2ddebf843"><div class="ttname"><a href="classripple_1_1STObject.html#acd1aac04649d694a3524faf2ddebf843">ripple::STObject::setFieldU32</a></div><div class="ttdeci">void setFieldU32(SField const &field, std::uint32_t)</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00659">STObject.cpp:659</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1323d21bedd138bb1a2c17a5ac0ec500"><div class="ttname"><a href="namespaceripple.html#a1323d21bedd138bb1a2c17a5ac0ec500">ripple::sfSigningTime</a></div><div class="ttdeci">const SF_UINT32 sfSigningTime</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a2c47685a67b798f6aafb2e4f14faf240"><div class="ttname"><a href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">ripple::STValidation::STValidation</a></div><div class="ttdeci">STValidation(SerialIter &sit, LookupNodeID &&lookupNodeID, bool checkSignature)</div><div class="ttdoc">Construct a STValidation from a peer from serialized data.</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00061">STValidation.h:61</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1STValidation_html_a2c47685a67b798f6aafb2e4f14faf240"><div class="ttname"><a href="classripple_1_1STValidation.html#a2c47685a67b798f6aafb2e4f14faf240">ripple::STValidation::STValidation</a></div><div class="ttdeci">STValidation(SerialIter &sit, LookupNodeID &&lookupNodeID, bool checkSignature)</div><div class="ttdoc">Construct a STValidation from a peer from serialized data.</div><div class="ttdef"><b>Definition:</b> <a href="STValidation_8h_source.html#l00157">STValidation.h:157</a></div></div>
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
|
||||
Reference in New Issue
Block a user