Files
xrpl-dev-portal/content/_img-sources/key-derivation-secp256k1.uxf
2019-10-11 12:44:49 -07:00

518 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
<zoom_level>10</zoom_level>
<element>
<id>UMLObject</id>
<coordinates>
<x>50</x>
<y>70</y>
<w>140</w>
<h>70</h>
</coordinates>
<panel_attributes>Passphrase
--
(Optional)
Any string
lt=.</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>180</x>
<y>90</y>
<w>180</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=.&gt;
SHA-512, keep
first 16 bytes</panel_attributes>
<additional_attributes>10.0;20.0;160.0;20.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>340</x>
<y>70</y>
<w>140</w>
<h>70</h>
</coordinates>
<panel_attributes>Seed
--
(16 bytes)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>50</x>
<y>280</y>
<w>150</w>
<h>70</h>
</coordinates>
<panel_attributes>Root Private Key
--
(32 bytes)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>110</x>
<y>130</y>
<w>460</w>
<h>170</h>
</coordinates>
<panel_attributes>lt=&lt;-
SHA-512Half</panel_attributes>
<additional_attributes>10.0;150.0;10.0;110.0;440.0;110.0;440.0;10.0;400.0;10.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>330</x>
<y>280</y>
<w>150</w>
<h>70</h>
</coordinates>
<panel_attributes>Root Public Key
--
(33 bytes
compressed)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>190</x>
<y>300</y>
<w>160</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=-&gt;
Public Key
Derivation</panel_attributes>
<additional_attributes>10.0;20.0;140.0;20.0</additional_attributes>
</element>
<element>
<id>Text</id>
<coordinates>
<x>50</x>
<y>30</y>
<w>280</w>
<h>30</h>
</coordinates>
<panel_attributes>*secp256k1 Key Derivation*
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLSyncBarVertical</id>
<coordinates>
<x>500</x>
<y>110</y>
<w>20</w>
<h>70</h>
</coordinates>
<panel_attributes>template=txt
title=titletext
bg=red</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>370</x>
<y>150</y>
<w>110</w>
<h>70</h>
</coordinates>
<panel_attributes>Root Key
Sequence
--
(4 bytes;
default 0)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>120</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=-&gt;</panel_attributes>
<additional_attributes>10.0;10.0;40.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>150</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=-&gt;</panel_attributes>
<additional_attributes>10.0;10.0;40.0;10.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>370</x>
<y>440</y>
<w>110</w>
<h>70</h>
</coordinates>
<panel_attributes>Int Key
Sequence
--
(4 bytes;
default 0)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>370</x>
<y>360</y>
<w>110</w>
<h>70</h>
</coordinates>
<panel_attributes>Family
Number
--
(4 bytes;
all 0's)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLNote</id>
<coordinates>
<x>140</x>
<y>170</y>
<w>210</w>
<h>50</h>
</coordinates>
<panel_attributes>Increment the key sequence and try again if the SHA-512Half doesn't make a valid private key.
bg=yellow
fontsize=10
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLNote</id>
<coordinates>
<x>150</x>
<y>460</y>
<w>210</w>
<h>50</h>
</coordinates>
<panel_attributes>Increment the key sequence and try again if the SHA-512Half doesn't make a valid private key.
bg=yellow
fontsize=10
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>140</x>
<y>380</y>
<w>410</w>
<h>220</h>
</coordinates>
<panel_attributes>lt=&lt;-
SHA-512Half</panel_attributes>
<additional_attributes>10.0;200.0;10.0;160.0;390.0;160.0;390.0;10.0;370.0;10.0</additional_attributes>
</element>
<element>
<id>UMLSyncBarVertical</id>
<coordinates>
<x>500</x>
<y>360</y>
<w>20</w>
<h>80</h>
</coordinates>
<panel_attributes>template=txt
title=titletext
bg=red</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>320</y>
<w>60</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=-&gt;</panel_attributes>
<additional_attributes>10.0;10.0;20.0;10.0;20.0;60.0;40.0;60.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>390</y>
<w>60</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=-&gt;</panel_attributes>
<additional_attributes>10.0;10.0;40.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>410</y>
<w>60</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=-&gt;</panel_attributes>
<additional_attributes>10.0;50.0;20.0;50.0;20.0;10.0;40.0;10.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>80</x>
<y>580</y>
<w>150</w>
<h>80</h>
</coordinates>
<panel_attributes>Intermediate
Private Key
--
(32 bytes)
</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>330</x>
<y>580</y>
<w>150</w>
<h>80</h>
</coordinates>
<panel_attributes>Intermediate
Public Key
--
(33 bytes
compressed)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>220</x>
<y>610</y>
<w>130</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=-&gt;
Public Key
Derivation</panel_attributes>
<additional_attributes>10.0;20.0;110.0;20.0</additional_attributes>
</element>
<element>
<id>UMLState</id>
<coordinates>
<x>660</x>
<y>330</y>
<w>140</w>
<h>40</h>
</coordinates>
<panel_attributes>Elliptic Curve
Point Add
type=sender</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>290</y>
<w>210</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>190.0;50.0;150.0;50.0;150.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>350</y>
<w>210</w>
<h>280</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>190.0;10.0;150.0;10.0;150.0;260.0;10.0;260.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>800</x>
<y>320</y>
<w>150</w>
<h>70</h>
</coordinates>
<panel_attributes>Master Public Key
--
(33 bytes
compressed)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>UMLState</id>
<coordinates>
<x>150</x>
<y>700</y>
<w>160</w>
<h>40</h>
</coordinates>
<panel_attributes>Add, Modulo
Group Order
type=sender</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>100</x>
<y>650</y>
<w>70</w>
<h>80</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>50.0;60.0;10.0;60.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>50</x>
<y>340</y>
<w>120</w>
<h>410</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>100.0;390.0;10.0;390.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>UMLObject</id>
<coordinates>
<x>330</x>
<y>690</y>
<w>150</w>
<h>70</h>
</coordinates>
<panel_attributes>Master Private Key
--
(32 bytes)</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>300</x>
<y>710</y>
<w>50</w>
<h>30</h>
</coordinates>
<panel_attributes>lt=&lt;-</panel_attributes>
<additional_attributes>30.0;10.0;10.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>380</y>
<w>410</w>
<h>380</h>
</coordinates>
<panel_attributes>lt=.&gt;
(Public key derivation
yields the same result.)</panel_attributes>
<additional_attributes>10.0;350.0;390.0;350.0;390.0;10.0</additional_attributes>
</element>
<element>
<id>UMLNote</id>
<coordinates>
<x>590</x>
<y>230</y>
<w>210</w>
<h>50</h>
</coordinates>
<panel_attributes>Validators use the root key pair.
bg=green
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>200</x>
<y>240</y>
<w>410</w>
<h>60</h>
</coordinates>
<panel_attributes>lt=&lt;..
fg=#25A768
transparency=0</panel_attributes>
<additional_attributes>10.0;40.0;390.0;10.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>480</x>
<y>260</y>
<w>130</w>
<h>50</h>
</coordinates>
<panel_attributes>lt=&lt;..
fg=#25A768
transparency=0</panel_attributes>
<additional_attributes>10.0;30.0;110.0;10.0</additional_attributes>
</element>
<element>
<id>UMLNote</id>
<coordinates>
<x>630</x>
<y>630</y>
<w>210</w>
<h>50</h>
</coordinates>
<panel_attributes>Accounts use the master key pair.
bg=green
style=wordwrap</panel_attributes>
<additional_attributes/>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>760</x>
<y>380</y>
<w>80</w>
<h>270</h>
</coordinates>
<panel_attributes>lt=&lt;..
fg=#25A768
transparency=0</panel_attributes>
<additional_attributes>60.0;10.0;10.0;250.0</additional_attributes>
</element>
<element>
<id>Relation</id>
<coordinates>
<x>470</x>
<y>660</y>
<w>180</w>
<h>70</h>
</coordinates>
<panel_attributes>lt=&lt;..
fg=#25A768
transparency=0</panel_attributes>
<additional_attributes>10.0;50.0;160.0;10.0</additional_attributes>
</element>
</diagram>