finally fixed all indents in SSH ref
This commit is contained in:
		
							parent
							
								
									990ad2908f
								
							
						
					
					
						commit
						1c70a0d0d4
					
				@ -734,7 +734,7 @@ pre.rouge {
 | 
				
			|||||||
<h1>OpenSSH Key Structure Guide</h1>
 | 
					<h1>OpenSSH Key Structure Guide</h1>
 | 
				
			||||||
<div class="details">
 | 
					<div class="details">
 | 
				
			||||||
<span id="author" class="author">brent saner <bts@square-r00t.net>, https://r00t2.io</span><br>
 | 
					<span id="author" class="author">brent saner <bts@square-r00t.net>, https://r00t2.io</span><br>
 | 
				
			||||||
<span id="revdate">Last updated 2022-03-07 02:50:10 -0500</span>
 | 
					<span id="revdate">Last updated 2022-03-07 03:42:09 -0500</span>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div id="toc" class="toc2">
 | 
					<div id="toc" class="toc2">
 | 
				
			||||||
<div id="toctitle">Table of Contents</div>
 | 
					<div id="toctitle">Table of Contents</div>
 | 
				
			||||||
@ -778,18 +778,14 @@ pre.rouge {
 | 
				
			|||||||
<ul class="sectlevel5">
 | 
					<ul class="sectlevel5">
 | 
				
			||||||
<li><a href="#struct_rsa_crypt_legacy">3.1.2.2.1. Structure</a></li>
 | 
					<li><a href="#struct_rsa_crypt_legacy">3.1.2.2.1. Structure</a></li>
 | 
				
			||||||
<li><a href="#bytes_rsa_crypt_legacy">3.1.2.2.2. Example</a></li>
 | 
					<li><a href="#bytes_rsa_crypt_legacy">3.1.2.2.2. Example</a></li>
 | 
				
			||||||
 | 
					<li><a href="#struct_rsa_plain">3.1.2.2.3. Structure</a></li>
 | 
				
			||||||
 | 
					<li><a href="#bytes_rsa_plain">3.1.2.2.4. Example</a></li>
 | 
				
			||||||
</ul>
 | 
					</ul>
 | 
				
			||||||
</li>
 | 
					</li>
 | 
				
			||||||
<li><a href="#v1_plain">3.1.2.3. v1 (Plain)</a>
 | 
					<li><a href="#v1_encrypted">3.1.2.3. v1 (Encrypted)</a>
 | 
				
			||||||
<ul class="sectlevel5">
 | 
					<ul class="sectlevel5">
 | 
				
			||||||
<li><a href="#struct_rsa_plain">3.1.2.3.1. Structure</a></li>
 | 
					<li><a href="#struct_rsa_crypt">3.1.2.3.1. Structure</a></li>
 | 
				
			||||||
<li><a href="#bytes_rsa_plain">3.1.2.3.2. Example</a></li>
 | 
					<li><a href="#bytes_rsa_crypt">3.1.2.3.2. Example</a></li>
 | 
				
			||||||
</ul>
 | 
					 | 
				
			||||||
</li>
 | 
					 | 
				
			||||||
<li><a href="#v1_encrypted">3.1.2.4. v1 (Encrypted)</a>
 | 
					 | 
				
			||||||
<ul class="sectlevel5">
 | 
					 | 
				
			||||||
<li><a href="#struct_rsa_crypt">3.1.2.4.1. Structure</a></li>
 | 
					 | 
				
			||||||
<li><a href="#bytes_rsa_crypt">3.1.2.4.2. Example</a></li>
 | 
					 | 
				
			||||||
</ul>
 | 
					</ul>
 | 
				
			||||||
</li>
 | 
					</li>
 | 
				
			||||||
</ul>
 | 
					</ul>
 | 
				
			||||||
@ -807,7 +803,7 @@ pre.rouge {
 | 
				
			|||||||
<li><a href="#private_2">3.2.2. Private</a>
 | 
					<li><a href="#private_2">3.2.2. Private</a>
 | 
				
			||||||
<ul class="sectlevel4">
 | 
					<ul class="sectlevel4">
 | 
				
			||||||
<li><a href="#legacy_2">3.2.2.1. Legacy</a></li>
 | 
					<li><a href="#legacy_2">3.2.2.1. Legacy</a></li>
 | 
				
			||||||
<li><a href="#v1_plain_2">3.2.2.2. v1 (Plain)</a>
 | 
					<li><a href="#v1_plain">3.2.2.2. v1 (Plain)</a>
 | 
				
			||||||
<ul class="sectlevel5">
 | 
					<ul class="sectlevel5">
 | 
				
			||||||
<li><a href="#struct_ed25519_plain">3.2.2.2.1. Structure</a></li>
 | 
					<li><a href="#struct_ed25519_plain">3.2.2.2.1. Structure</a></li>
 | 
				
			||||||
<li><a href="#bytes_ed25519_plain">3.2.2.2.2. Example</a></li>
 | 
					<li><a href="#bytes_ed25519_plain">3.2.2.2.2. Example</a></li>
 | 
				
			||||||
@ -1017,7 +1013,7 @@ pre.rouge {
 | 
				
			|||||||
        dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
 | 
					        dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
 | 
				
			||||||
        5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
 | 
					        5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
 | 
				
			||||||
        bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
 | 
					        bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
 | 
				
			||||||
        07
 | 
					        07 (bytes)
 | 
				
			||||||
</pre></td></tr></tbody></table></code></pre>
 | 
					</pre></td></tr></tbody></table></code></pre>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
@ -1278,12 +1274,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="paragraph">
 | 
					<div class="paragraph">
 | 
				
			||||||
<p>See the <a href="#bytes_rsa_plain_legacy">plaintext example</a> for the decrypted (non-password-protected) version of this key.</p>
 | 
					<p>See the <a href="#bytes_rsa_plain_legacy">plaintext example</a> for the decrypted (non-password-protected) version of this key.
 | 
				
			||||||
 | 
					===== v1 (Plain)</p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
<div class="sect4">
 | 
					 | 
				
			||||||
<h5 id="v1_plain"><a class="link" href="#v1_plain">3.1.2.3. v1 (Plain)</a></h5>
 | 
					 | 
				
			||||||
<div class="admonitionblock tip">
 | 
					<div class="admonitionblock tip">
 | 
				
			||||||
<table>
 | 
					<table>
 | 
				
			||||||
<tr>
 | 
					<tr>
 | 
				
			||||||
@ -1298,8 +1291,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
 | 
				
			|||||||
</tr>
 | 
					</tr>
 | 
				
			||||||
</table>
 | 
					</table>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
<div class="sect5">
 | 
					<div class="sect5">
 | 
				
			||||||
<h6 id="struct_rsa_plain"><a class="link" href="#struct_rsa_plain">3.1.2.3.1. Structure</a></h6>
 | 
					<h6 id="struct_rsa_plain"><a class="link" href="#struct_rsa_plain">3.1.2.2.3. Structure</a></h6>
 | 
				
			||||||
<div class="listingblock">
 | 
					<div class="listingblock">
 | 
				
			||||||
<div class="content">
 | 
					<div class="content">
 | 
				
			||||||
<pre class="rouge highlight"><code data-lang="text"><table class="linenotable"><tbody><tr><td class="linenos gl"><pre class="lineno"> 1
 | 
					<pre class="rouge highlight"><code data-lang="text"><table class="linenotable"><tbody><tr><td class="linenos gl"><pre class="lineno"> 1
 | 
				
			||||||
@ -1398,7 +1392,7 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="sect5">
 | 
					<div class="sect5">
 | 
				
			||||||
<h6 id="bytes_rsa_plain"><a class="link" href="#bytes_rsa_plain">3.1.2.3.2. Example</a></h6>
 | 
					<h6 id="bytes_rsa_plain"><a class="link" href="#bytes_rsa_plain">3.1.2.2.4. Example</a></h6>
 | 
				
			||||||
<div class="paragraph">
 | 
					<div class="paragraph">
 | 
				
			||||||
<p>The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is <strong><code>test</code></strong>.</p>
 | 
					<p>The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is <strong><code>test</code></strong>.</p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
@ -1723,7 +1717,7 @@ hau1VzZBnp8AAAAYVGhpcyBpcyBhIGNvbW1lbnQgc3RyaW5nAQID
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="sect4">
 | 
					<div class="sect4">
 | 
				
			||||||
<h5 id="v1_encrypted"><a class="link" href="#v1_encrypted">3.1.2.4. v1 (Encrypted)</a></h5>
 | 
					<h5 id="v1_encrypted"><a class="link" href="#v1_encrypted">3.1.2.3. v1 (Encrypted)</a></h5>
 | 
				
			||||||
<div class="admonitionblock tip">
 | 
					<div class="admonitionblock tip">
 | 
				
			||||||
<table>
 | 
					<table>
 | 
				
			||||||
<tr>
 | 
					<tr>
 | 
				
			||||||
@ -1816,7 +1810,7 @@ Note that <strong>1.0.0</strong> has nothing to do with SSH connections themselv
 | 
				
			|||||||
</table>
 | 
					</table>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="sect5">
 | 
					<div class="sect5">
 | 
				
			||||||
<h6 id="struct_rsa_crypt"><a class="link" href="#struct_rsa_crypt">3.1.2.4.1. Structure</a></h6>
 | 
					<h6 id="struct_rsa_crypt"><a class="link" href="#struct_rsa_crypt">3.1.2.3.1. Structure</a></h6>
 | 
				
			||||||
<div class="listingblock">
 | 
					<div class="listingblock">
 | 
				
			||||||
<div class="content">
 | 
					<div class="content">
 | 
				
			||||||
<pre class="rouge highlight"><code data-lang="text"><table class="linenotable"><tbody><tr><td class="linenos gl"><pre class="lineno"> 1
 | 
					<pre class="rouge highlight"><code data-lang="text"><table class="linenotable"><tbody><tr><td class="linenos gl"><pre class="lineno"> 1
 | 
				
			||||||
@ -1873,7 +1867,7 @@ Note that <strong>1.0.0</strong> has nothing to do with SSH connections themselv
 | 
				
			|||||||
<p><strong>Chunk 4.0:</strong> This is technically currently unused; upstream hardcodes to 1 (left zero-padded 0x01).</p>
 | 
					<p><strong>Chunk 4.0:</strong> This is technically currently unused; upstream hardcodes to 1 (left zero-padded 0x01).</p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="paragraph">
 | 
					<div class="paragraph">
 | 
				
			||||||
<p><strong>Chunk 4.0.1.0:</strong> When decrypted, this is equivalent to the <a href="#struct_rsa_plain">plaintext</a> <strong>4.0.1.0</strong> to <strong>4.0.1.6</strong>. It uses a padded size appropriate to the encryption cipher used.</p>
 | 
					<p><strong>Chunk 4.0.1.0:</strong> When decrypted, this is equivalent to the <a href="#struct_rsa_plain">plaintext</a> <strong>4.0.1.0</strong> to <strong>4.0.1.10</strong>. It uses a padded size appropriate to the encryption cipher used.</p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</td>
 | 
					</td>
 | 
				
			||||||
</tr>
 | 
					</tr>
 | 
				
			||||||
@ -1881,7 +1875,7 @@ Note that <strong>1.0.0</strong> has nothing to do with SSH connections themselv
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="sect5">
 | 
					<div class="sect5">
 | 
				
			||||||
<h6 id="bytes_rsa_crypt"><a class="link" href="#bytes_rsa_crypt">3.1.2.4.2. Example</a></h6>
 | 
					<h6 id="bytes_rsa_crypt"><a class="link" href="#bytes_rsa_crypt">3.1.2.3.2. Example</a></h6>
 | 
				
			||||||
<div class="paragraph">
 | 
					<div class="paragraph">
 | 
				
			||||||
<p>The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is <strong><code>test</code></strong>.</p>
 | 
					<p>The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is <strong><code>test</code></strong>.</p>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
@ -2325,7 +2319,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
 | 
				
			|||||||
              34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
 | 
					              34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
 | 
				
			||||||
              53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
 | 
					              53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
 | 
				
			||||||
              2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
 | 
					              2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
 | 
				
			||||||
	      137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98
 | 
					              137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes)
 | 
				
			||||||
4.0.1.7 00000101 (257)
 | 
					4.0.1.7 00000101 (257)
 | 
				
			||||||
    4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
 | 
					    4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
 | 
				
			||||||
              56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
 | 
					              56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
 | 
				
			||||||
@ -2335,7 +2329,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
 | 
				
			|||||||
              cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
 | 
					              cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
 | 
				
			||||||
              ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
 | 
					              ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
 | 
				
			||||||
              292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
 | 
					              292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
 | 
				
			||||||
	      99
 | 
					              99 (bytes)
 | 
				
			||||||
4.0.1.8 00000101 (257)
 | 
					4.0.1.8 00000101 (257)
 | 
				
			||||||
    4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
 | 
					    4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
 | 
				
			||||||
              b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
 | 
					              b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
 | 
				
			||||||
@ -2462,7 +2456,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="sect4">
 | 
					<div class="sect4">
 | 
				
			||||||
<h5 id="v1_plain_2"><a class="link" href="#v1_plain_2">3.2.2.2. v1 (Plain)</a></h5>
 | 
					<h5 id="v1_plain"><a class="link" href="#v1_plain">3.2.2.2. v1 (Plain)</a></h5>
 | 
				
			||||||
<div class="admonitionblock tip">
 | 
					<div class="admonitionblock tip">
 | 
				
			||||||
<table>
 | 
					<table>
 | 
				
			||||||
<tr>
 | 
					<tr>
 | 
				
			||||||
@ -2963,7 +2957,7 @@ dCXGDaRlL924VVCYUytRvu7ilZ+dtc9aCQUFJyDF3iXyxN2H68x7teo9e8vqzGtzLkw5KV
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div id="footer">
 | 
					<div id="footer">
 | 
				
			||||||
<div id="footer-text">
 | 
					<div id="footer-text">
 | 
				
			||||||
Last updated 2022-03-07 01:59:28 -0500
 | 
					Last updated 2022-03-07 03:36:15 -0500
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
=== ED25519
 | 
					=== ED25519
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ED25519footnote:[https://datatracker.ietf.org/doc/html/rfc8709] is a relatively somewhat new OpenSSH key algorithm. It has numerous benefits over e.g. RSA, including:
 | 
					ED25519footnote:[https://datatracker.ietf.org/doc/html/rfc8709] is a relatively somewhat new OpenSSH key algorithm. It has numerous benefits over e.g. RSA, including:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== Legacy
 | 
					===== Legacy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[NOTE]
 | 
					[NOTE]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
==== Private
 | 
					==== Private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include::legacy/main.adoc[]
 | 
					include::legacy/main.adoc[]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== v1 (Encrypted)
 | 
					===== v1 (Encrypted)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[TIP]
 | 
					[TIP]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,2 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
include::plain.adoc[]
 | 
					include::plain.adoc[]
 | 
				
			||||||
include::encrypted.adoc[]
 | 
					include::encrypted.adoc[]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== v1 (Plain)
 | 
					===== v1 (Plain)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[TIP]
 | 
					[TIP]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
==== Public
 | 
					==== Public
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===== Structure
 | 
					===== Structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Public keys are stored in the following structure:
 | 
					Public keys are stored in the following structure:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Key Structure
 | 
					.Key Structure
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== Legacy (Encrypted)
 | 
					===== Legacy (Encrypted)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[id=struct_rsa_crypt_legacy]
 | 
					[id=struct_rsa_crypt_legacy]
 | 
				
			||||||
====== Structure
 | 
					====== Structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Legacy private keys are encoded in standard RSA PEM format (https://datatracker.ietf.org/doc/html/rfc7468[RFC 7468^] § https://datatracker.ietf.org/doc/html/rfc7468#section-11[11^], https://datatracker.ietf.org/doc/html/rfc3447#appendix-A[APPENDIX-A^]).
 | 
					Legacy private keys are encoded in standard RSA PEM format (https://datatracker.ietf.org/doc/html/rfc7468[RFC 7468^] § https://datatracker.ietf.org/doc/html/rfc7468#section-11[11^], https://datatracker.ietf.org/doc/html/rfc3447#appendix-A[APPENDIX-A^]).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The `Proc-Type` field is defined in https://datatracker.ietf.org/doc/html/rfc1421.html#section-4.6.1.1[RFC 1421 § 4.6.1.1^]. +
 | 
					The `Proc-Type` field is defined in https://datatracker.ietf.org/doc/html/rfc1421.html#section-4.6.1.1[RFC 1421 § 4.6.1.1^]. +
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,2 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
include::plain.adoc[]
 | 
					include::plain.adoc[]
 | 
				
			||||||
include::encrypted.adoc[]
 | 
					include::encrypted.adoc[]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== Legacy (Plain)
 | 
					===== Legacy (Plain)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[id=struct_rsa_plain_legacy]
 | 
					[id=struct_rsa_plain_legacy]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== v1 (Encrypted)
 | 
					===== v1 (Encrypted)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[TIP]
 | 
					[TIP]
 | 
				
			||||||
@ -66,7 +65,7 @@ The author recommends using `aes256-ctr`. It is currently the upstream default.
 | 
				
			|||||||
====
 | 
					====
 | 
				
			||||||
*Chunk 4.0:* This is technically currently unused; upstream hardcodes to 1 (left zero-padded 0x01).
 | 
					*Chunk 4.0:* This is technically currently unused; upstream hardcodes to 1 (left zero-padded 0x01).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*Chunk 4.0.1.0:* When decrypted, this is equivalent to the <<struct_rsa_plain,plaintext>> *4.0.1.0* to *4.0.1.6*. It uses a padded size appropriate to the encryption cipher used.
 | 
					*Chunk 4.0.1.0:* When decrypted, this is equivalent to the <<struct_rsa_plain,plaintext>> *4.0.1.0* to *4.0.1.10*. It uses a padded size appropriate to the encryption cipher used.
 | 
				
			||||||
====
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[id=bytes_rsa_crypt]
 | 
					[id=bytes_rsa_crypt]
 | 
				
			||||||
@ -286,7 +285,7 @@ When *4.0.1.0* is decrypted, it yields:
 | 
				
			|||||||
              34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
 | 
					              34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
 | 
				
			||||||
              53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
 | 
					              53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
 | 
				
			||||||
              2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
 | 
					              2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
 | 
				
			||||||
	      137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98
 | 
					              137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes)
 | 
				
			||||||
4.0.1.7 00000101 (257)
 | 
					4.0.1.7 00000101 (257)
 | 
				
			||||||
    4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
 | 
					    4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
 | 
				
			||||||
              56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
 | 
					              56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
 | 
				
			||||||
@ -296,7 +295,7 @@ When *4.0.1.0* is decrypted, it yields:
 | 
				
			|||||||
              cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
 | 
					              cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
 | 
				
			||||||
              ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
 | 
					              ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
 | 
				
			||||||
              292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
 | 
					              292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
 | 
				
			||||||
	      99
 | 
					              99 (bytes)
 | 
				
			||||||
4.0.1.8 00000101 (257)
 | 
					4.0.1.8 00000101 (257)
 | 
				
			||||||
    4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
 | 
					    4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
 | 
				
			||||||
              b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
 | 
					              b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,2 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
include::plain.adoc[]
 | 
					include::plain.adoc[]
 | 
				
			||||||
include::encrypted.adoc[]
 | 
					include::encrypted.adoc[]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
===== v1 (Plain)
 | 
					===== v1 (Plain)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[TIP]
 | 
					[TIP]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
==== Public
 | 
					==== Public
 | 
				
			||||||
 | 
					
 | 
				
			||||||
===== Structure
 | 
					===== Structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Public keys are stored in the following structure:
 | 
					Public keys are stored in the following structure:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.Key Structure
 | 
					.Key Structure
 | 
				
			||||||
@ -46,5 +47,5 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3zsBGAc4qEvDJJMuaMOuZAGaBLLFDaRk/MLK5/dSv
 | 
				
			|||||||
        dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
 | 
					        dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
 | 
				
			||||||
        5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
 | 
					        5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
 | 
				
			||||||
        bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
 | 
					        bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
 | 
				
			||||||
        07
 | 
					        07 (bytes)
 | 
				
			||||||
----
 | 
					----
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@ func ReadSizeBytes(data interface{}, pack bool) (allocated *bytes.Reader, err er
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var u uint32
 | 
						var u uint32
 | 
				
			||||||
	var b []byte
 | 
						var b []byte
 | 
				
			||||||
	var sizer []byte = make([]byte, 4)
 | 
						var sizer = make([]byte, 4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch t := data.(type) {
 | 
						switch t := data.(type) {
 | 
				
			||||||
	case string:
 | 
						case string:
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@ package kdf
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// kdfNames is a collection of valid KDF name strings.
 | 
						// kdfNames is a collection of valid KDF name strings.
 | 
				
			||||||
	kdfNames []string = []string{
 | 
						kdfNames = []string{
 | 
				
			||||||
		"none",
 | 
							"none",
 | 
				
			||||||
		"bcrypt",
 | 
							"bcrypt",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								kdf/errs.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								kdf/errs.go
									
									
									
									
									
								
							@ -5,10 +5,10 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	ErrBadData    error = errors.New("unable to cast data into buffer for KDF")
 | 
						ErrBadData    = errors.New("unable to cast data into buffer for KDF")
 | 
				
			||||||
	ErrNoKeyLen   error = errors.New("no key length configured or bad key length for KDF")
 | 
						ErrNoKeyLen   = errors.New("no key length configured or bad key length for KDF")
 | 
				
			||||||
	ErrNoRounds   error = errors.New("no rounds number configured or bad number of rounds for KDF")
 | 
						ErrNoRounds   = errors.New("no rounds number configured or bad number of rounds for KDF")
 | 
				
			||||||
	ErrNoSalt     error = errors.New("no salt configured or bad salt value for KDF")
 | 
						ErrNoSalt     = errors.New("no salt configured or bad salt value for KDF")
 | 
				
			||||||
	ErrNoSecret   error = errors.New("no secret configured or bad secret value for KDF")
 | 
						ErrNoSecret   = errors.New("no secret configured or bad secret value for KDF")
 | 
				
			||||||
	ErrUnknownKdf error = errors.New("unable to determine matching KDF")
 | 
						ErrUnknownKdf = errors.New("unable to determine matching KDF")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
@ -116,7 +116,7 @@ func (b *BcryptPbkdf) Name() (name string) {
 | 
				
			|||||||
func (b *BcryptPbkdf) NameBytes() (name []byte) {
 | 
					func (b *BcryptPbkdf) NameBytes() (name []byte) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var nb []byte
 | 
						var nb []byte
 | 
				
			||||||
	var s string = b.Name()
 | 
						var s = b.Name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nb = []byte(s)
 | 
						nb = []byte(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -130,9 +130,9 @@ func (b *BcryptPbkdf) NameBytes() (name []byte) {
 | 
				
			|||||||
// PackedBytes returns 3.0 and recursed.
 | 
					// PackedBytes returns 3.0 and recursed.
 | 
				
			||||||
func (b *BcryptPbkdf) PackedBytes() (buf *bytes.Reader, err error) {
 | 
					func (b *BcryptPbkdf) PackedBytes() (buf *bytes.Reader, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var rounds []byte = make([]byte, 4)
 | 
						var rounds = make([]byte, 4)
 | 
				
			||||||
	var packer *bytes.Reader
 | 
						var packer *bytes.Reader
 | 
				
			||||||
	var w *bytes.Buffer = new(bytes.Buffer)
 | 
						var w = new(bytes.Buffer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 3.0.0.0 and 3.0.0.0.0
 | 
						// 3.0.0.0 and 3.0.0.0.0
 | 
				
			||||||
	if packer, err = internal.ReadSizeBytes(b.salt, true); err != nil {
 | 
						if packer, err = internal.ReadSizeBytes(b.salt, true); err != nil {
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ func (n *Null) Name() (name string) {
 | 
				
			|||||||
func (n *Null) NameBytes() (name []byte) {
 | 
					func (n *Null) NameBytes() (name []byte) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var b []byte
 | 
						var b []byte
 | 
				
			||||||
	var s string = n.Name()
 | 
						var s = n.Name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	b = []byte(s)
 | 
						b = []byte(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user