diff --git a/_ref/KEY_GUIDE.html b/_ref/KEY_GUIDE.html index 2ce0045..f28b404 100644 --- a/_ref/KEY_GUIDE.html +++ b/_ref/KEY_GUIDE.html @@ -734,7 +734,7 @@ pre.rouge {

OpenSSH Key Structure Guide

brent saner <bts@square-r00t.net>, https://r00t2.io
-Last updated 2022-03-07 02:50:10 -0500 +Last updated 2022-03-07 03:42:09 -0500
Table of Contents
@@ -778,18 +778,14 @@ pre.rouge { -
  • 3.1.2.3. v1 (Plain) +
  • 3.1.2.3. v1 (Encrypted) -
  • -
  • 3.1.2.4. v1 (Encrypted) -
  • @@ -807,7 +803,7 @@ pre.rouge {
  • 3.2.2. Private
  • @@ -1278,12 +1274,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
    -

    See the plaintext example for the decrypted (non-password-protected) version of this key.

    +

    See the plaintext example for the decrypted (non-password-protected) version of this key. +===== v1 (Plain)

    - - -
    -
    3.1.2.3. v1 (Plain)
    @@ -1298,8 +1291,9 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
    +
    -
    3.1.2.3.1. Structure
    +
    3.1.2.2.3. Structure
     1
    @@ -1338,18 +1332,18 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
     34
     
    0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes)
     1.0 uint32 allocator for 1.0.0 (4 bytes)
    -	1.0.0 cipher name string (ASCII bytes)
    +    1.0.0 cipher name string (ASCII bytes)
     2.0 uint32 allocator for 2.0.0 (4 bytes)
    -	2.0.0 KDF name string (ASCII bytes)
    +    2.0.0 KDF name string (ASCII bytes)
     3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) (ALWAYS 0 for unencrypted keys, so no following substructure)
     4.0 uint32 counter for # of keys (4 bytes)
    -	4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    -		4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    -			4.0.0.0.0 public key #n keytype string (ASCII bytes)
    -		4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    -			4.0.0.1.0 public exponent ('e')
    -		4.0.0.2 uint32 allocator for 4.0.0.2.0 (4 bytes)
    -			4.0.0.2.0 modulus ('n')
    +    4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    +        4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    +            4.0.0.0.0 public key #n keytype string (ASCII bytes)
    +        4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    +            4.0.0.1.0 public exponent ('e')
    +        4.0.0.2 uint32 allocator for 4.0.0.2.0 (4 bytes)
    +            4.0.0.2.0 modulus ('n')
         4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes)
             4.0.1.0 uint32 decryption "checksum" #1 (should match 4.0.1.1) (4 bytes)
             4.0.1.1 uint32 decryption "checksum" #2 (should match 4.0.1.0) (4 bytes)
    @@ -1398,7 +1392,7 @@ ftSfkGNUzTzPFbF5iEukTvKm42a7F/I/ExMVgpN/eQxJ7+m5TOgja0KC1h5fCN4L
     
     
     
    -
    3.1.2.3.2. Example
    +
    3.1.2.2.4. Example

    The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is test.

    @@ -1723,7 +1717,7 @@ hau1VzZBnp8AAAAYVGhpcyBpcyBhIGNvbW1lbnQgc3RyaW5nAQID
    -
    3.1.2.4. v1 (Encrypted)
    +
    3.1.2.3. v1 (Encrypted)
    @@ -1816,7 +1810,7 @@ Note that 1.0.0 has nothing to do with SSH connections themselv
    -
    3.1.2.4.1. Structure
    +
    3.1.2.3.1. Structure
    
    @@ -1881,7 +1875,7 @@ Note that 1.0.0 has nothing to do with SSH connections themselv
     
    -
    3.1.2.4.2. Example
    +
    3.1.2.3.2. Example

    The following example, being encrypted, is protected with a passphrase. The passphrase used in this example key is test.

    @@ -2094,92 +2088,92 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 2.0.0 626372797074 ("bcrypt") 3.0 00000018 (24) 3.0.0 00000010 (16) - 3.0.0.0 07d4b07c0b128348916488008d6e130b (bytes) + 3.0.0.0 07d4b07c0b128348916488008d6e130b (bytes) 3.0.1 00000064 (100) 4.0 00000001 (1) 4.0.0 00000217 (535) - 4.0.0.0 00000007 (7) - 4.0.0.0.0 7373682d727361 ("ssh-rsa") - 4.0.0.1 00000003 (3) - 4.0.0.1.0 010001 (65537) - 4.0.0.2 00000201 (513) - 4.0.0.2.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af - cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 - 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 - 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 - b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 - d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 - 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 - 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af - 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 - f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf - 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a - 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 - f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e - dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 - 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 - bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f - 07 (bytes) + 4.0.0.0 00000007 (7) + 4.0.0.0.0 7373682d727361 ("ssh-rsa") + 4.0.0.1 00000003 (3) + 4.0.0.1.0 010001 (65537) + 4.0.0.2 00000201 (513) + 4.0.0.2.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af + cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 + 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 + 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 + b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 + d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 + 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 + 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af + 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 + f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf + 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a + 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 + f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e + dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 + 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 + bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f + 07 (bytes) 4.0.1 00000750 (1872) - 4.0.1.0 966e2ce435242fef09787f6e8d93a563092e3f3bc986b44198c81e8049c5c944 - 419effc0521401dc1ef5bc0e4d6aedeb7d05880bc3f731698b9bceeceae08e5e - 05f79f4d22de953c899c3271850e80e804f9b1a79bcec31bba11c08db60f9bd2 - 206bc3d7bfef74895e4f4e3720649f924544f4a2cea5b9dfb9cc0a2bd8f3ba70 - f4ba2e7f42960465c9eade118630f9c832fe84ef548529979d0d6ea079f9d5c4 - 0e396b098fc509448d26de3cb484b0334afacaba371b52c37c120a5623170c1d - 0a39348a151c9fb8aab1049f52cf0c08c77144af314259a90848f3dc62e5831f - ac08720b1c813506f1db1e7940def52dc46c97d6363cda0ff7e2258e2637d2e0 - 9f26099bbfeac78819198b78374d2424537fe549a2ab3dddaf5f7fdb739c3921 - 064b04f6ffcfeb5544db533179038e11d0cc622992bc6d0600584d4068a2891d - c748c9c16be32c2a08e96caa2ddec4ddd1a2ab3b018a0b0f166a15ac870a30c8 - 0cc897dbf15af7e8c2915b3616f237a6646e43c665f7569a5ed1850ad8cd0540 - 06d389568db55393e780e752ace8f06b70f1e99d86b9445d9c1a7a6476bcbf48 - 4400a58e5a5a73d2c20d630a9985bbf4c691abb61ee4515aa64a727e7bac4a5e - d7bb5f767c7dcf0035904231283d92445863702a995e792bde1d5ac7dd624898 - 7b9fe4b0a6f1837ce4fbaa032ff4671a86be8c7e4f9be3718212ead0a6f1b429 - 88863bf80af17a9814f1ffbed6c81e7f59de5b8c71b9f571fc556cc56aee22be - 1b57d48f8ca76a379847c67d0ceb43ead101355e541a57c254ae814f058a0361 - 92f49d96236c88428e5f54dafefd1a5b8ca12d85cf3833d38d816c6e0e205143 - f33e353c471abc978d28d1ac89a724d5aab3e7c48015c5cd3a6f31c258cef131 - 2574e692c6e495a2a8efbee785a9fe1c727379ea1fdc5b492a83a4aff7b3945a - ef503a95dc52b21474172bb54054b106342f2bde6bc38ad166c1a5c6d88685b8 - 067f529741b36991352d5df1291b9e3c746a71e2bda796fdddac29d0e2f3fadf - d1f0fd33da75bc6151d3ee27f6199e76c3b9e872fb63b54ad78b0fbe2be84f10 - d7e48339c6e63364507074addc5a2bd8c4be5848c291bdb2740d3aa325c35039 - 6ce28e086eecdd6256f48fb7947b84e85759b1c7e6dd91223e3f828e4253a7ec - 6d987ad61bd2179c229a20e8d97e6158cb0be734227698b4695c784c463cac3e - a7d538056d5062a895f8ae64549bd58484a60363ab81bc43e6fde0ee12477051 - b53c970f063df2f0ff2fd655b7f81029be545cc841f7321d31304eeba210fdf8 - fdad7e1bc8accd4d990c058b30817e85e2c5695ab92c1e129ac7471f338fdd39 - 4ede16071450c19061e07c135cbe87f01260b36206cbc169c85b9dda26fb3dff - 5e7d68fd51a573402dbcc1dc7f49a1cb9c34100b9b3d0bb8b8639c69c7d47490 - ab83c8918ad03ae62eee43165e452f854d8d4132186c21f742ee4a3cc614515a - dc7c08940838538503f5c4d5781e984cad93cf7a8d17a68d678b3466afbae362 - 055d5b6edb0007b59231d3040dbfec8b9782b39c391116f2037e218bfaba46c5 - 2c56180aeef241d918f214b0b6480b7382875ad9dace4496c3682ea2a697b5fe - 43b107d93e1976b2540dbfda2ae223bc1a84d65e0d6702513b8cc442a25fb983 - aadfa492d09e3dfd991f9f47470bb73369f634dd50dab26d129c3ba096ad7971 - 1f0ee4419c1226eb8da42674b2cf77e8f4a3f76ce9e9e249b4d1fcc778ef318d - bd6778556c0f9878ebe6e8324916d78280f23f7e3921b29b42bba6ca2d780399 - ca4ed3cb2d036c9bed80b235809198422135e2d842c8f53a4dd59fe0bed889d4 - 7840164024b1f668cc566978d431eb2a07a20ed06e575551e1b030db1350e94c - 929a028a5dc25340e3434f2250e3f49de171bb850875d280050e495544ba71b7 - 1ea36c2937ad6593e2b5bca28bc38e59cea91f26cd1ca8aa4bd9fbc1c605ae46 - ae3f559b3a6ebf89ff569ff365c3cba4b4b91f665ffda397188fe23ea456c802 - c47a8062844d404fab41a0fa83fd0dd66e4db51115f026197f4c89a1bf28246b - a9966ca2973b0f3afa43154896a56bfe2153dfaaa3ccd2ab011b7f91470cbdc0 - 4af7cfe1703de7040f4d7777b068769d4035377cc7664f406b5d69356aa33045 - c4334a1e2ce602ea2b1ec666352d14b5996dad451a4cb886c66143dc25f8f1bc - f0ed253febc9733432eada35a6afc982749fa0ec680a881db06171ea37fa8338 - 1ec90a6afa2f269d9da07c8f302161e26c9a4c21c2560ced811bdf6be402d36a - e2f11f884351241e779a22f8b69a8e3eeaa676e7150143a66b3a92d4dace9f4f - 9b61e3f7e0aa7656c818ecfb53303457d51e74e7ec89cf038c9a73f3834383e8 - 22d2f50c3a7775aa0e63b127a214db7490e488f7ee91782a90de32f4ab22601a - f7b190fcc6a292e42e2f8b69caace994b127e9f91532b6d8c3b7ce08f991d269 - 220bceeed7d4e6151523e63e41bcd27154fd3a7f7370c04b1258715413ec5f17 - f51baa99e8e5cd59ac7af17daecd0e8926002403ab87a422e422a6fb1186b5bb - 7db25faffedad247fd741b2461aa3b9612342142af10decefe00c00b37a667ad - 7665fbc4085b5312bda690166245a93b (AES256-CTR encrypted block) (bytes) + 4.0.1.0 966e2ce435242fef09787f6e8d93a563092e3f3bc986b44198c81e8049c5c944 + 419effc0521401dc1ef5bc0e4d6aedeb7d05880bc3f731698b9bceeceae08e5e + 05f79f4d22de953c899c3271850e80e804f9b1a79bcec31bba11c08db60f9bd2 + 206bc3d7bfef74895e4f4e3720649f924544f4a2cea5b9dfb9cc0a2bd8f3ba70 + f4ba2e7f42960465c9eade118630f9c832fe84ef548529979d0d6ea079f9d5c4 + 0e396b098fc509448d26de3cb484b0334afacaba371b52c37c120a5623170c1d + 0a39348a151c9fb8aab1049f52cf0c08c77144af314259a90848f3dc62e5831f + ac08720b1c813506f1db1e7940def52dc46c97d6363cda0ff7e2258e2637d2e0 + 9f26099bbfeac78819198b78374d2424537fe549a2ab3dddaf5f7fdb739c3921 + 064b04f6ffcfeb5544db533179038e11d0cc622992bc6d0600584d4068a2891d + c748c9c16be32c2a08e96caa2ddec4ddd1a2ab3b018a0b0f166a15ac870a30c8 + 0cc897dbf15af7e8c2915b3616f237a6646e43c665f7569a5ed1850ad8cd0540 + 06d389568db55393e780e752ace8f06b70f1e99d86b9445d9c1a7a6476bcbf48 + 4400a58e5a5a73d2c20d630a9985bbf4c691abb61ee4515aa64a727e7bac4a5e + d7bb5f767c7dcf0035904231283d92445863702a995e792bde1d5ac7dd624898 + 7b9fe4b0a6f1837ce4fbaa032ff4671a86be8c7e4f9be3718212ead0a6f1b429 + 88863bf80af17a9814f1ffbed6c81e7f59de5b8c71b9f571fc556cc56aee22be + 1b57d48f8ca76a379847c67d0ceb43ead101355e541a57c254ae814f058a0361 + 92f49d96236c88428e5f54dafefd1a5b8ca12d85cf3833d38d816c6e0e205143 + f33e353c471abc978d28d1ac89a724d5aab3e7c48015c5cd3a6f31c258cef131 + 2574e692c6e495a2a8efbee785a9fe1c727379ea1fdc5b492a83a4aff7b3945a + ef503a95dc52b21474172bb54054b106342f2bde6bc38ad166c1a5c6d88685b8 + 067f529741b36991352d5df1291b9e3c746a71e2bda796fdddac29d0e2f3fadf + d1f0fd33da75bc6151d3ee27f6199e76c3b9e872fb63b54ad78b0fbe2be84f10 + d7e48339c6e63364507074addc5a2bd8c4be5848c291bdb2740d3aa325c35039 + 6ce28e086eecdd6256f48fb7947b84e85759b1c7e6dd91223e3f828e4253a7ec + 6d987ad61bd2179c229a20e8d97e6158cb0be734227698b4695c784c463cac3e + a7d538056d5062a895f8ae64549bd58484a60363ab81bc43e6fde0ee12477051 + b53c970f063df2f0ff2fd655b7f81029be545cc841f7321d31304eeba210fdf8 + fdad7e1bc8accd4d990c058b30817e85e2c5695ab92c1e129ac7471f338fdd39 + 4ede16071450c19061e07c135cbe87f01260b36206cbc169c85b9dda26fb3dff + 5e7d68fd51a573402dbcc1dc7f49a1cb9c34100b9b3d0bb8b8639c69c7d47490 + ab83c8918ad03ae62eee43165e452f854d8d4132186c21f742ee4a3cc614515a + dc7c08940838538503f5c4d5781e984cad93cf7a8d17a68d678b3466afbae362 + 055d5b6edb0007b59231d3040dbfec8b9782b39c391116f2037e218bfaba46c5 + 2c56180aeef241d918f214b0b6480b7382875ad9dace4496c3682ea2a697b5fe + 43b107d93e1976b2540dbfda2ae223bc1a84d65e0d6702513b8cc442a25fb983 + aadfa492d09e3dfd991f9f47470bb73369f634dd50dab26d129c3ba096ad7971 + 1f0ee4419c1226eb8da42674b2cf77e8f4a3f76ce9e9e249b4d1fcc778ef318d + bd6778556c0f9878ebe6e8324916d78280f23f7e3921b29b42bba6ca2d780399 + ca4ed3cb2d036c9bed80b235809198422135e2d842c8f53a4dd59fe0bed889d4 + 7840164024b1f668cc566978d431eb2a07a20ed06e575551e1b030db1350e94c + 929a028a5dc25340e3434f2250e3f49de171bb850875d280050e495544ba71b7 + 1ea36c2937ad6593e2b5bca28bc38e59cea91f26cd1ca8aa4bd9fbc1c605ae46 + ae3f559b3a6ebf89ff569ff365c3cba4b4b91f665ffda397188fe23ea456c802 + c47a8062844d404fab41a0fa83fd0dd66e4db51115f026197f4c89a1bf28246b + a9966ca2973b0f3afa43154896a56bfe2153dfaaa3ccd2ab011b7f91470cbdc0 + 4af7cfe1703de7040f4d7777b068769d4035377cc7664f406b5d69356aa33045 + c4334a1e2ce602ea2b1ec666352d14b5996dad451a4cb886c66143dc25f8f1bc + f0ed253febc9733432eada35a6afc982749fa0ec680a881db06171ea37fa8338 + 1ec90a6afa2f269d9da07c8f302161e26c9a4c21c2560ced811bdf6be402d36a + e2f11f884351241e779a22f8b69a8e3eeaa676e7150143a66b3a92d4dace9f4f + 9b61e3f7e0aa7656c818ecfb53303457d51e74e7ec89cf038c9a73f3834383e8 + 22d2f50c3a7775aa0e63b127a214db7490e488f7ee91782a90de32f4ab22601a + f7b190fcc6a292e42e2f8b69caace994b127e9f91532b6d8c3b7ce08f991d269 + 220bceeed7d4e6151523e63e41bcd27154fd3a7f7370c04b1258715413ec5f17 + f51baa99e8e5cd59ac7af17daecd0e8926002403ab87a422e422a6fb1186b5bb + 7db25faffedad247fd741b2461aa3b9612342142af10decefe00c00b37a667ad + 7665fbc4085b5312bda690166245a93b (AES256-CTR encrypted block) (bytes)
     1
    @@ -1873,7 +1867,7 @@ Note that 1.0.0 has nothing to do with SSH connections themselv
     

    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 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 plaintext 4.0.1.0 to 4.0.1.10. It uses a padded size appropriate to the encryption cipher used.

    @@ -2282,70 +2276,70 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 4.0.1.2.0 7373682d727361 ("ssh-rsa") 4.0.1.3 00000201 (513) 4.0.1.3.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af - cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 - 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 - 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 - b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 - d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 - 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 - 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af - 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 - f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf - 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a - 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 - f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e - dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 - 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 - bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f - 07 (bytes) + cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 + 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 + 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 + b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 + d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 + 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 + 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af + 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 + f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf + 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a + 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 + f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e + dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 + 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 + bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f + 07 (bytes) 4.0.1.4 00000003 (3) 4.0.1.4.0 010001 (65537) 4.0.1.5 00000200 (512) 4.0.1.5.0 499f2c705e04bfe17a4476d27e5e1ddfd8c335f63ac22f748754f02183440f6d - a93f3f86429261663e0bddfda69d4c2f705d0bbe7dd31a8941bf5672e29844a1 - e0670970c6f2a98b76f85b26fafedb59c49786b8df7eaeeb86171fd579fe8df0 - eadd2536a4244a0332d5a9ad3eb8340c930464153e82b4ffad4f647a7ba808e3 - 854450f806b60e0b670fc99cb6b58786497d4c199e7750ee5089934eef25f465 - 12394955c487e10744ebdb9a00951c8095b024d4ce75f1da3146b5b3447169f5 - 9e23d40685438bc7bcad1173927a389a0903ba111a46809d123b3432197cca8f - c0c27816fbf215c2b7c584b94f37c9ed8a8e815942effdcf54757268afe58fd7 - 00cdcf6a98a20950617b0624aa835d95e27d7afcdee70c397ca1b6aa04735e6d - 5c5e01bfff2174cf562d36842624490e12ca8142595d52567494f38b2124012c - acacb2564e21c845eb94f5d6ebf6f39066e1fa04b318174e6f9994823ba4d9ef - 2c28b37cb3ea05fa3cad7200898394276835523e4e416054f23db0eb732211d3 - a11ea551390ae8d58d69e14664e0e20f2bf0ccd24d260b832a94144f5801ea7c - dbb2436f21ba2dbaecbcd573f24c5e0d43fd26b4ae6764e138ddaf4775ac0163 - e45727c10027f716cbe3cc70fff73441bb2538e5426a1a5638b448a7bde96804 - 1ec2184ef67b0da60070297cd73deeefebd1951611c7a776c956e18e5f163a21 (bytes) + a93f3f86429261663e0bddfda69d4c2f705d0bbe7dd31a8941bf5672e29844a1 + e0670970c6f2a98b76f85b26fafedb59c49786b8df7eaeeb86171fd579fe8df0 + eadd2536a4244a0332d5a9ad3eb8340c930464153e82b4ffad4f647a7ba808e3 + 854450f806b60e0b670fc99cb6b58786497d4c199e7750ee5089934eef25f465 + 12394955c487e10744ebdb9a00951c8095b024d4ce75f1da3146b5b3447169f5 + 9e23d40685438bc7bcad1173927a389a0903ba111a46809d123b3432197cca8f + c0c27816fbf215c2b7c584b94f37c9ed8a8e815942effdcf54757268afe58fd7 + 00cdcf6a98a20950617b0624aa835d95e27d7afcdee70c397ca1b6aa04735e6d + 5c5e01bfff2174cf562d36842624490e12ca8142595d52567494f38b2124012c + acacb2564e21c845eb94f5d6ebf6f39066e1fa04b318174e6f9994823ba4d9ef + 2c28b37cb3ea05fa3cad7200898394276835523e4e416054f23db0eb732211d3 + a11ea551390ae8d58d69e14664e0e20f2bf0ccd24d260b832a94144f5801ea7c + dbb2436f21ba2dbaecbcd573f24c5e0d43fd26b4ae6764e138ddaf4775ac0163 + e45727c10027f716cbe3cc70fff73441bb2538e5426a1a5638b448a7bde96804 + 1ec2184ef67b0da60070297cd73deeefebd1951611c7a776c956e18e5f163a21 (bytes) 4.0.1.6 00000100 (256) 4.0.1.6.0 0ae2e1cf2455a0d82272e6a42bbba83eb765496e5a33e13b8c94756d8c32f7d7 - 505fd997bdd5ec08c59bf8d1d659d1df02bec669ebb5aaaf5db1ec70ce2f2a6b - 3a17b7b1fce3adc6203c2905cd652d7622065dd011ae33894467c6dca3643952 - b0caedff9bc78ac40408074027566ee4c4751ad3ff452a2781af8b5c2c9bf09b - 34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305 - 53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7 - 2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a - 137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 + 505fd997bdd5ec08c59bf8d1d659d1df02bec669ebb5aaaf5db1ec70ce2f2a6b + 3a17b7b1fce3adc6203c2905cd652d7622065dd011ae33894467c6dca3643952 + b0caedff9bc78ac40408074027566ee4c4751ad3ff452a2781af8b5c2c9bf09b + 34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305 + 53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7 + 2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a + 137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes) 4.0.1.7 00000101 (257) 4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0 - 56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7 - 7511e0c261c344600a84cce78e8cf493e492844cb82c42ab6d1246a53e5cf50a - d4759c2a5c09d53b1c5c3b449328eea01434d6e537b3a513928dfaddf0a72728 - 23899b8d795220cb3344ab8d0e846e1e40ffdfb5c719262c2b527a890a51faab - cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71 - ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a - 292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe - 99 + 56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7 + 7511e0c261c344600a84cce78e8cf493e492844cb82c42ab6d1246a53e5cf50a + d4759c2a5c09d53b1c5c3b449328eea01434d6e537b3a513928dfaddf0a72728 + 23899b8d795220cb3344ab8d0e846e1e40ffdfb5c719262c2b527a890a51faab + cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71 + ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a + 292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe + 99 (bytes) 4.0.1.8 00000101 (257) 4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2 - b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f - 9c6f355479053e3e3d3a6ecce13a016908298ca3f8b628d2111749a3627628eb - 05844f546795a5067d39b1d304e19cc6fc1be00a6164ea33e4abbc87f5683227 - 1d825c868c5ccda3775b037711e99436f96c53f3780b985084e1d84a458c687a - b0938a09bf6f9b3ffec41ed02fd5b27572c7d180039e405a559b62fc08f804b1 - 9f043dba4c6f7565b1c72759f4b932d4f93d4f41da91b1b146f29854a1008341 - e4760bdd4987097ec4a6551ab96e099a04a38d6a893b533db185abb55736419e - 9f (bytes) + b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f + 9c6f355479053e3e3d3a6ecce13a016908298ca3f8b628d2111749a3627628eb + 05844f546795a5067d39b1d304e19cc6fc1be00a6164ea33e4abbc87f5683227 + 1d825c868c5ccda3775b037711e99436f96c53f3780b985084e1d84a458c687a + b0938a09bf6f9b3ffec41ed02fd5b27572c7d180039e405a559b62fc08f804b1 + 9f043dba4c6f7565b1c72759f4b932d4f93d4f41da91b1b146f29854a1008341 + e4760bdd4987097ec4a6551ab96e099a04a38d6a893b533db185abb55736419e + 9f (bytes) 4.0.1.9 00000018 (24) 4.0.1.9.0 54686973206973206120636f6d6d656e7420737472696e67 ("This is a comment string") 4.0.1.10 010203 ([1 2 3], 3 bytes) @@ -2409,9 +2403,9 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 3 4
    0.0 uint32 allocator for 0.0.0 (4 bytes)
    -	0.0.0 Public key key type string (ASCII bytes)
    +    0.0.0 Public key key type string (ASCII bytes)
     1.0 uint32 allocator for 1.0.0 (4 bytes)
    -	1.0.0 Public key payload (bytes)
    +    1.0.0 Public key payload (bytes)
     
    @@ -2434,9 +2428,9 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 3 4
    0.0 0000000b (11)
    -	0.0.0 7373682d65643235353139 ("ssh-ed25519")
    +    0.0.0 7373682d65643235353139 ("ssh-ed25519")
     1.0 00000020 (32)
    -	1.0.0 44388bc973684dd66857131122bff212c983bba6b162c4e97cd11f73c39d97b0 (bytes)
    +    1.0.0 44388bc973684dd66857131122bff212c983bba6b162c4e97cd11f73c39d97b0 (bytes)
     
    @@ -2462,7 +2456,7 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs=
    -
    3.2.2.2. v1 (Plain)
    +
    3.2.2.2. v1 (Plain)
    @@ -2507,17 +2501,17 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 24
    0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes)
     1.0 uint32 allocator for 1.0.0 (4 bytes)
    -	1.0.0 cipher name string (ASCII bytes)
    +    1.0.0 cipher name string (ASCII bytes)
     2.0 uint32 allocator for 2.0.0 (4 bytes)
    -	2.0.0 KDF name string (ASCII bytes)
    +    2.0.0 KDF name string (ASCII bytes)
     3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) (ALWAYS 0 for unencrypted keys, so no following substructure)
     4.0 uint32 counter for # of keys (4 bytes)
    -	4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    -		4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    -			4.0.0.0.0 public key #n keytype string (ASCII bytes)
    -		4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    -			4.0.0.1.0 public key #n payload (bytes)
    -	4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes)
    +    4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    +        4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    +            4.0.0.0.0 public key #n keytype string (ASCII bytes)
    +        4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    +            4.0.0.1.0 public key #n payload (bytes)
    +    4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes)
             4.0.1.0 uint32 decryption "checksum" #1 (should match 4.0.1.1) (4 bytes)
             4.0.1.1 uint32 decryption "checksum" #2 (should match 4.0.1.0) (4 bytes)
             4.0.1.2 Copy of 4.0.0.0; allocator for 4.0.1.2.0 (4 bytes)
    @@ -2760,21 +2754,21 @@ Note that 1.0.0 has nothing to do with SSH connections themselv
     17
     
    0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes)
     1.0 uint32 allocator for 1.0.0 (4 bytes)
    -	1.0.0 cipher name string (ASCII bytes)
    +    1.0.0 cipher name string (ASCII bytes)
     2.0 uint32 allocator for 2.0.0 (4 bytes)
    -	2.0.0 KDF name string (ASCII bytes)
    +    2.0.0 KDF name string (ASCII bytes)
     3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes)
    -	3.0.0 uint32 allocator for 3.0.0.0 (4 bytes)
    -		3.0.0.0 Salt/IV (bytes)
    -	3.0.1 uint32 for number of rounds/"work factor" (4 bytes)
    +    3.0.0 uint32 allocator for 3.0.0.0 (4 bytes)
    +        3.0.0.0 Salt/IV (bytes)
    +    3.0.1 uint32 for number of rounds/"work factor" (4 bytes)
     4.0 uint32 counter for # of keys (4 bytes)
    -	4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    -		4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    -			4.0.0.0.0 public key #n keytype string (ASCII bytes)
    -		4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    -			4.0.0.1.0 public key #n payload (bytes)
    -	4.0.1 uint32 allocator for encrypted private key structure blob #n (4.0.1.0) (4 bytes)
    -		4.0.1.0 <ENCRYPTED BLOB>
    +    4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes)
    +        4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes)
    +            4.0.0.0.0 public key #n keytype string (ASCII bytes)
    +        4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes)
    +            4.0.0.1.0 public key #n payload (bytes)
    +    4.0.1 uint32 allocator for encrypted private key structure blob #n (4.0.1.0) (4 bytes)
    +        4.0.1.0 <ENCRYPTED BLOB>
     
    @@ -2855,31 +2849,31 @@ dCXGDaRlL924VVCYUytRvu7ilZ+dtc9aCQUFJyDF3iXyxN2H68x7teo9e8vqzGtzLkw5KV 27
    0.0 6f70656e7373682d6b65792d763100 ("openssh-key-v1" + 0x00)
     1.0 0000000a (10)
    -	1.0.0 6165733235362d637472 ("aes256-ctr")
    +    1.0.0 6165733235362d637472 ("aes256-ctr")
     2.0 00000006 (6)
    -	2.0.0 626372797074 ("bcrypt")
    +    2.0.0 626372797074 ("bcrypt")
     3.0 00000018 (24)
    -	3.0.0 00000010 (16)
    -		3.0.0.0 50132f72900d68e0a31f9d75b6f0a5bc (bytes)
    -	3.0.1 00000064 (100)
    +    3.0.0 00000010 (16)
    +        3.0.0.0 50132f72900d68e0a31f9d75b6f0a5bc (bytes)
    +    3.0.1 00000064 (100)
     4.0 00000001 (1)
    -	4.0.0 00000033 (51)
    -		4.0.0.0 0000000b (11)
    -			4.0.0.0.0 7373682d65643235353139 ("ssh-ed25519")
    -		4.0.0.1 00000020 (32)
    -			4.0.0.1.0 bfa2031aa5463113e40e16896af503c5
    -					  299ead76b09cb63846f41cc4de1740f6 (bytes)
    -	4.0.1 000000a0 (160)
    -		4.0.1.0 c49777cd0d1a7d37db77a1814991278f
    -			    8ce99d572e2c666b93b99867425c60da
    -			    4652fddb8555098532b51beeee2959f9
    -			    db5cf5a0905052720c5de25f2c4dd87e
    -			    bcc7bb5ea3d7bcbeacc6b732e4c39295
    -			    d9991a97ef3f0838f8a9bfd43edb3403
    -			    189649088f6cfb78946fb914e358ac6a
    -			    bc64691072f5f2788534d9d42d7f406b
    -			    c5090b30df23cb7dd8c5cb938e41facd
    -			    6e38e8845b8160bff840598118d447c2 (AES256-CTR encrypted block) (bytes)
    +    4.0.0 00000033 (51)
    +        4.0.0.0 0000000b (11)
    +            4.0.0.0.0 7373682d65643235353139 ("ssh-ed25519")
    +        4.0.0.1 00000020 (32)
    +            4.0.0.1.0 bfa2031aa5463113e40e16896af503c5
    +                      299ead76b09cb63846f41cc4de1740f6 (bytes)
    +    4.0.1 000000a0 (160)
    +        4.0.1.0 c49777cd0d1a7d37db77a1814991278f
    +                8ce99d572e2c666b93b99867425c60da
    +                4652fddb8555098532b51beeee2959f9
    +                db5cf5a0905052720c5de25f2c4dd87e
    +                bcc7bb5ea3d7bcbeacc6b732e4c39295
    +                d9991a97ef3f0838f8a9bfd43edb3403
    +                189649088f6cfb78946fb914e358ac6a
    +                bc64691072f5f2788534d9d42d7f406b
    +                c5090b30df23cb7dd8c5cb938e41facd
    +                6e38e8845b8160bff840598118d447c2 (AES256-CTR encrypted block) (bytes)
     
    @@ -2963,7 +2957,7 @@ dCXGDaRlL924VVCYUytRvu7ilZ+dtc9aCQUFJyDF3iXyxN2H68x7teo9e8vqzGtzLkw5KV diff --git a/_ref/ed25519/main.adoc b/_ref/ed25519/main.adoc index 27113b6..5c67b57 100644 --- a/_ref/ed25519/main.adoc +++ b/_ref/ed25519/main.adoc @@ -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: diff --git a/_ref/ed25519/private/legacy/main.adoc b/_ref/ed25519/private/legacy/main.adoc index 5534d06..317d812 100644 --- a/_ref/ed25519/private/legacy/main.adoc +++ b/_ref/ed25519/private/legacy/main.adoc @@ -1,4 +1,3 @@ - ===== Legacy [NOTE] diff --git a/_ref/ed25519/private/main.adoc b/_ref/ed25519/private/main.adoc index b6bff00..08c356c 100644 --- a/_ref/ed25519/private/main.adoc +++ b/_ref/ed25519/private/main.adoc @@ -1,4 +1,3 @@ - ==== Private include::legacy/main.adoc[] diff --git a/_ref/ed25519/private/v1/encrypted.adoc b/_ref/ed25519/private/v1/encrypted.adoc index 3902954..533ffde 100644 --- a/_ref/ed25519/private/v1/encrypted.adoc +++ b/_ref/ed25519/private/v1/encrypted.adoc @@ -1,4 +1,3 @@ - ===== v1 (Encrypted) [TIP] @@ -42,21 +41,21 @@ The author recommends using `aes256-ctr`. It is currently the upstream default. ---- 0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes) 1.0 uint32 allocator for 1.0.0 (4 bytes) - 1.0.0 cipher name string (ASCII bytes) + 1.0.0 cipher name string (ASCII bytes) 2.0 uint32 allocator for 2.0.0 (4 bytes) - 2.0.0 KDF name string (ASCII bytes) + 2.0.0 KDF name string (ASCII bytes) 3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) - 3.0.0 uint32 allocator for 3.0.0.0 (4 bytes) - 3.0.0.0 Salt/IV (bytes) - 3.0.1 uint32 for number of rounds/"work factor" (4 bytes) + 3.0.0 uint32 allocator for 3.0.0.0 (4 bytes) + 3.0.0.0 Salt/IV (bytes) + 3.0.1 uint32 for number of rounds/"work factor" (4 bytes) 4.0 uint32 counter for # of keys (4 bytes) - 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) - 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) - 4.0.0.0.0 public key #n keytype string (ASCII bytes) - 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) - 4.0.0.1.0 public key #n payload (bytes) - 4.0.1 uint32 allocator for encrypted private key structure blob #n (4.0.1.0) (4 bytes) - 4.0.1.0 + 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) + 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) + 4.0.0.0.0 public key #n keytype string (ASCII bytes) + 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) + 4.0.0.1.0 public key #n payload (bytes) + 4.0.1 uint32 allocator for encrypted private key structure blob #n (4.0.1.0) (4 bytes) + 4.0.1.0 ---- [NOTE] @@ -89,31 +88,31 @@ dCXGDaRlL924VVCYUytRvu7ilZ+dtc9aCQUFJyDF3iXyxN2H68x7teo9e8vqzGtzLkw5KV ---- 0.0 6f70656e7373682d6b65792d763100 ("openssh-key-v1" + 0x00) 1.0 0000000a (10) - 1.0.0 6165733235362d637472 ("aes256-ctr") + 1.0.0 6165733235362d637472 ("aes256-ctr") 2.0 00000006 (6) - 2.0.0 626372797074 ("bcrypt") + 2.0.0 626372797074 ("bcrypt") 3.0 00000018 (24) - 3.0.0 00000010 (16) - 3.0.0.0 50132f72900d68e0a31f9d75b6f0a5bc (bytes) - 3.0.1 00000064 (100) + 3.0.0 00000010 (16) + 3.0.0.0 50132f72900d68e0a31f9d75b6f0a5bc (bytes) + 3.0.1 00000064 (100) 4.0 00000001 (1) - 4.0.0 00000033 (51) - 4.0.0.0 0000000b (11) - 4.0.0.0.0 7373682d65643235353139 ("ssh-ed25519") - 4.0.0.1 00000020 (32) - 4.0.0.1.0 bfa2031aa5463113e40e16896af503c5 - 299ead76b09cb63846f41cc4de1740f6 (bytes) - 4.0.1 000000a0 (160) - 4.0.1.0 c49777cd0d1a7d37db77a1814991278f - 8ce99d572e2c666b93b99867425c60da - 4652fddb8555098532b51beeee2959f9 - db5cf5a0905052720c5de25f2c4dd87e - bcc7bb5ea3d7bcbeacc6b732e4c39295 - d9991a97ef3f0838f8a9bfd43edb3403 - 189649088f6cfb78946fb914e358ac6a - bc64691072f5f2788534d9d42d7f406b - c5090b30df23cb7dd8c5cb938e41facd - 6e38e8845b8160bff840598118d447c2 (AES256-CTR encrypted block) (bytes) + 4.0.0 00000033 (51) + 4.0.0.0 0000000b (11) + 4.0.0.0.0 7373682d65643235353139 ("ssh-ed25519") + 4.0.0.1 00000020 (32) + 4.0.0.1.0 bfa2031aa5463113e40e16896af503c5 + 299ead76b09cb63846f41cc4de1740f6 (bytes) + 4.0.1 000000a0 (160) + 4.0.1.0 c49777cd0d1a7d37db77a1814991278f + 8ce99d572e2c666b93b99867425c60da + 4652fddb8555098532b51beeee2959f9 + db5cf5a0905052720c5de25f2c4dd87e + bcc7bb5ea3d7bcbeacc6b732e4c39295 + d9991a97ef3f0838f8a9bfd43edb3403 + 189649088f6cfb78946fb914e358ac6a + bc64691072f5f2788534d9d42d7f406b + c5090b30df23cb7dd8c5cb938e41facd + 6e38e8845b8160bff840598118d447c2 (AES256-CTR encrypted block) (bytes) ---- [NOTE] diff --git a/_ref/ed25519/private/v1/main.adoc b/_ref/ed25519/private/v1/main.adoc index 5154324..36a4887 100644 --- a/_ref/ed25519/private/v1/main.adoc +++ b/_ref/ed25519/private/v1/main.adoc @@ -1,3 +1,2 @@ - include::plain.adoc[] include::encrypted.adoc[] diff --git a/_ref/ed25519/private/v1/plain.adoc b/_ref/ed25519/private/v1/plain.adoc index e339845..eab65a2 100644 --- a/_ref/ed25519/private/v1/plain.adoc +++ b/_ref/ed25519/private/v1/plain.adoc @@ -1,4 +1,3 @@ - ===== v1 (Plain) [TIP] @@ -13,17 +12,17 @@ Since plaintext/unencrypted keys do not have a cipher or KDF (as there's no encr ---- 0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes) 1.0 uint32 allocator for 1.0.0 (4 bytes) - 1.0.0 cipher name string (ASCII bytes) + 1.0.0 cipher name string (ASCII bytes) 2.0 uint32 allocator for 2.0.0 (4 bytes) - 2.0.0 KDF name string (ASCII bytes) + 2.0.0 KDF name string (ASCII bytes) 3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) (ALWAYS 0 for unencrypted keys, so no following substructure) 4.0 uint32 counter for # of keys (4 bytes) - 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) - 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) - 4.0.0.0.0 public key #n keytype string (ASCII bytes) - 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) - 4.0.0.1.0 public key #n payload (bytes) - 4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes) + 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) + 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) + 4.0.0.0.0 public key #n keytype string (ASCII bytes) + 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) + 4.0.0.1.0 public key #n payload (bytes) + 4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes) 4.0.1.0 uint32 decryption "checksum" #1 (should match 4.0.1.1) (4 bytes) 4.0.1.1 uint32 decryption "checksum" #2 (should match 4.0.1.0) (4 bytes) 4.0.1.2 Copy of 4.0.0.0; allocator for 4.0.1.2.0 (4 bytes) diff --git a/_ref/ed25519/public.adoc b/_ref/ed25519/public.adoc index 630835f..956f7f3 100644 --- a/_ref/ed25519/public.adoc +++ b/_ref/ed25519/public.adoc @@ -1,15 +1,16 @@ - ==== Public + ===== Structure + Public keys are stored in the following structure: .Key Structure [source,text,linenums] ---- 0.0 uint32 allocator for 0.0.0 (4 bytes) - 0.0.0 Public key key type string (ASCII bytes) + 0.0.0 Public key key type string (ASCII bytes) 1.0 uint32 allocator for 1.0.0 (4 bytes) - 1.0.0 Public key payload (bytes) + 1.0.0 Public key payload (bytes) ---- ===== Example @@ -24,7 +25,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEQ4i8lzaE3WaFcTESK/8hLJg7umsWLE6XzRH3PDnZew [source,text,linenums] ---- 0.0 0000000b (11) - 0.0.0 7373682d65643235353139 ("ssh-ed25519") + 0.0.0 7373682d65643235353139 ("ssh-ed25519") 1.0 00000020 (32) - 1.0.0 44388bc973684dd66857131122bff212c983bba6b162c4e97cd11f73c39d97b0 (bytes) + 1.0.0 44388bc973684dd66857131122bff212c983bba6b162c4e97cd11f73c39d97b0 (bytes) ---- diff --git a/_ref/rsa/private/legacy/encrypted.adoc b/_ref/rsa/private/legacy/encrypted.adoc index 8cd6fcf..3f4dd34 100644 --- a/_ref/rsa/private/legacy/encrypted.adoc +++ b/_ref/rsa/private/legacy/encrypted.adoc @@ -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^]. + diff --git a/_ref/rsa/private/legacy/main.adoc b/_ref/rsa/private/legacy/main.adoc index 5154324..36a4887 100644 --- a/_ref/rsa/private/legacy/main.adoc +++ b/_ref/rsa/private/legacy/main.adoc @@ -1,3 +1,2 @@ - include::plain.adoc[] include::encrypted.adoc[] diff --git a/_ref/rsa/private/legacy/plain.adoc b/_ref/rsa/private/legacy/plain.adoc index c204642..60ee6f0 100644 --- a/_ref/rsa/private/legacy/plain.adoc +++ b/_ref/rsa/private/legacy/plain.adoc @@ -1,4 +1,3 @@ - ===== Legacy (Plain) [id=struct_rsa_plain_legacy] diff --git a/_ref/rsa/private/v1/encrypted.adoc b/_ref/rsa/private/v1/encrypted.adoc index 8b642d8..fb26e8e 100644 --- a/_ref/rsa/private/v1/encrypted.adoc +++ b/_ref/rsa/private/v1/encrypted.adoc @@ -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 <> *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 <> *4.0.1.0* to *4.0.1.10*. It uses a padded size appropriate to the encryption cipher used. ==== [id=bytes_rsa_crypt] @@ -139,92 +138,92 @@ ZnrXZl+8QIW1MSvaaQFmJFqTs= 2.0.0 626372797074 ("bcrypt") 3.0 00000018 (24) 3.0.0 00000010 (16) - 3.0.0.0 07d4b07c0b128348916488008d6e130b (bytes) + 3.0.0.0 07d4b07c0b128348916488008d6e130b (bytes) 3.0.1 00000064 (100) 4.0 00000001 (1) 4.0.0 00000217 (535) - 4.0.0.0 00000007 (7) - 4.0.0.0.0 7373682d727361 ("ssh-rsa") - 4.0.0.1 00000003 (3) - 4.0.0.1.0 010001 (65537) - 4.0.0.2 00000201 (513) - 4.0.0.2.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af - cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 - 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 - 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 - b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 - d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 - 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 - 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af - 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 - f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf - 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a - 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 - f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e - dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 - 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 - bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f - 07 (bytes) + 4.0.0.0 00000007 (7) + 4.0.0.0.0 7373682d727361 ("ssh-rsa") + 4.0.0.1 00000003 (3) + 4.0.0.1.0 010001 (65537) + 4.0.0.2 00000201 (513) + 4.0.0.2.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af + cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 + 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 + 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 + b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 + d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 + 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 + 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af + 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 + f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf + 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a + 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 + f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e + dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 + 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 + bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f + 07 (bytes) 4.0.1 00000750 (1872) - 4.0.1.0 966e2ce435242fef09787f6e8d93a563092e3f3bc986b44198c81e8049c5c944 - 419effc0521401dc1ef5bc0e4d6aedeb7d05880bc3f731698b9bceeceae08e5e - 05f79f4d22de953c899c3271850e80e804f9b1a79bcec31bba11c08db60f9bd2 - 206bc3d7bfef74895e4f4e3720649f924544f4a2cea5b9dfb9cc0a2bd8f3ba70 - f4ba2e7f42960465c9eade118630f9c832fe84ef548529979d0d6ea079f9d5c4 - 0e396b098fc509448d26de3cb484b0334afacaba371b52c37c120a5623170c1d - 0a39348a151c9fb8aab1049f52cf0c08c77144af314259a90848f3dc62e5831f - ac08720b1c813506f1db1e7940def52dc46c97d6363cda0ff7e2258e2637d2e0 - 9f26099bbfeac78819198b78374d2424537fe549a2ab3dddaf5f7fdb739c3921 - 064b04f6ffcfeb5544db533179038e11d0cc622992bc6d0600584d4068a2891d - c748c9c16be32c2a08e96caa2ddec4ddd1a2ab3b018a0b0f166a15ac870a30c8 - 0cc897dbf15af7e8c2915b3616f237a6646e43c665f7569a5ed1850ad8cd0540 - 06d389568db55393e780e752ace8f06b70f1e99d86b9445d9c1a7a6476bcbf48 - 4400a58e5a5a73d2c20d630a9985bbf4c691abb61ee4515aa64a727e7bac4a5e - d7bb5f767c7dcf0035904231283d92445863702a995e792bde1d5ac7dd624898 - 7b9fe4b0a6f1837ce4fbaa032ff4671a86be8c7e4f9be3718212ead0a6f1b429 - 88863bf80af17a9814f1ffbed6c81e7f59de5b8c71b9f571fc556cc56aee22be - 1b57d48f8ca76a379847c67d0ceb43ead101355e541a57c254ae814f058a0361 - 92f49d96236c88428e5f54dafefd1a5b8ca12d85cf3833d38d816c6e0e205143 - f33e353c471abc978d28d1ac89a724d5aab3e7c48015c5cd3a6f31c258cef131 - 2574e692c6e495a2a8efbee785a9fe1c727379ea1fdc5b492a83a4aff7b3945a - ef503a95dc52b21474172bb54054b106342f2bde6bc38ad166c1a5c6d88685b8 - 067f529741b36991352d5df1291b9e3c746a71e2bda796fdddac29d0e2f3fadf - d1f0fd33da75bc6151d3ee27f6199e76c3b9e872fb63b54ad78b0fbe2be84f10 - d7e48339c6e63364507074addc5a2bd8c4be5848c291bdb2740d3aa325c35039 - 6ce28e086eecdd6256f48fb7947b84e85759b1c7e6dd91223e3f828e4253a7ec - 6d987ad61bd2179c229a20e8d97e6158cb0be734227698b4695c784c463cac3e - a7d538056d5062a895f8ae64549bd58484a60363ab81bc43e6fde0ee12477051 - b53c970f063df2f0ff2fd655b7f81029be545cc841f7321d31304eeba210fdf8 - fdad7e1bc8accd4d990c058b30817e85e2c5695ab92c1e129ac7471f338fdd39 - 4ede16071450c19061e07c135cbe87f01260b36206cbc169c85b9dda26fb3dff - 5e7d68fd51a573402dbcc1dc7f49a1cb9c34100b9b3d0bb8b8639c69c7d47490 - ab83c8918ad03ae62eee43165e452f854d8d4132186c21f742ee4a3cc614515a - dc7c08940838538503f5c4d5781e984cad93cf7a8d17a68d678b3466afbae362 - 055d5b6edb0007b59231d3040dbfec8b9782b39c391116f2037e218bfaba46c5 - 2c56180aeef241d918f214b0b6480b7382875ad9dace4496c3682ea2a697b5fe - 43b107d93e1976b2540dbfda2ae223bc1a84d65e0d6702513b8cc442a25fb983 - aadfa492d09e3dfd991f9f47470bb73369f634dd50dab26d129c3ba096ad7971 - 1f0ee4419c1226eb8da42674b2cf77e8f4a3f76ce9e9e249b4d1fcc778ef318d - bd6778556c0f9878ebe6e8324916d78280f23f7e3921b29b42bba6ca2d780399 - ca4ed3cb2d036c9bed80b235809198422135e2d842c8f53a4dd59fe0bed889d4 - 7840164024b1f668cc566978d431eb2a07a20ed06e575551e1b030db1350e94c - 929a028a5dc25340e3434f2250e3f49de171bb850875d280050e495544ba71b7 - 1ea36c2937ad6593e2b5bca28bc38e59cea91f26cd1ca8aa4bd9fbc1c605ae46 - ae3f559b3a6ebf89ff569ff365c3cba4b4b91f665ffda397188fe23ea456c802 - c47a8062844d404fab41a0fa83fd0dd66e4db51115f026197f4c89a1bf28246b - a9966ca2973b0f3afa43154896a56bfe2153dfaaa3ccd2ab011b7f91470cbdc0 - 4af7cfe1703de7040f4d7777b068769d4035377cc7664f406b5d69356aa33045 - c4334a1e2ce602ea2b1ec666352d14b5996dad451a4cb886c66143dc25f8f1bc - f0ed253febc9733432eada35a6afc982749fa0ec680a881db06171ea37fa8338 - 1ec90a6afa2f269d9da07c8f302161e26c9a4c21c2560ced811bdf6be402d36a - e2f11f884351241e779a22f8b69a8e3eeaa676e7150143a66b3a92d4dace9f4f - 9b61e3f7e0aa7656c818ecfb53303457d51e74e7ec89cf038c9a73f3834383e8 - 22d2f50c3a7775aa0e63b127a214db7490e488f7ee91782a90de32f4ab22601a - f7b190fcc6a292e42e2f8b69caace994b127e9f91532b6d8c3b7ce08f991d269 - 220bceeed7d4e6151523e63e41bcd27154fd3a7f7370c04b1258715413ec5f17 - f51baa99e8e5cd59ac7af17daecd0e8926002403ab87a422e422a6fb1186b5bb - 7db25faffedad247fd741b2461aa3b9612342142af10decefe00c00b37a667ad - 7665fbc4085b5312bda690166245a93b (AES256-CTR encrypted block) (bytes) + 4.0.1.0 966e2ce435242fef09787f6e8d93a563092e3f3bc986b44198c81e8049c5c944 + 419effc0521401dc1ef5bc0e4d6aedeb7d05880bc3f731698b9bceeceae08e5e + 05f79f4d22de953c899c3271850e80e804f9b1a79bcec31bba11c08db60f9bd2 + 206bc3d7bfef74895e4f4e3720649f924544f4a2cea5b9dfb9cc0a2bd8f3ba70 + f4ba2e7f42960465c9eade118630f9c832fe84ef548529979d0d6ea079f9d5c4 + 0e396b098fc509448d26de3cb484b0334afacaba371b52c37c120a5623170c1d + 0a39348a151c9fb8aab1049f52cf0c08c77144af314259a90848f3dc62e5831f + ac08720b1c813506f1db1e7940def52dc46c97d6363cda0ff7e2258e2637d2e0 + 9f26099bbfeac78819198b78374d2424537fe549a2ab3dddaf5f7fdb739c3921 + 064b04f6ffcfeb5544db533179038e11d0cc622992bc6d0600584d4068a2891d + c748c9c16be32c2a08e96caa2ddec4ddd1a2ab3b018a0b0f166a15ac870a30c8 + 0cc897dbf15af7e8c2915b3616f237a6646e43c665f7569a5ed1850ad8cd0540 + 06d389568db55393e780e752ace8f06b70f1e99d86b9445d9c1a7a6476bcbf48 + 4400a58e5a5a73d2c20d630a9985bbf4c691abb61ee4515aa64a727e7bac4a5e + d7bb5f767c7dcf0035904231283d92445863702a995e792bde1d5ac7dd624898 + 7b9fe4b0a6f1837ce4fbaa032ff4671a86be8c7e4f9be3718212ead0a6f1b429 + 88863bf80af17a9814f1ffbed6c81e7f59de5b8c71b9f571fc556cc56aee22be + 1b57d48f8ca76a379847c67d0ceb43ead101355e541a57c254ae814f058a0361 + 92f49d96236c88428e5f54dafefd1a5b8ca12d85cf3833d38d816c6e0e205143 + f33e353c471abc978d28d1ac89a724d5aab3e7c48015c5cd3a6f31c258cef131 + 2574e692c6e495a2a8efbee785a9fe1c727379ea1fdc5b492a83a4aff7b3945a + ef503a95dc52b21474172bb54054b106342f2bde6bc38ad166c1a5c6d88685b8 + 067f529741b36991352d5df1291b9e3c746a71e2bda796fdddac29d0e2f3fadf + d1f0fd33da75bc6151d3ee27f6199e76c3b9e872fb63b54ad78b0fbe2be84f10 + d7e48339c6e63364507074addc5a2bd8c4be5848c291bdb2740d3aa325c35039 + 6ce28e086eecdd6256f48fb7947b84e85759b1c7e6dd91223e3f828e4253a7ec + 6d987ad61bd2179c229a20e8d97e6158cb0be734227698b4695c784c463cac3e + a7d538056d5062a895f8ae64549bd58484a60363ab81bc43e6fde0ee12477051 + b53c970f063df2f0ff2fd655b7f81029be545cc841f7321d31304eeba210fdf8 + fdad7e1bc8accd4d990c058b30817e85e2c5695ab92c1e129ac7471f338fdd39 + 4ede16071450c19061e07c135cbe87f01260b36206cbc169c85b9dda26fb3dff + 5e7d68fd51a573402dbcc1dc7f49a1cb9c34100b9b3d0bb8b8639c69c7d47490 + ab83c8918ad03ae62eee43165e452f854d8d4132186c21f742ee4a3cc614515a + dc7c08940838538503f5c4d5781e984cad93cf7a8d17a68d678b3466afbae362 + 055d5b6edb0007b59231d3040dbfec8b9782b39c391116f2037e218bfaba46c5 + 2c56180aeef241d918f214b0b6480b7382875ad9dace4496c3682ea2a697b5fe + 43b107d93e1976b2540dbfda2ae223bc1a84d65e0d6702513b8cc442a25fb983 + aadfa492d09e3dfd991f9f47470bb73369f634dd50dab26d129c3ba096ad7971 + 1f0ee4419c1226eb8da42674b2cf77e8f4a3f76ce9e9e249b4d1fcc778ef318d + bd6778556c0f9878ebe6e8324916d78280f23f7e3921b29b42bba6ca2d780399 + ca4ed3cb2d036c9bed80b235809198422135e2d842c8f53a4dd59fe0bed889d4 + 7840164024b1f668cc566978d431eb2a07a20ed06e575551e1b030db1350e94c + 929a028a5dc25340e3434f2250e3f49de171bb850875d280050e495544ba71b7 + 1ea36c2937ad6593e2b5bca28bc38e59cea91f26cd1ca8aa4bd9fbc1c605ae46 + ae3f559b3a6ebf89ff569ff365c3cba4b4b91f665ffda397188fe23ea456c802 + c47a8062844d404fab41a0fa83fd0dd66e4db51115f026197f4c89a1bf28246b + a9966ca2973b0f3afa43154896a56bfe2153dfaaa3ccd2ab011b7f91470cbdc0 + 4af7cfe1703de7040f4d7777b068769d4035377cc7664f406b5d69356aa33045 + c4334a1e2ce602ea2b1ec666352d14b5996dad451a4cb886c66143dc25f8f1bc + f0ed253febc9733432eada35a6afc982749fa0ec680a881db06171ea37fa8338 + 1ec90a6afa2f269d9da07c8f302161e26c9a4c21c2560ced811bdf6be402d36a + e2f11f884351241e779a22f8b69a8e3eeaa676e7150143a66b3a92d4dace9f4f + 9b61e3f7e0aa7656c818ecfb53303457d51e74e7ec89cf038c9a73f3834383e8 + 22d2f50c3a7775aa0e63b127a214db7490e488f7ee91782a90de32f4ab22601a + f7b190fcc6a292e42e2f8b69caace994b127e9f91532b6d8c3b7ce08f991d269 + 220bceeed7d4e6151523e63e41bcd27154fd3a7f7370c04b1258715413ec5f17 + f51baa99e8e5cd59ac7af17daecd0e8926002403ab87a422e422a6fb1186b5bb + 7db25faffedad247fd741b2461aa3b9612342142af10decefe00c00b37a667ad + 7665fbc4085b5312bda690166245a93b (AES256-CTR encrypted block) (bytes) ---- [NOTE] @@ -243,70 +242,70 @@ When *4.0.1.0* is decrypted, it yields: 4.0.1.2.0 7373682d727361 ("ssh-rsa") 4.0.1.3 00000201 (513) 4.0.1.3.0 00b7cec04601ce2a12f0c924cb9a30eb990066812cb14369193f30b2b9fdd4af - cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 - 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 - 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 - b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 - d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 - 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 - 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af - 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 - f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf - 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a - 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 - f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e - dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 - 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 - bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f - 07 (bytes) + cb300c918f2a77d64410f3617ae7c8ca318c257d3c4df4e2c4108bbbe93a8689 + 4ba14b3575f2f72150bc381dcbfb742c7a196866fd3184ace96761adda0fc299 + 2f6c866d7569919fc22d9c4bf0de405a8c76d519aa2a5329dc6825777229a5d0 + b753a7825a89b95275f9c025e215343c6c88cd6690a221f8ae9ef675ee464dc7 + d118da410507ea5d6b6489dd60afd8a6646492db3e279f1a78240db8abbda6c5 + 0714c9636650a72081e7fa5d472c1428b07eae5d15b64ea1e2a7508512fe9ab6 + 55f86a313486d3cca1dd8e90acc5c9fba4d6e767507fbab9f3a7f68c748142af + 2a3701d31a8a9b7511958aa77187ba702ed934d385afcee42380e95e0e7e9bc0 + f4d23367fc770374167b7f0926fb6fdb6d05aad1cfd191824845b014e18153bf + 0d1d3c3b1fadbb25a3f1d151f9b684633d8c1690fcd8cad05aac2aeb23dbf19a + 37e480a008910319c116d47bd924b39942543b88a0f6127952b2d8e1290f3029 + f542aebe9c0c8e36cf3296865cd6643c8924d566ebf4971809399a1ac096fe1e + dc3b5f871bf5ef0b4d44e0ea27620d205142e0bfcf677b4db025532121a3f074 + 5aa4d0586331733257855a5cecbe3ac4403d04ff0cc0c58b7c04904b402125c2 + bc2a63a20ebb309cc6f3e65db301a058b8dace07e71b38f3f3595433f69b198f + 07 (bytes) 4.0.1.4 00000003 (3) 4.0.1.4.0 010001 (65537) 4.0.1.5 00000200 (512) 4.0.1.5.0 499f2c705e04bfe17a4476d27e5e1ddfd8c335f63ac22f748754f02183440f6d - a93f3f86429261663e0bddfda69d4c2f705d0bbe7dd31a8941bf5672e29844a1 - e0670970c6f2a98b76f85b26fafedb59c49786b8df7eaeeb86171fd579fe8df0 - eadd2536a4244a0332d5a9ad3eb8340c930464153e82b4ffad4f647a7ba808e3 - 854450f806b60e0b670fc99cb6b58786497d4c199e7750ee5089934eef25f465 - 12394955c487e10744ebdb9a00951c8095b024d4ce75f1da3146b5b3447169f5 - 9e23d40685438bc7bcad1173927a389a0903ba111a46809d123b3432197cca8f - c0c27816fbf215c2b7c584b94f37c9ed8a8e815942effdcf54757268afe58fd7 - 00cdcf6a98a20950617b0624aa835d95e27d7afcdee70c397ca1b6aa04735e6d - 5c5e01bfff2174cf562d36842624490e12ca8142595d52567494f38b2124012c - acacb2564e21c845eb94f5d6ebf6f39066e1fa04b318174e6f9994823ba4d9ef - 2c28b37cb3ea05fa3cad7200898394276835523e4e416054f23db0eb732211d3 - a11ea551390ae8d58d69e14664e0e20f2bf0ccd24d260b832a94144f5801ea7c - dbb2436f21ba2dbaecbcd573f24c5e0d43fd26b4ae6764e138ddaf4775ac0163 - e45727c10027f716cbe3cc70fff73441bb2538e5426a1a5638b448a7bde96804 - 1ec2184ef67b0da60070297cd73deeefebd1951611c7a776c956e18e5f163a21 (bytes) + a93f3f86429261663e0bddfda69d4c2f705d0bbe7dd31a8941bf5672e29844a1 + e0670970c6f2a98b76f85b26fafedb59c49786b8df7eaeeb86171fd579fe8df0 + eadd2536a4244a0332d5a9ad3eb8340c930464153e82b4ffad4f647a7ba808e3 + 854450f806b60e0b670fc99cb6b58786497d4c199e7750ee5089934eef25f465 + 12394955c487e10744ebdb9a00951c8095b024d4ce75f1da3146b5b3447169f5 + 9e23d40685438bc7bcad1173927a389a0903ba111a46809d123b3432197cca8f + c0c27816fbf215c2b7c584b94f37c9ed8a8e815942effdcf54757268afe58fd7 + 00cdcf6a98a20950617b0624aa835d95e27d7afcdee70c397ca1b6aa04735e6d + 5c5e01bfff2174cf562d36842624490e12ca8142595d52567494f38b2124012c + acacb2564e21c845eb94f5d6ebf6f39066e1fa04b318174e6f9994823ba4d9ef + 2c28b37cb3ea05fa3cad7200898394276835523e4e416054f23db0eb732211d3 + a11ea551390ae8d58d69e14664e0e20f2bf0ccd24d260b832a94144f5801ea7c + dbb2436f21ba2dbaecbcd573f24c5e0d43fd26b4ae6764e138ddaf4775ac0163 + e45727c10027f716cbe3cc70fff73441bb2538e5426a1a5638b448a7bde96804 + 1ec2184ef67b0da60070297cd73deeefebd1951611c7a776c956e18e5f163a21 (bytes) 4.0.1.6 00000100 (256) 4.0.1.6.0 0ae2e1cf2455a0d82272e6a42bbba83eb765496e5a33e13b8c94756d8c32f7d7 - 505fd997bdd5ec08c59bf8d1d659d1df02bec669ebb5aaaf5db1ec70ce2f2a6b - 3a17b7b1fce3adc6203c2905cd652d7622065dd011ae33894467c6dca3643952 - b0caedff9bc78ac40408074027566ee4c4751ad3ff452a2781af8b5c2c9bf09b - 34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305 - 53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7 - 2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a - 137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 + 505fd997bdd5ec08c59bf8d1d659d1df02bec669ebb5aaaf5db1ec70ce2f2a6b + 3a17b7b1fce3adc6203c2905cd652d7622065dd011ae33894467c6dca3643952 + b0caedff9bc78ac40408074027566ee4c4751ad3ff452a2781af8b5c2c9bf09b + 34ee5e6201330b4bc381af766798667c5b9ad0733c19f4ef475fd264655e0305 + 53f2f2f8de59c2aee74b9dd6720e3108143dfedd41cf4bc11de2b9a9f40faec7 + 2a52312abee4c6155acfee9384a16348c715346ebe693895fe6d2348d4dedb0a + 137c487185ff949c209115b9c8a106329991f049e8430c7ba60dd5408d72ac98 (bytes) 4.0.1.7 00000101 (257) 4.0.1.7.0 00e50b65ba6ae4cb29ae66129c3e41ffeba36cd6ecbaa7045ff90cea71d09bc0 - 56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7 - 7511e0c261c344600a84cce78e8cf493e492844cb82c42ab6d1246a53e5cf50a - d4759c2a5c09d53b1c5c3b449328eea01434d6e537b3a513928dfaddf0a72728 - 23899b8d795220cb3344ab8d0e846e1e40ffdfb5c719262c2b527a890a51faab - cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71 - ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a - 292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe - 99 + 56b0b9134dc5754c49da1fe8ab169cd149eedaeccf4913d915f4f241c5fd86c7 + 7511e0c261c344600a84cce78e8cf493e492844cb82c42ab6d1246a53e5cf50a + d4759c2a5c09d53b1c5c3b449328eea01434d6e537b3a513928dfaddf0a72728 + 23899b8d795220cb3344ab8d0e846e1e40ffdfb5c719262c2b527a890a51faab + cf10904699135f7b997487f4b48d4490ad80fc25b346fa0bb587f09295bf0f71 + ac10a8086867d4bad00a0c27a6456f08e0c2bf8caed8768f0366a2440428180a + 292617af61feabab9a7075b8bc21209a5439bbfe3613917071fee74a8d5d80fe + 99 (bytes) 4.0.1.8 00000101 (257) 4.0.1.8.0 00cd7077659fad983104bcc7dc526242b9ea52cea40e923df771ac2a28e377f2 - b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f - 9c6f355479053e3e3d3a6ecce13a016908298ca3f8b628d2111749a3627628eb - 05844f546795a5067d39b1d304e19cc6fc1be00a6164ea33e4abbc87f5683227 - 1d825c868c5ccda3775b037711e99436f96c53f3780b985084e1d84a458c687a - b0938a09bf6f9b3ffec41ed02fd5b27572c7d180039e405a559b62fc08f804b1 - 9f043dba4c6f7565b1c72759f4b932d4f93d4f41da91b1b146f29854a1008341 - e4760bdd4987097ec4a6551ab96e099a04a38d6a893b533db185abb55736419e - 9f (bytes) + b9231a58c2448c6b8d17fe83571ef6bdbbc11f3d4ab4254ea859684b8772911f + 9c6f355479053e3e3d3a6ecce13a016908298ca3f8b628d2111749a3627628eb + 05844f546795a5067d39b1d304e19cc6fc1be00a6164ea33e4abbc87f5683227 + 1d825c868c5ccda3775b037711e99436f96c53f3780b985084e1d84a458c687a + b0938a09bf6f9b3ffec41ed02fd5b27572c7d180039e405a559b62fc08f804b1 + 9f043dba4c6f7565b1c72759f4b932d4f93d4f41da91b1b146f29854a1008341 + e4760bdd4987097ec4a6551ab96e099a04a38d6a893b533db185abb55736419e + 9f (bytes) 4.0.1.9 00000018 (24) 4.0.1.9.0 54686973206973206120636f6d6d656e7420737472696e67 ("This is a comment string") 4.0.1.10 010203 ([1 2 3], 3 bytes) diff --git a/_ref/rsa/private/v1/main.adoc b/_ref/rsa/private/v1/main.adoc index 5154324..36a4887 100644 --- a/_ref/rsa/private/v1/main.adoc +++ b/_ref/rsa/private/v1/main.adoc @@ -1,3 +1,2 @@ - include::plain.adoc[] include::encrypted.adoc[] diff --git a/_ref/rsa/private/v1/plain.adoc b/_ref/rsa/private/v1/plain.adoc index 6ff5423..4a42593 100644 --- a/_ref/rsa/private/v1/plain.adoc +++ b/_ref/rsa/private/v1/plain.adoc @@ -1,4 +1,3 @@ - ===== v1 (Plain) [TIP] @@ -13,18 +12,18 @@ Since plaintext/unencrypted keys do not have a cipher or KDF (as there's no encr ---- 0.0 "openssh-key-v1" string plus terminating nullbyte (15 bytes) 1.0 uint32 allocator for 1.0.0 (4 bytes) - 1.0.0 cipher name string (ASCII bytes) + 1.0.0 cipher name string (ASCII bytes) 2.0 uint32 allocator for 2.0.0 (4 bytes) - 2.0.0 KDF name string (ASCII bytes) + 2.0.0 KDF name string (ASCII bytes) 3.0 uint32 allocator for KDF options (3.0.0 to 3.0.1) (4 bytes) (ALWAYS 0 for unencrypted keys, so no following substructure) 4.0 uint32 counter for # of keys (4 bytes) - 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) - 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) - 4.0.0.0.0 public key #n keytype string (ASCII bytes) - 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) - 4.0.0.1.0 public exponent ('e') - 4.0.0.2 uint32 allocator for 4.0.0.2.0 (4 bytes) - 4.0.0.2.0 modulus ('n') + 4.0.0 uint32 allocator for public key #n (4.0.0.0 to 4.0.0.1) (4 bytes) + 4.0.0.0 uint32 allocator for 4.0.0.0.0 (4 bytes) + 4.0.0.0.0 public key #n keytype string (ASCII bytes) + 4.0.0.1 uint32 allocator for 4.0.0.1.0 (4 bytes) + 4.0.0.1.0 public exponent ('e') + 4.0.0.2 uint32 allocator for 4.0.0.2.0 (4 bytes) + 4.0.0.2.0 modulus ('n') 4.0.1 uint32 allocator for private key structure #n (4.0.1.0 to 4.0.1.5) (4 bytes) 4.0.1.0 uint32 decryption "checksum" #1 (should match 4.0.1.1) (4 bytes) 4.0.1.1 uint32 decryption "checksum" #2 (should match 4.0.1.0) (4 bytes) diff --git a/_ref/rsa/public.adoc b/_ref/rsa/public.adoc index bdae5f3..34c9fc8 100644 --- a/_ref/rsa/public.adoc +++ b/_ref/rsa/public.adoc @@ -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) ---- diff --git a/internal/utils.go b/internal/utils.go index ee717ee..5a984a7 100644 --- a/internal/utils.go +++ b/internal/utils.go @@ -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: diff --git a/kdf/consts.go b/kdf/consts.go index a0dc2e6..f9e2310 100644 --- a/kdf/consts.go +++ b/kdf/consts.go @@ -2,7 +2,7 @@ package kdf var ( // kdfNames is a collection of valid KDF name strings. - kdfNames []string = []string{ + kdfNames = []string{ "none", "bcrypt", } diff --git a/kdf/errs.go b/kdf/errs.go index 0321add..8db5565 100644 --- a/kdf/errs.go +++ b/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") ) diff --git a/kdf/funcs_bcrypt_pbkdf.go b/kdf/funcs_bcrypt_pbkdf.go index 34dcc0c..ca97f7a 100644 --- a/kdf/funcs_bcrypt_pbkdf.go +++ b/kdf/funcs_bcrypt_pbkdf.go @@ -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 { diff --git a/kdf/funcs_null.go b/kdf/funcs_null.go index ed3a883..8d46827 100644 --- a/kdf/funcs_null.go +++ b/kdf/funcs_null.go @@ -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)