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>
|
||||
<div class="details">
|
||||
<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 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>
|
||||
|
@ -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:
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
===== Legacy
|
||||
|
||||
[NOTE]
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
==== Private
|
||||
|
||||
include::legacy/main.adoc[]
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
===== v1 (Encrypted)
|
||||
|
||||
[TIP]
|
||||
|
@ -1,3 +1,2 @@
|
||||
|
||||
include::plain.adoc[]
|
||||
include::encrypted.adoc[]
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
===== v1 (Plain)
|
||||
|
||||
[TIP]
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
==== Public
|
||||
|
||||
===== Structure
|
||||
|
||||
Public keys are stored in the following structure:
|
||||
|
||||
.Key Structure
|
||||
|
@ -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^]. +
|
||||
|
@ -1,3 +1,2 @@
|
||||
|
||||
include::plain.adoc[]
|
||||
include::encrypted.adoc[]
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
===== Legacy (Plain)
|
||||
|
||||
[id=struct_rsa_plain_legacy]
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,2 @@
|
||||
|
||||
include::plain.adoc[]
|
||||
include::encrypted.adoc[]
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
===== v1 (Plain)
|
||||
|
||||
[TIP]
|
||||
|
@ -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)
|
||||
----
|
||||
|
@ -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:
|
||||
|
@ -2,7 +2,7 @@ package kdf
|
||||
|
||||
var (
|
||||
// kdfNames is a collection of valid KDF name strings.
|
||||
kdfNames []string = []string{
|
||||
kdfNames = []string{
|
||||
"none",
|
||||
"bcrypt",
|
||||
}
|
||||
|
12
kdf/errs.go
12
kdf/errs.go
@ -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")
|
||||
)
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user