finally fixed all indents in SSH ref

This commit is contained in:
brent s. 2022-03-07 03:42:09 -05:00
parent 990ad2908f
commit 1c70a0d0d4
Signed by: bts
GPG Key ID: 8C004C2F93481F6B
20 changed files with 420 additions and 435 deletions

View File

@ -734,7 +734,7 @@ pre.rouge {
<h1>OpenSSH Key Structure Guide</h1>
<div class="details">
<span id="author" class="author">brent saner &lt;bts@square-r00t.net&gt;, 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 id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
@ -778,18 +778,14 @@ pre.rouge {
<ul class="sectlevel5">
<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="#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>
</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">
<li><a href="#struct_rsa_plain">3.1.2.3.1. Structure</a></li>
<li><a href="#bytes_rsa_plain">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>
<li><a href="#struct_rsa_crypt">3.1.2.3.1. Structure</a></li>
<li><a href="#bytes_rsa_crypt">3.1.2.3.2. Example</a></li>
</ul>
</li>
</ul>
@ -807,7 +803,7 @@ pre.rouge {
<li><a href="#private_2">3.2.2. Private</a>
<ul class="sectlevel4">
<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">
<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>
@ -1017,7 +1013,7 @@ pre.rouge {
dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
07
07 (bytes)
</pre></td></tr></tbody></table></code></pre>
</div>
</div>
@ -1278,12 +1274,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
</div>
</div>
<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 class="sect4">
<h5 id="v1_plain"><a class="link" href="#v1_plain">3.1.2.3. v1 (Plain)</a></h5>
<div class="admonitionblock tip">
<table>
<tr>
@ -1298,8 +1291,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
</tr>
</table>
</div>
</div>
<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="content">
<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 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">
<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>
@ -1723,7 +1717,7 @@ hau1VzZBnp8AAAAYVGhpcyBpcyBhIGNvbW1lbnQgc3RyaW5nAQID
</div>
</div>
<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">
<table>
<tr>
@ -1816,7 +1810,7 @@ Note that <strong>1.0.0</strong> has nothing to do with SSH connections themselv
</table>
</div>
<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="content">
<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>
</div>
<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>
</td>
</tr>
@ -1881,7 +1875,7 @@ Note that <strong>1.0.0</strong> has nothing to do with SSH connections themselv
</div>
</div>
<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">
<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>
@ -2325,7 +2319,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98
137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes)
4.0.1.7 00000101 (257)
4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
@ -2335,7 +2329,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
99
99 (bytes)
4.0.1.8 00000101 (257)
4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f
@ -2462,7 +2456,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
</div>
</div>
<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">
<table>
<tr>
@ -2963,7 +2957,7 @@ dCXGDaRlL924VVCYUytRvu7ilZ+dtc9aCQUFJyDF3iXyxN2H68x7teo9e8vqzGtzLkw5KV
</div>
<div id="footer">
<div id="footer-text">
Last updated 2022-03-07 01:59:28 -0500
Last updated 2022-03-07 03:36:15 -0500
</div>
</div>
</body>

View File

@ -1,4 +1,3 @@

=== 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:

View File

@ -1,4 +1,3 @@

===== Legacy

[NOTE]

View File

@ -1,4 +1,3 @@

==== Private

include::legacy/main.adoc[]

View File

@ -1,4 +1,3 @@

===== v1 (Encrypted)

[TIP]

View File

@ -1,3 +1,2 @@

include::plain.adoc[]
include::encrypted.adoc[]

View File

@ -1,4 +1,3 @@

===== v1 (Plain)

[TIP]

View File

@ -1,6 +1,7 @@

==== Public

===== Structure

Public keys are stored in the following structure:

.Key Structure

View File

@ -1,8 +1,8 @@

===== Legacy (Encrypted)

[id=struct_rsa_crypt_legacy]
====== 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^]).

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^]. +

View File

@ -1,3 +1,2 @@

include::plain.adoc[]
include::encrypted.adoc[]

View File

@ -1,4 +1,3 @@

===== Legacy (Plain)

[id=struct_rsa_plain_legacy]

View File

@ -1,4 +1,3 @@

===== v1 (Encrypted)

[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.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]
@ -286,7 +285,7 @@ When *4.0.1.0* is decrypted, it yields:
34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305
53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7
2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a
137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98
137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes)
4.0.1.7 00000101 (257)
4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0
56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7
@ -296,7 +295,7 @@ When *4.0.1.0* is decrypted, it yields:
cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71
ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a
292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe
99
99 (bytes)
4.0.1.8 00000101 (257)
4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2
b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f

View File

@ -1,3 +1,2 @@

include::plain.adoc[]
include::encrypted.adoc[]

View File

@ -1,4 +1,3 @@

===== v1 (Plain)

[TIP]

View File

@ -1,6 +1,7 @@

==== Public

===== Structure

Public keys are stored in the following structure:

.Key Structure
@ -46,5 +47,5 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3zsBGAc4qEvDJJMuaMOuZAGaBLLFDaRk/MLK5/dSv
dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074
5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2
bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f
07
07 (bytes)
----

View File

@ -24,7 +24,7 @@ func ReadSizeBytes(data interface{}, pack bool) (allocated *bytes.Reader, err er

var u uint32
var b []byte
var sizer []byte = make([]byte, 4)
var sizer = make([]byte, 4)

switch t := data.(type) {
case string:

View File

@ -2,7 +2,7 @@ package kdf

var (
// kdfNames is a collection of valid KDF name strings.
kdfNames []string = []string{
kdfNames = []string{
"none",
"bcrypt",
}

View File

@ -5,10 +5,10 @@ import (
)

var (
ErrBadData error = errors.New("unable to cast data into buffer for KDF")
ErrNoKeyLen error = 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")
ErrNoSalt error = errors.New("no salt configured or bad salt value for KDF")
ErrNoSecret error = errors.New("no secret configured or bad secret value for KDF")
ErrUnknownKdf error = errors.New("unable to determine matching KDF")
ErrBadData = errors.New("unable to cast data into buffer for KDF")
ErrNoKeyLen = errors.New("no key length configured or bad key length for KDF")
ErrNoRounds = errors.New("no rounds number configured or bad number of rounds for KDF")
ErrNoSalt = errors.New("no salt configured or bad salt value for KDF")
ErrNoSecret = errors.New("no secret configured or bad secret value for KDF")
ErrUnknownKdf = errors.New("unable to determine matching KDF")
)

View File

@ -116,7 +116,7 @@ func (b *BcryptPbkdf) Name() (name string) {
func (b *BcryptPbkdf) NameBytes() (name []byte) {

var nb []byte
var s string = b.Name()
var s = b.Name()

nb = []byte(s)

@ -130,9 +130,9 @@ func (b *BcryptPbkdf) NameBytes() (name []byte) {
// PackedBytes returns 3.0 and recursed.
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 w *bytes.Buffer = new(bytes.Buffer)
var w = new(bytes.Buffer)

// 3.0.0.0 and 3.0.0.0.0
if packer, err = internal.ReadSizeBytes(b.salt, true); err != nil {

View File

@ -54,7 +54,7 @@ func (n *Null) Name() (name string) {
func (n *Null) NameBytes() (name []byte) {

var b []byte
var s string = n.Name()
var s = n.Name()

b = []byte(s)