Sfoglia il codice sorgente

Add generic PEM decode APIs

Signed-off-by: Steffen Jaeckel <[email protected]>
Steffen Jaeckel 1 anno fa
parent
commit
fe3b3e627b
100 ha cambiato i file con 1050 aggiunte e 3 eliminazioni
  1. 2 1
      src/headers/tomcrypt.h
  2. 3 0
      src/headers/tomcrypt_misc.h
  3. 2 0
      src/misc/error_to_string.c
  4. 23 0
      src/misc/pem/pem.c
  5. 2 0
      src/misc/pem/pem_pkcs.c
  6. 1 1
      src/misc/pem/pem_read.c
  7. 2 0
      src/misc/pem/pem_ssh.c
  8. 2 1
      tests/common.c
  9. 49 0
      tests/pem/non-tfm/ssh_rsa_4096_openssh
  10. 50 0
      tests/pem/non-tfm/ssh_rsa_4096_openssh_pw
  11. 51 0
      tests/pem/non-tfm/ssh_rsa_4096_pem
  12. 13 0
      tests/pem/non-tfm/ssh_rsa_4096_pem.pub
  13. 54 0
      tests/pem/non-tfm/ssh_rsa_4096_pem_pw
  14. 52 0
      tests/pem/non-tfm/ssh_rsa_4096_pkcs8
  15. 14 0
      tests/pem/non-tfm/ssh_rsa_4096_pkcs8.pub
  16. 54 0
      tests/pem/non-tfm/ssh_rsa_4096_pkcs8_pw
  17. 14 0
      tests/pem/non-tfm/ssh_rsa_4096_rfc4716.pub
  18. 93 0
      tests/pem/non-tfm/ssh_rsa_8192_openssh
  19. 94 0
      tests/pem/non-tfm/ssh_rsa_8192_openssh_pw
  20. 99 0
      tests/pem/non-tfm/ssh_rsa_8192_pem
  21. 24 0
      tests/pem/non-tfm/ssh_rsa_8192_pem.pub
  22. 102 0
      tests/pem/non-tfm/ssh_rsa_8192_pem_pw
  23. 100 0
      tests/pem/non-tfm/ssh_rsa_8192_pkcs8
  24. 25 0
      tests/pem/non-tfm/ssh_rsa_8192_pkcs8.pub
  25. 102 0
      tests/pem/non-tfm/ssh_rsa_8192_pkcs8_pw
  26. 23 0
      tests/pem/non-tfm/ssh_rsa_8192_rfc4716.pub
  27. 0 0
      tests/pem/pkcs/dh-encrypted.pk8
  28. 0 0
      tests/pem/pkcs/dh.pk8
  29. 0 0
      tests/pem/pkcs/dsa-encrypted.pem
  30. 0 0
      tests/pem/pkcs/dsa-encrypted.pk8
  31. 0 0
      tests/pem/pkcs/dsa-pub.pem
  32. 0 0
      tests/pem/pkcs/dsa.pem
  33. 0 0
      tests/pem/pkcs/dsa.pk8
  34. 0 0
      tests/pem/pkcs/ecc-encrypted.pem
  35. 0 0
      tests/pem/pkcs/ecc-encrypted.pk8
  36. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem
  37. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem
  38. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem
  39. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem
  40. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem
  41. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem
  42. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem
  43. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem
  44. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem
  45. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem
  46. 0 0
      tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem
  47. 0 0
      tests/pem/pkcs/ecc-pub.pem
  48. 0 0
      tests/pem/pkcs/ecc.pem
  49. 0 0
      tests/pem/pkcs/ecc.pk8
  50. 0 0
      tests/pem/pkcs/ed25519-pub.pem
  51. 0 0
      tests/pem/pkcs/ed25519.pem
  52. 0 0
      tests/pem/pkcs/ed25519_attrs.pem
  53. 0 0
      tests/pem/pkcs/extra/ed25519-cryptx.pem
  54. 0 0
      tests/pem/pkcs/extra/ed25519-selfsigned.pem
  55. 0 0
      tests/pem/pkcs/extra/rsa.pem
  56. 0 0
      tests/pem/pkcs/rsa-aes-128-cbc.pem
  57. 0 0
      tests/pem/pkcs/rsa-aes-128-cfb.pem
  58. 0 0
      tests/pem/pkcs/rsa-aes-128-ctr.pem
  59. 0 0
      tests/pem/pkcs/rsa-aes-128-ofb.pem
  60. 0 0
      tests/pem/pkcs/rsa-aes-192-cbc.pem
  61. 0 0
      tests/pem/pkcs/rsa-aes-192-cfb.pem
  62. 0 0
      tests/pem/pkcs/rsa-aes-192-ctr.pem
  63. 0 0
      tests/pem/pkcs/rsa-aes-192-ofb.pem
  64. 0 0
      tests/pem/pkcs/rsa-aes-256-cbc.pem
  65. 0 0
      tests/pem/pkcs/rsa-aes-256-cfb.pem
  66. 0 0
      tests/pem/pkcs/rsa-aes-256-ctr.pem
  67. 0 0
      tests/pem/pkcs/rsa-aes-256-ofb.pem
  68. 0 0
      tests/pem/pkcs/rsa-bf-cbc.pem
  69. 0 0
      tests/pem/pkcs/rsa-bf-cfb.pem
  70. 0 0
      tests/pem/pkcs/rsa-bf-ofb.pem
  71. 0 0
      tests/pem/pkcs/rsa-camellia-128-cbc.pem
  72. 0 0
      tests/pem/pkcs/rsa-camellia-128-cfb.pem
  73. 0 0
      tests/pem/pkcs/rsa-camellia-128-ctr.pem
  74. 0 0
      tests/pem/pkcs/rsa-camellia-128-ofb.pem
  75. 0 0
      tests/pem/pkcs/rsa-camellia-192-cbc.pem
  76. 0 0
      tests/pem/pkcs/rsa-camellia-192-cfb.pem
  77. 0 0
      tests/pem/pkcs/rsa-camellia-192-ctr.pem
  78. 0 0
      tests/pem/pkcs/rsa-camellia-192-ofb.pem
  79. 0 0
      tests/pem/pkcs/rsa-camellia-256-cbc.pem
  80. 0 0
      tests/pem/pkcs/rsa-camellia-256-cfb.pem
  81. 0 0
      tests/pem/pkcs/rsa-camellia-256-ctr.pem
  82. 0 0
      tests/pem/pkcs/rsa-camellia-256-ofb.pem
  83. 0 0
      tests/pem/pkcs/rsa-cast5-cbc.pem
  84. 0 0
      tests/pem/pkcs/rsa-cast5-cfb.pem
  85. 0 0
      tests/pem/pkcs/rsa-cast5-ofb.pem
  86. 0 0
      tests/pem/pkcs/rsa-des-cbc.pem
  87. 0 0
      tests/pem/pkcs/rsa-des-cfb.pem
  88. 0 0
      tests/pem/pkcs/rsa-des-ede3-cbc.pem
  89. 0 0
      tests/pem/pkcs/rsa-des-ede3-cfb.pem
  90. 0 0
      tests/pem/pkcs/rsa-des-ede3-ofb.pem
  91. 0 0
      tests/pem/pkcs/rsa-des-ofb.pem
  92. 0 0
      tests/pem/pkcs/rsa-encrypted.pk8
  93. 0 0
      tests/pem/pkcs/rsa-idea-cbc.pem
  94. 0 0
      tests/pem/pkcs/rsa-idea-cfb.pem
  95. 0 0
      tests/pem/pkcs/rsa-idea-ofb.pem
  96. 0 0
      tests/pem/pkcs/rsa-pub.pem
  97. 0 0
      tests/pem/pkcs/rsa-rc2-40-cbc.pem
  98. 0 0
      tests/pem/pkcs/rsa-rc2-64-cbc.pem
  99. 0 0
      tests/pem/pkcs/rsa-rc2-cbc.pem
  100. 0 0
      tests/pem/pkcs/rsa-rc2-cfb.pem

+ 2 - 1
src/headers/tomcrypt.h

@@ -69,11 +69,12 @@ enum {
 
    CRYPT_PK_INVALID_SIZE,  /* Invalid size input for PK parameters */
 
-   CRYPT_INVALID_PRIME_SIZE,/* Invalid size of prime requested */
+   CRYPT_INVALID_PRIME_SIZE, /* Invalid size of prime requested */
    CRYPT_PK_INVALID_PADDING, /* Invalid padding on input */
 
    CRYPT_HASH_OVERFLOW,     /* Hash applied to too many bits */
    CRYPT_PW_CTX_MISSING,    /* Password context to decrypt key file is missing */
+   CRYPT_UNKNOWN_PEM,       /* The PEM header was not recognized */
 };
 
 #include "tomcrypt_cfg.h"

+ 3 - 0
src/headers/tomcrypt_misc.h

@@ -160,6 +160,9 @@ int padding_depad(const unsigned char *data, unsigned long *length, unsigned lon
 #endif  /* LTC_PADDING */
 
 #ifdef LTC_PEM
+int pem_decode_filehandle(FILE *f, ltc_pka_key *k, const password_ctx *pw_ctx);
+int pem_decode(const void *buf, unsigned long len, ltc_pka_key *k, const password_ctx *pw_ctx);
+
 int pem_decode_pkcs_filehandle(FILE *f, ltc_pka_key *k, const password_ctx *pw_ctx);
 int pem_decode_pkcs(const void *buf, unsigned long len, ltc_pka_key *k, const password_ctx *pw_ctx);
 

+ 2 - 0
src/misc/error_to_string.c

@@ -53,6 +53,8 @@ static const char * const err_2_str[] =
    "Hash applied to too many bits.",
 
    "Password context to decrypt key file is missing.",
+
+   "The PEM header was not recognized",
 };
 
 /**

+ 23 - 0
src/misc/pem/pem.c

@@ -233,4 +233,27 @@ error_out:
    return err;
 }
 
+int pem_decode_filehandle(FILE *f, ltc_pka_key *k, const password_ctx *pw_ctx)
+{
+   int err = pem_decode_pkcs_filehandle(f, k, pw_ctx);
+   if (err == CRYPT_OK || err != CRYPT_UNKNOWN_PEM)
+      return err;
+#if defined(LTC_SSH)
+   rewind(f);
+   err = pem_decode_openssh_filehandle(f, k, pw_ctx);
+#endif
+   return err;
+}
+
+int pem_decode(const void *buf, unsigned long len, ltc_pka_key *k, const password_ctx *pw_ctx)
+{
+   int err = pem_decode_pkcs(buf, len, k, pw_ctx);
+   if (err == CRYPT_OK || err != CRYPT_UNKNOWN_PEM)
+      return err;
+#if defined(LTC_SSH)
+   err = pem_decode_openssh(buf, len, k, pw_ctx);
+#endif
+   return err;
+}
+
 #endif /* LTC_PEM */

+ 2 - 0
src/misc/pem/pem_pkcs.c

@@ -215,6 +215,8 @@ retry:
          goto retry;
       } else if (err == CRYPT_OK) {
          break;
+      } else if (err != CRYPT_UNKNOWN_PEM) {
+         goto cleanup;
       }
       hdr.id = NULL;
    }

+ 1 - 1
src/misc/pem/pem_read.c

@@ -170,7 +170,7 @@ int pem_read(void *pem, unsigned long *w, struct pem_headers *hdr, struct get_ch
    }
    if (hdr->id->start.len != linelen || XMEMCMP(buf, hdr->id->start.p, hdr->id->start.len)) {
       s_unget_line(buf, linelen, g);
-      return CRYPT_INVALID_PACKET;
+      return CRYPT_UNKNOWN_PEM;
    }
 
    hdr->encrypted = hdr->id->flags & pf_encrypted;

+ 2 - 0
src/misc/pem/pem_ssh.c

@@ -537,6 +537,8 @@ retry:
          goto retry;
       } else if (err == CRYPT_OK) {
          break;
+      } else if (err != CRYPT_UNKNOWN_PEM) {
+         goto cleanup;
       }
       hdr.id = NULL;
    }

+ 2 - 1
tests/common.c

@@ -161,6 +161,7 @@ int test_process_dir(const char *path, void *ctx, dir_iter_cb iter, dir_fiter_cb
 #if defined(LTC_TEST_DBG) && LTC_TEST_DBG > 1
          fprintf(stderr, "%s: Skip: %s\n", test, fname);
 #endif
+         err = CRYPT_OK;
          goto continue_loop;
       } else if (err != CRYPT_OK) {
 #if defined(LTC_TEST_DBG)
@@ -170,7 +171,7 @@ int test_process_dir(const char *path, void *ctx, dir_iter_cb iter, dir_fiter_cb
 #endif
          break;
       }
-      if ((err != CRYPT_NOP) && (cleanup != NULL)) {
+      if (cleanup != NULL) {
          cleanup(ctx);
       }
 

+ 49 - 0
tests/pem/non-tfm/ssh_rsa_4096_openssh

@@ -0,0 +1,49 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+-----END OPENSSH PRIVATE KEY-----

+ 50 - 0
tests/pem/non-tfm/ssh_rsa_4096_openssh_pw

@@ -0,0 +1,50 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+eF7XqLa7SIo0XBe/NQOsuEVlQ=
+-----END OPENSSH PRIVATE KEY-----

+ 51 - 0
tests/pem/non-tfm/ssh_rsa_4096_pem

@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKAIBAAKCAgEAo6FKkV/bSemFY/hO2NA/aMtkglLaC5jaqLzDnP21gfhYPBoB
+EDaffV7x+qfv1wyGODJvdUPaNa8nVpwJxyrP/SzskqTlDW235Q7BbLTfGa6qsrj4
+iKGamsEL2HsZNP9GcjXJAPX1gCmQyaJtTeQ7rQSueQ4KuNMh5KQAep5anVi2PCGm
+9FeCyk7TQRsna3T0fANdCOeJA5BccfNjTmTSfYau0GGCQ7C+S3v3wfj6iJLD+aqN
+pX2jyXvcbce5uPhSCUUEDi6xXn/ytLTtWb9FOXVTR5llockzeLZ8KBF+KWe2JBx3
+pnARYl+Mbe9P86bxuXLiDzMCSAOT+9sOwOYnykqEy65EBsu8lv3s8sa5uNjYOYzU
+G/o7IrkIXJ1PyCoqe8TtSts8Uj4XMA0USDxhsJAnzK6+TxuBFZ/TyQnlv8nUKTpu
+MrCWsvAGcckKIT9Y0WrLrPqlBqLzhw+q44g64NJQ6SWOwn+hLT1P2dBhcn+VmOPe
+dpUYmsCFy4tFTgHsRv7P5/niIsE4hTrZ5lEY0Yyyd05ZFcvwvSMOkwWibBfQ1vzD
+eAXmDEgFaHVY6lici0HO7pW8poLjLjZ5IQ40NV0dElzcPX80/ZRPjQvhDsMcrDrv
+svRK1epQPJhMcLZrv2vcx1J8rp11M/GVRYeplIT9E3O1/xf0Nl008c8wuI8CAwEA
+AQKCAgBwIwwIPqn4qEma7kOSwHyEI8dYrNDzW6iWNO7VuuVWEczeO2/5HYYFlDi+
+77IlLVcaUi4iLgLwAX4zE7J7xLJPLidehBTZNBTvrEIQbo/qeNJQswTYFe/vGFc2
+332x3TP49zUuLGE3mMS5+k9wLvZapzeujFn6ue6jU2Vkovs0k+Qnp2RUVVizrnuG
+RcapFLir+F4cyRgT0i4YhZTL17qM/ez1r61nGEwBTQ7I5wlC6VnW0vRJsqW5YeH5
+dgOoaL1Hzv1tfsBdI9A/2TJD7BnTu7z793s3+bwFgQHrL7nHRGUFsGCrNmgjg5mo
+iXXAY+uKjNmxUuLAWXtkAYbF2bTwC57/kaNDv7fjlHmzxwgyLq/SguNU3c72Y7rv
+oz4jmoi9794NfcUoj8RTyBfvIB6rtRVX3sTOhz8P3d4Lh8xepitE5ysU4TdCMWvs
+A0IX/r1yilmj+CPESM3ziSwUd31QHkBgDYFxRfkDp0ildTUfDYf6tLs7k55ejsCF
+ddn8PvbzMvhRDLmStjdUBCfGDuOAhjmighuwkS26w/AQ9ndZ6iAAVgDEk1ZgMQhf
+V1daWNN5ixh60QVZgXP/c5IpyikPKUMt2qmemmlJDuyuN5rAHnFPnpl/NGvlLaQt
+FnFxXn24NsMus3qHSfL8TJkXEV8ZXiBXR7qsaMZ/m5xB/bz9kQKCAQEA02z7kwi4
+/GshGZcSZ5IUk2OnxBnwmImpYocG3kELZAwoLGqYerVw8JFvGmPkGwlXbrHg34tm
+OCmPxpcd6A8lBhuTmDO8OW+S1rWqLuYhfV/1PYOWj1YetnKAoRmEqa7PnPZPf2uk
+eYq0gDzCOQ4tBwKBqpwa0rrGxahIGwCWh84yKgon/pZ6tjm4hr0GaZF+yK13Cy74
+IiAOVXYoC3qsVvju5Qql6zk4NsX1pj8EkLmQc44T53RBowskBlX/e6/H42zSxbFn
+rnZq+cEh9bTYcHZPhyMggzetx18dlZil5B1gKhvDpKo5XYiFGuc8S8/4IXxdsKNw
+S2BiKNCB6OsrmQKCAQEAxiCxOfGXLGfNbdakQxDboSZWS7kyOIBBDwspj0Jobyif
+o/S9D0hJmaU4QwT7c3zXCBzjicUmjKMgM9feeN7rDOWdBiRkdqOZAGC204Vf9jKm
+XAf9gwbs0o/35Xy7t7QZlA+PJQxr56virlsPiENIGcMZhbrC9Pnvpv2dNh8BbBbD
+Amif7NNbe6Ry9KvQ0wo5nRI3Bdl2ybFswpnpbTY69ytxHNzYtyqYByT27cYsY+fS
+kRfa85e9TcxIC8BPTQToTnm72uh1UNbPy/hmz1/TkiILSQzxNXbxEQ21LUQmM+wa
+BeQpvrK+uu7F/naFV0nX9QdfrQaHvACtiqNvTRBeZwKCAQAr5m02UpFWmEf/MEc6
+CjMLh53GMjyq76qkMrVSYN8knwGYd2nB0PrqeMhBCozKsF3fNkAjKqbG8ppP+gDT
+tpFRe1hiOhvTMT+kJYR4yIAbsFkTtMcGbDNkXtImoU3SjeG+DcbkBk3Yjtx75CHQ
+BwmCcxrJejB3oSC02gRe1vhqqn3wDLvROR2xyLpv/7/dG8DfmmUlhVMwgsd3J1mZ
+SJeQV5ADLvrUpMTvWptvMZaZFm7QD6hCXvliCWYpiqHJ5O30YxxAwF1u9FeyFFAg
+3LQ0ZdyNitWtaVpEE5PpBBEuFItrMuikwFO5ACfjNjBm7X/wNAqgKs+eVx0KrIDN
+BEfBAoIBADsszIIX7CTxI+QodYsqX86z2pZnS96gP840cUc+eF6q7XNUx5rm5kSj
+mjg6JrgJk1fy+OrPHYJnvlh9ow7K1b1WXx3UhMUCe9InELQAY/bujc1y/X7C9Ly3
+Dz1VkeN+QR19wC06loftSJj2zZ7PKZu4L8lHTK9Kbw+bM/dUL2KPMdNoWEutnOdC
+6Kq3HnnJ1gdZx2FR4C7BdVByE8vwpI/qQ7BxLbEXYazQl4fQ5rU4KiX30AdtTLcN
+yn7oA0dnrdKyfS8WuuNYJVwwZtSNNG2zCVfaK7jiO4HybCiG8DoVzHfx+53fWSQP
+6Mbls1Gs1nlyqFrPVn8KXMrJoZaMywUCggEBAMJ+udqN5hEiDHE5wMgrI9Dwdn9I
+zHFfN9/gn/ffRvsIN9MvYxcK0UhPPQ/PH+GXgPYJDEYrRC9+HJmkIs+x/xzWysft
+0+PyFmlA5BEg8tXsPqBpDlKLpd8PWomwfN497ZLdv3geEHzcdZOc+7isX60Q9h0R
+J0FH9pCwAXTuhihdbRKnRoFIVySSxYbK644k6TW53LO/jxG6rpRHIzj2n2TMs9kR
+wp5A3ON2DM7n9gS7fI8k4+X9YGlTBfsO0VJ2Y4ZSFZbV3cAK6RIU8cpAs/2dwyet
+1TjK3J88LTcwrvu4Q5vBRjjyg4t/wRzq+qSCfC1BKvwYo/LTdXL4v0T5oXA=
+-----END RSA PRIVATE KEY-----

+ 13 - 0
tests/pem/non-tfm/ssh_rsa_4096_pem.pub

@@ -0,0 +1,13 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIICCgKCAgEAo6FKkV/bSemFY/hO2NA/aMtkglLaC5jaqLzDnP21gfhYPBoBEDaf
+fV7x+qfv1wyGODJvdUPaNa8nVpwJxyrP/SzskqTlDW235Q7BbLTfGa6qsrj4iKGa
+msEL2HsZNP9GcjXJAPX1gCmQyaJtTeQ7rQSueQ4KuNMh5KQAep5anVi2PCGm9FeC
+yk7TQRsna3T0fANdCOeJA5BccfNjTmTSfYau0GGCQ7C+S3v3wfj6iJLD+aqNpX2j
+yXvcbce5uPhSCUUEDi6xXn/ytLTtWb9FOXVTR5llockzeLZ8KBF+KWe2JBx3pnAR
+Yl+Mbe9P86bxuXLiDzMCSAOT+9sOwOYnykqEy65EBsu8lv3s8sa5uNjYOYzUG/o7
+IrkIXJ1PyCoqe8TtSts8Uj4XMA0USDxhsJAnzK6+TxuBFZ/TyQnlv8nUKTpuMrCW
+svAGcckKIT9Y0WrLrPqlBqLzhw+q44g64NJQ6SWOwn+hLT1P2dBhcn+VmOPedpUY
+msCFy4tFTgHsRv7P5/niIsE4hTrZ5lEY0Yyyd05ZFcvwvSMOkwWibBfQ1vzDeAXm
+DEgFaHVY6lici0HO7pW8poLjLjZ5IQ40NV0dElzcPX80/ZRPjQvhDsMcrDrvsvRK
+1epQPJhMcLZrv2vcx1J8rp11M/GVRYeplIT9E3O1/xf0Nl008c8wuI8CAwEAAQ==
+-----END RSA PUBLIC KEY-----

+ 54 - 0
tests/pem/non-tfm/ssh_rsa_4096_pem_pw

@@ -0,0 +1,54 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,E8CCE89C1882B2018C2B6C62759562F5
+
+t86bjSrE+zRoSSlM5nIpX9zOnPvctVGKm52+SrwIyI/1A3xH9MfJ2ATwmgRR5bRe
+1v+855s3K1M6S8cn9wpoih4I71tVPQ0oIBgQa8/jUam7cI+Ye0BDx5r124B2PVsu
+QtFVPAMvUfZ7LXAwnPHxfMznJXmW2nhI86rYZYbhOFv+63F1KI4goBdlkAtNPtnW
+NiMHWfUQQ0a02IngWxniIbcQ74ZgGYvsgs3ogeMBZ2QHjXakIizLpFndCoUu39z+
+UfrG7d+6D3azJW4/d1AUpKkNxyiVAJ8/sVkwIM6CcnCfWPhakWMcqOMyelBxAd2B
+WOQnHqSIbPgAO4iGvImAaRQSEKh4ZZb2Ulb0Ol7TaU3LAUIdbYs2Q5IhmvaoXWsa
+8LTBE8VmQ5Duaf38353ZmqMADne/yClaoW0DQJy8tbgbUuQK2DgUg1CFitT6zAoV
+UFjVOPTBFiYyWlO9igdajm2deSWFbaJCtqvGMvP/oCiFDCQU8EELRVDIxRKzdKFK
+mt5crHdhqqUChq7TYzDLqPeCWixi2tFQImp/1XGFloEmpQs50wEFChXMxCMwso24
+Ic7F2xByMdlWM3IM1/523QQ4urqEKeyd9o7j+rF/EUdtx+0PLhCjgxgvs8ZAzdkZ
+nUh97ec0ttPCCYgorvFUMIlbWy9cLWA9Viq2NlHB14wy2+draSjGl9qY0q5ecieh
+/ih04So8YDGf10R7WH+UFCwXEN4gDrtzAbnx3eIY36q96Y14QjS6rssC/AlQJk0B
+M48WOndoa0fdOXvSjStkjTd+zHfs5dr1hYBuZLfI49/TpobysPjK8V+farhi4aWd
+peCOcbUbmU9+Y49t1sxuDpINXs9tqJ40wuaSe4k2n0Qn8yt3Ud7tJLtVmvZ1Gg1g
+BMouWXbT+lD0P1CDlkl4lzAXJSTigkXMFEt2HoxaY98seJCzXFNcZTqgHl/ATxHC
+PGYF3KteOALZsnmBExm8HGE0doUSmo+20W5Uh67Wy8/9A8g7EyQ4IoFECf5gqdw8
+MFLEdkEgWxiANzb/Ksp0RzlmKhdNBpfglOV156Vt2r/uTDGpdoqvML7jT+OG+4Cm
+K1kAfV4PGslNXTl/ziErlJ4pxOZJL+OpxpiYs2b7VUWVLo5Sa4N/6Y+lope4o9Y7
+mg38oiNOL2zRhRaC4rfEQyvrEFeES4xBZiiUQd07JzwxHD+YtXLcei7bwi3YVBDA
+WTK5oCyIWvuslIFcqoCKlLh0+yOfjF+ecyBxIb8PF7ISdoWRYQWeJhFeVIJR09zU
+FYv8GVKihHrG48J4Vy28wDPE9XH8TDzuELyVLLwev9h8CftblxYGDZLvHwhEuR6N
+GqxuuLaOZcxuLFV/C0hPedfW0FVYG9OG45r617lWN3l1plH44d7PaKvFQpI3FauC
+wWIPmkD6Romi2oBC2LvbZcNf52a29oAp3SyB0XXbTMkHqUqFShRJ4ohUUsDOU1N9
+3aKwLVcZoOb1yCynP3TBUA9//t+cRH1ihbfLs38AYZsk7W72vQ5P8w2hknWQmNyJ
+QA0a2xMPHPeUA/j+NIofa+RRxR+J4yl+sY4t8qdtwFfvZuI9Bn301WF1KcXn4VER
+Y+5vE6cObaLGu5xbbpgbPaHDOjW8pDQZ0qhIouQQIhZEqkJqGhtopjjfJfxvWyrk
+4lusaOjg8KWzTMSEqS+Wc5AiaigM4ZfutHPjvynPPnIw47ersZwxTfvWv0zEyNve
+xJluj2CBOxuG+B6zt8AKJmBGJrehpZ+b0UFiHqosgZHXleW4ruVPnYUIwD7outhr
+BrSR3pFwIWJHAmI71UCJm9SjU6psl+WyV46O2BWX+D55QGg8GQTbob2UVsW8v/KB
+2/A92GQR1Ozrl+TXNYTVWGu73mDC3l2ZmNaFeYP4OyVJ5GtYORq8FuEGgtezE1tD
+RlBMgkOeS6X4ThGnwqYRJrIgjHOhpk8LPvFzSHjjfDMmWwns9bdnV6zXsrZowGnv
+tsYtMEzuaMt/xFQQRUcUHmrVHdkH1O7TM5uR3+8c7Z9X/gxWCswXqifku6NS3wAR
+q8uLholVN3lvEailMzU+1/WLGkDBHYqhfMB6gQB7qigdAhcjemqNgc9qHAMs3kz/
+iYMI1j2xamCwzR6CjV1P+O1aSzWdzrlzzPWQoSH9xq3TN4urAGHKTU0Vy0oawya+
+ifsyderqNiww+3d4MpGcgj9nQM0O9xJSdVHB50M9TwfZiAh6UzyfIkMGeizJ38q2
+Z0itpoR0fdP/LqBXNzYwc38YH8+xw6pERH3cPPUAn0sMp0+u+90ce7lW5dCCwl3J
+UBUv5NdM2hGvUTwoGYRKW28mss+zwqeq+lB9aJD5q+UDO/xEgm1LgpXHnxPiq0vw
+IFo/pOjUn61encDN3vfG7Srk+CMuNAaZN6CFvdj5eEFBfAQ7c0epO0ZGBBGZboWn
+W/9amLGlLLjMpKSXqYZO7fezCUWKmfq1qQAZI9lF2zlBra4e/4RAx/EvqY8K85Sd
+m3Ye98I36onVSOXakCk4D+YPi7rzXPO0RnuWSjv3RpEu9tpV/E2Dc8bYjmXRKUw9
+icF3IeTmKuV2ByzyaZOR0YLFdePeQa6rQVPNJ52XwolUDhwcQjmqjGdwW9lz2RBS
+t3EBOJVgdilCmkInXVWMInqXdAa/5CQ5zqSnFlW+LoIFcbIguTAfU7U4SFu7CPBA
+xEXBVPvHCdgnbgceg4aCZkTZS5TLTkUj+cDyscZGpXoy/MGer5VcxxGMXHInW4wf
+USuHKpg3+kb7rfR8HUPaHh76/GifFWurkE2I/J5C1jKXHtTSlC30i4xmFAWRY9W8
+XbApcRQK3K5WV39S2HSEGa0ZWofl1L8hN9SOvt8lQ6iAcggRWcdw8S3cjQMe/z0m
+QHTCMpyorxFht8Q0qqw+Pex+8P7QMjjG3f3jDlQCsN9qTM4kQk7esHjAppQ9qttU
+749ZJjbP91n9eAo8C4BASuIve+ACGQZg7vBvUy+qdumyzFDDc78hpvwhHk4uQ9u2
+Vlx2/KbrQv5snYVCHN76P6Rj0UpMpUA9ujZIhQPcjH8RWf17sQ8zXtcssD30AelR
+scrfgKLK4Wjxbez2r2oMQQTWV64o4GuYJx/8m/j1NLOlkdC8QyyQ3L+l9Bba2jDK
+-----END RSA PRIVATE KEY-----

+ 52 - 0
tests/pem/non-tfm/ssh_rsa_4096_pkcs8

@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+HOr6pIJ8LUEq/Bij8tN1cvi/RPmhcA==
+-----END PRIVATE KEY-----

+ 14 - 0
tests/pem/non-tfm/ssh_rsa_4096_pkcs8.pub

@@ -0,0 +1,14 @@
+-----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAo6FKkV/bSemFY/hO2NA/
+aMtkglLaC5jaqLzDnP21gfhYPBoBEDaffV7x+qfv1wyGODJvdUPaNa8nVpwJxyrP
+/SzskqTlDW235Q7BbLTfGa6qsrj4iKGamsEL2HsZNP9GcjXJAPX1gCmQyaJtTeQ7
+rQSueQ4KuNMh5KQAep5anVi2PCGm9FeCyk7TQRsna3T0fANdCOeJA5BccfNjTmTS
+fYau0GGCQ7C+S3v3wfj6iJLD+aqNpX2jyXvcbce5uPhSCUUEDi6xXn/ytLTtWb9F
+OXVTR5llockzeLZ8KBF+KWe2JBx3pnARYl+Mbe9P86bxuXLiDzMCSAOT+9sOwOYn
+ykqEy65EBsu8lv3s8sa5uNjYOYzUG/o7IrkIXJ1PyCoqe8TtSts8Uj4XMA0USDxh
+sJAnzK6+TxuBFZ/TyQnlv8nUKTpuMrCWsvAGcckKIT9Y0WrLrPqlBqLzhw+q44g6
+4NJQ6SWOwn+hLT1P2dBhcn+VmOPedpUYmsCFy4tFTgHsRv7P5/niIsE4hTrZ5lEY
+0Yyyd05ZFcvwvSMOkwWibBfQ1vzDeAXmDEgFaHVY6lici0HO7pW8poLjLjZ5IQ40
+NV0dElzcPX80/ZRPjQvhDsMcrDrvsvRK1epQPJhMcLZrv2vcx1J8rp11M/GVRYep
+lIT9E3O1/xf0Nl008c8wuI8CAwEAAQ==
+-----END PUBLIC KEY-----

+ 54 - 0
tests/pem/non-tfm/ssh_rsa_4096_pkcs8_pw

@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----

+ 14 - 0
tests/pem/non-tfm/ssh_rsa_4096_rfc4716.pub

@@ -0,0 +1,14 @@
+---- BEGIN SSH2 PUBLIC KEY ----
+Comment: "4096-bit RSA, converted by miko@YUE from OpenSSH"
+AAAAB3NzaC1yc2EAAAADAQABAAACAQCjoUqRX9tJ6YVj+E7Y0D9oy2SCUtoLmNqovMOc/b
+WB+Fg8GgEQNp99XvH6p+/XDIY4Mm91Q9o1rydWnAnHKs/9LOySpOUNbbflDsFstN8Zrqqy
+uPiIoZqawQvYexk0/0ZyNckA9fWAKZDJom1N5DutBK55Dgq40yHkpAB6nlqdWLY8Iab0V4
+LKTtNBGydrdPR8A10I54kDkFxx82NOZNJ9hq7QYYJDsL5Le/fB+PqIksP5qo2lfaPJe9xt
+x7m4+FIJRQQOLrFef/K0tO1Zv0U5dVNHmWWhyTN4tnwoEX4pZ7YkHHemcBFiX4xt70/zpv
+G5cuIPMwJIA5P72w7A5ifKSoTLrkQGy7yW/ezyxrm42Ng5jNQb+jsiuQhcnU/IKip7xO1K
+2zxSPhcwDRRIPGGwkCfMrr5PG4EVn9PJCeW/ydQpOm4ysJay8AZxyQohP1jRasus+qUGov
+OHD6rjiDrg0lDpJY7Cf6EtPU/Z0GFyf5WY4952lRiawIXLi0VOAexG/s/n+eIiwTiFOtnm
+URjRjLJ3TlkVy/C9Iw6TBaJsF9DW/MN4BeYMSAVodVjqWJyLQc7ulbymguMuNnkhDjQ1XR
+0SXNw9fzT9lE+NC+EOwxysOu+y9ErV6lA8mExwtmu/a9zHUnyunXUz8ZVFh6mUhP0Tc7X/
+F/Q2XTTxzzC4jw==
+---- END SSH2 PUBLIC KEY ----

+ 93 - 0
tests/pem/non-tfm/ssh_rsa_8192_openssh

@@ -0,0 +1,93 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+-----END OPENSSH PRIVATE KEY-----

+ 94 - 0
tests/pem/non-tfm/ssh_rsa_8192_openssh_pw

@@ -0,0 +1,94 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+H4oZcrVbjmmZUE+z4=
+-----END OPENSSH PRIVATE KEY-----

+ 99 - 0
tests/pem/non-tfm/ssh_rsa_8192_pem

@@ -0,0 +1,99 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----

+ 24 - 0
tests/pem/non-tfm/ssh_rsa_8192_pem.pub

@@ -0,0 +1,24 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIIECgKCBAEAqV97tjVnMe5+B6Hu/wGKiyLWEcHLLW07r3tMk2ehx3MCrOkQoQob
+p0lZ3tn5MXnLi3aYgGTa3Y2u7EMai9MA4vr41rnC5pdIQ0NoqT8uP/OPQ5kHjVYd
+daEaFJAOh6SOaEq+S0yRqV4p0/wkTD95VOKDOxl8MjrJRwSbEM98cImYIwvXbFNO
+ha2S8W8tJ6AeRJBmB1iFO0wAaIFa5fqvGqohSJYuqFFuEBpXn0DW79cp/z9cZJPy
+Q6TewWVu119XGwHNfafjKlbjHpCN+G4xzKFVOXr2OFqprX1kSKKLpwHJQrojrnv6
+q2DKF8KOuCazGl9fZyJeuY6w6n4wrUULVquovQ/6Uxdi8xEYBJC1PcVerLSFypHK
+Y8hKwa75SpUR3V1oZBjdV6J0yt9hkjzsbA5EbMozgq3zJU5HLjrpyASs6RVhdDfZ
+uh+o4f5g3Wrb0Nbe9nJYE4ECNa67cYeEc24ik4auxhLkJ+WlY7I/2dKvqnmO9be5
+TRdZGmi2uOJD1nJkjKr/brNFPdJoEp/ifyrRZwQQ87OIELJ+eARMmVIRf6jpeBX6
+YM0evis3UEX15RmNixR05T23ciZ7AZUbN5Xdlt5YIWzTYuFWbC7dLMg3cmltsK92
+rVpRbKuV8ZBmO/5ckcx5VkQiAG0kmYA8/2lgQXab4OeALSL0ScrDtZ2XXw9G9TS4
+w/KBrd4X7VslJ/+v1IoFt+gH6oLCYx5ctpqUlud5WCR5LbKz360AzU9yf0n7SqRk
+41OUcMc+NSUkMBInzOS6JhvzBq8OfpCRnaeBoZUUqn9uZUdwUUo0iOq+6H2Dxjgk
+nPU1o5xIn79R7XB9PJs3fdgbullwlhaV8Xq3/aC0lmJWQy1JfZ8XaXJRmqkMslV8
+BViilInrtPsIP7tmK8q0NSYE7AJVhWIfP0qPclsql3MBZCqS9HFn9bEW0U7i84VC
+MnN9TDVslTdT/o9RxihL3ilXxk8YmjcfKsRBZbLLDVZhcB7ywe7F+z/ITF42cXr0
+3pCi5Ckfv/xBEKfKsIxw5Tj1ptbUD7ijB7Gw3I8cl6hTuhzBCYX3ldDliurQTJcq
+UozPPvH5qhQUoiRplzNUtL//Eug9kP9zq5xQ+VyzrLrm02HkqiTcyGi0jbx7xpNb
+SUanOKkIw0VyPGUPkBmSQZd3ox1DPX9XDTAKQqJuEX3GarytDU3rG+DoRReyt1fA
+W+g32Glu+k7SUGLTf7BgMHkq4n812d12gR3pQq4fdZKM8yqxHCWHhrVH0faPNt1N
+6U5OW1+0LxAoC7j+huS/C3OlfFSPIl4VeknxFTfXnMIepy7FB4pqkuSL3cp26kPa
+49/mYWlUIh5qxdZ9468ZxCGNCFklHVMB+QIDAQAB
+-----END RSA PUBLIC KEY-----

+ 102 - 0
tests/pem/non-tfm/ssh_rsa_8192_pem_pw

@@ -0,0 +1,102 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,08E74DA1D2393FDB21570427A7128EA6
+
+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
+-----END RSA PRIVATE KEY-----

+ 100 - 0
tests/pem/non-tfm/ssh_rsa_8192_pkcs8

@@ -0,0 +1,100 @@
+-----BEGIN PRIVATE KEY-----
+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
+5F5LKydVEM2RG7tjljSgYDBBDgnk9+M=
+-----END PRIVATE KEY-----

+ 25 - 0
tests/pem/non-tfm/ssh_rsa_8192_pkcs8.pub

@@ -0,0 +1,25 @@
+-----BEGIN PUBLIC KEY-----
+MIIEIjANBgkqhkiG9w0BAQEFAAOCBA8AMIIECgKCBAEAqV97tjVnMe5+B6Hu/wGK
+iyLWEcHLLW07r3tMk2ehx3MCrOkQoQobp0lZ3tn5MXnLi3aYgGTa3Y2u7EMai9MA
+4vr41rnC5pdIQ0NoqT8uP/OPQ5kHjVYddaEaFJAOh6SOaEq+S0yRqV4p0/wkTD95
+VOKDOxl8MjrJRwSbEM98cImYIwvXbFNOha2S8W8tJ6AeRJBmB1iFO0wAaIFa5fqv
+GqohSJYuqFFuEBpXn0DW79cp/z9cZJPyQ6TewWVu119XGwHNfafjKlbjHpCN+G4x
+zKFVOXr2OFqprX1kSKKLpwHJQrojrnv6q2DKF8KOuCazGl9fZyJeuY6w6n4wrUUL
+VquovQ/6Uxdi8xEYBJC1PcVerLSFypHKY8hKwa75SpUR3V1oZBjdV6J0yt9hkjzs
+bA5EbMozgq3zJU5HLjrpyASs6RVhdDfZuh+o4f5g3Wrb0Nbe9nJYE4ECNa67cYeE
+c24ik4auxhLkJ+WlY7I/2dKvqnmO9be5TRdZGmi2uOJD1nJkjKr/brNFPdJoEp/i
+fyrRZwQQ87OIELJ+eARMmVIRf6jpeBX6YM0evis3UEX15RmNixR05T23ciZ7AZUb
+N5Xdlt5YIWzTYuFWbC7dLMg3cmltsK92rVpRbKuV8ZBmO/5ckcx5VkQiAG0kmYA8
+/2lgQXab4OeALSL0ScrDtZ2XXw9G9TS4w/KBrd4X7VslJ/+v1IoFt+gH6oLCYx5c
+tpqUlud5WCR5LbKz360AzU9yf0n7SqRk41OUcMc+NSUkMBInzOS6JhvzBq8OfpCR
+naeBoZUUqn9uZUdwUUo0iOq+6H2DxjgknPU1o5xIn79R7XB9PJs3fdgbullwlhaV
+8Xq3/aC0lmJWQy1JfZ8XaXJRmqkMslV8BViilInrtPsIP7tmK8q0NSYE7AJVhWIf
+P0qPclsql3MBZCqS9HFn9bEW0U7i84VCMnN9TDVslTdT/o9RxihL3ilXxk8Ymjcf
+KsRBZbLLDVZhcB7ywe7F+z/ITF42cXr03pCi5Ckfv/xBEKfKsIxw5Tj1ptbUD7ij
+B7Gw3I8cl6hTuhzBCYX3ldDliurQTJcqUozPPvH5qhQUoiRplzNUtL//Eug9kP9z
+q5xQ+VyzrLrm02HkqiTcyGi0jbx7xpNbSUanOKkIw0VyPGUPkBmSQZd3ox1DPX9X
+DTAKQqJuEX3GarytDU3rG+DoRReyt1fAW+g32Glu+k7SUGLTf7BgMHkq4n812d12
+gR3pQq4fdZKM8yqxHCWHhrVH0faPNt1N6U5OW1+0LxAoC7j+huS/C3OlfFSPIl4V
+eknxFTfXnMIepy7FB4pqkuSL3cp26kPa49/mYWlUIh5qxdZ9468ZxCGNCFklHVMB
++QIDAQAB
+-----END PUBLIC KEY-----

+ 102 - 0
tests/pem/non-tfm/ssh_rsa_8192_pkcs8_pw

@@ -0,0 +1,102 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----

+ 23 - 0
tests/pem/non-tfm/ssh_rsa_8192_rfc4716.pub

@@ -0,0 +1,23 @@
+---- BEGIN SSH2 PUBLIC KEY ----
+Comment: "8192-bit RSA, converted by miko@YUE from OpenSSH"
+AAAAB3NzaC1yc2EAAAADAQABAAAEAQCpX3u2NWcx7n4Hoe7/AYqLItYRwcstbTuve0yTZ6
+HHcwKs6RChChunSVne2fkxecuLdpiAZNrdja7sQxqL0wDi+vjWucLml0hDQ2ipPy4/849D
+mQeNVh11oRoUkA6HpI5oSr5LTJGpXinT/CRMP3lU4oM7GXwyOslHBJsQz3xwiZgjC9dsU0
+6FrZLxby0noB5EkGYHWIU7TABogVrl+q8aqiFIli6oUW4QGlefQNbv1yn/P1xkk/JDpN7B
+ZW7XX1cbAc19p+MqVuMekI34bjHMoVU5evY4WqmtfWRIoounAclCuiOue/qrYMoXwo64Jr
+MaX19nIl65jrDqfjCtRQtWq6i9D/pTF2LzERgEkLU9xV6stIXKkcpjyErBrvlKlRHdXWhk
+GN1XonTK32GSPOxsDkRsyjOCrfMlTkcuOunIBKzpFWF0N9m6H6jh/mDdatvQ1t72clgTgQ
+I1rrtxh4RzbiKThq7GEuQn5aVjsj/Z0q+qeY71t7lNF1kaaLa44kPWcmSMqv9us0U90mgS
+n+J/KtFnBBDzs4gQsn54BEyZUhF/qOl4FfpgzR6+KzdQRfXlGY2LFHTlPbdyJnsBlRs3ld
+2W3lghbNNi4VZsLt0syDdyaW2wr3atWlFsq5XxkGY7/lyRzHlWRCIAbSSZgDz/aWBBdpvg
+54AtIvRJysO1nZdfD0b1NLjD8oGt3hftWyUn/6/UigW36AfqgsJjHly2mpSW53lYJHktsr
+PfrQDNT3J/SftKpGTjU5Rwxz41JSQwEifM5LomG/MGrw5+kJGdp4GhlRSqf25lR3BRSjSI
+6r7ofYPGOCSc9TWjnEifv1HtcH08mzd92Bu6WXCWFpXxerf9oLSWYlZDLUl9nxdpclGaqQ
+yyVXwFWKKUieu0+wg/u2YryrQ1JgTsAlWFYh8/So9yWyqXcwFkKpL0cWf1sRbRTuLzhUIy
+c31MNWyVN1P+j1HGKEveKVfGTxiaNx8qxEFlsssNVmFwHvLB7sX7P8hMXjZxevTekKLkKR
++//EEQp8qwjHDlOPWm1tQPuKMHsbDcjxyXqFO6HMEJhfeV0OWK6tBMlypSjM8+8fmqFBSi
+JGmXM1S0v/8S6D2Q/3OrnFD5XLOsuubTYeSqJNzIaLSNvHvGk1tJRqc4qQjDRXI8ZQ+QGZ
+JBl3ejHUM9f1cNMApCom4RfcZqvK0NTesb4OhFF7K3V8Bb6DfYaW76TtJQYtN/sGAweSri
+fzXZ3XaBHelCrh91kozzKrEcJYeGtUfR9o823U3pTk5bX7QvECgLuP6G5L8Lc6V8VI8iXh
+V6SfEVN9ecwh6nLsUHimqS5IvdynbqQ9rj3+ZhaVQiHmrF1n3jrxnEIY0IWSUdUwH5
+---- END SSH2 PUBLIC KEY ----

+ 0 - 0
tests/pem/dh-encrypted.pk8 → tests/pem/pkcs/dh-encrypted.pk8


+ 0 - 0
tests/pem/dh.pk8 → tests/pem/pkcs/dh.pk8


+ 0 - 0
tests/pem/dsa-encrypted.pem → tests/pem/pkcs/dsa-encrypted.pem


+ 0 - 0
tests/pem/dsa-encrypted.pk8 → tests/pem/pkcs/dsa-encrypted.pk8


+ 0 - 0
tests/pem/dsa-pub.pem → tests/pem/pkcs/dsa-pub.pem


+ 0 - 0
tests/pem/dsa.pem → tests/pem/pkcs/dsa.pem


+ 0 - 0
tests/pem/dsa.pk8 → tests/pem/pkcs/dsa.pk8


+ 0 - 0
tests/pem/ecc-encrypted.pem → tests/pem/pkcs/ecc-encrypted.pem


+ 0 - 0
tests/pem/ecc-encrypted.pk8 → tests/pem/pkcs/ecc-encrypted.pk8


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem


+ 0 - 0
tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem → tests/pem/pkcs/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem


+ 0 - 0
tests/pem/ecc-pub.pem → tests/pem/pkcs/ecc-pub.pem


+ 0 - 0
tests/pem/ecc.pem → tests/pem/pkcs/ecc.pem


+ 0 - 0
tests/pem/ecc.pk8 → tests/pem/pkcs/ecc.pk8


+ 0 - 0
tests/pem/ed25519-pub.pem → tests/pem/pkcs/ed25519-pub.pem


+ 0 - 0
tests/pem/ed25519.pem → tests/pem/pkcs/ed25519.pem


+ 0 - 0
tests/pem/ed25519_attrs.pem → tests/pem/pkcs/ed25519_attrs.pem


+ 0 - 0
tests/pem/extra/ed25519-cryptx.pem → tests/pem/pkcs/extra/ed25519-cryptx.pem


+ 0 - 0
tests/pem/extra/ed25519-selfsigned.pem → tests/pem/pkcs/extra/ed25519-selfsigned.pem


+ 0 - 0
tests/pem/extra/rsa.pem → tests/pem/pkcs/extra/rsa.pem


+ 0 - 0
tests/pem/rsa-aes-128-cbc.pem → tests/pem/pkcs/rsa-aes-128-cbc.pem


+ 0 - 0
tests/pem/rsa-aes-128-cfb.pem → tests/pem/pkcs/rsa-aes-128-cfb.pem


+ 0 - 0
tests/pem/rsa-aes-128-ctr.pem → tests/pem/pkcs/rsa-aes-128-ctr.pem


+ 0 - 0
tests/pem/rsa-aes-128-ofb.pem → tests/pem/pkcs/rsa-aes-128-ofb.pem


+ 0 - 0
tests/pem/rsa-aes-192-cbc.pem → tests/pem/pkcs/rsa-aes-192-cbc.pem


+ 0 - 0
tests/pem/rsa-aes-192-cfb.pem → tests/pem/pkcs/rsa-aes-192-cfb.pem


+ 0 - 0
tests/pem/rsa-aes-192-ctr.pem → tests/pem/pkcs/rsa-aes-192-ctr.pem


+ 0 - 0
tests/pem/rsa-aes-192-ofb.pem → tests/pem/pkcs/rsa-aes-192-ofb.pem


+ 0 - 0
tests/pem/rsa-aes-256-cbc.pem → tests/pem/pkcs/rsa-aes-256-cbc.pem


+ 0 - 0
tests/pem/rsa-aes-256-cfb.pem → tests/pem/pkcs/rsa-aes-256-cfb.pem


+ 0 - 0
tests/pem/rsa-aes-256-ctr.pem → tests/pem/pkcs/rsa-aes-256-ctr.pem


+ 0 - 0
tests/pem/rsa-aes-256-ofb.pem → tests/pem/pkcs/rsa-aes-256-ofb.pem


+ 0 - 0
tests/pem/rsa-bf-cbc.pem → tests/pem/pkcs/rsa-bf-cbc.pem


+ 0 - 0
tests/pem/rsa-bf-cfb.pem → tests/pem/pkcs/rsa-bf-cfb.pem


+ 0 - 0
tests/pem/rsa-bf-ofb.pem → tests/pem/pkcs/rsa-bf-ofb.pem


+ 0 - 0
tests/pem/rsa-camellia-128-cbc.pem → tests/pem/pkcs/rsa-camellia-128-cbc.pem


+ 0 - 0
tests/pem/rsa-camellia-128-cfb.pem → tests/pem/pkcs/rsa-camellia-128-cfb.pem


+ 0 - 0
tests/pem/rsa-camellia-128-ctr.pem → tests/pem/pkcs/rsa-camellia-128-ctr.pem


+ 0 - 0
tests/pem/rsa-camellia-128-ofb.pem → tests/pem/pkcs/rsa-camellia-128-ofb.pem


+ 0 - 0
tests/pem/rsa-camellia-192-cbc.pem → tests/pem/pkcs/rsa-camellia-192-cbc.pem


+ 0 - 0
tests/pem/rsa-camellia-192-cfb.pem → tests/pem/pkcs/rsa-camellia-192-cfb.pem


+ 0 - 0
tests/pem/rsa-camellia-192-ctr.pem → tests/pem/pkcs/rsa-camellia-192-ctr.pem


+ 0 - 0
tests/pem/rsa-camellia-192-ofb.pem → tests/pem/pkcs/rsa-camellia-192-ofb.pem


+ 0 - 0
tests/pem/rsa-camellia-256-cbc.pem → tests/pem/pkcs/rsa-camellia-256-cbc.pem


+ 0 - 0
tests/pem/rsa-camellia-256-cfb.pem → tests/pem/pkcs/rsa-camellia-256-cfb.pem


+ 0 - 0
tests/pem/rsa-camellia-256-ctr.pem → tests/pem/pkcs/rsa-camellia-256-ctr.pem


+ 0 - 0
tests/pem/rsa-camellia-256-ofb.pem → tests/pem/pkcs/rsa-camellia-256-ofb.pem


+ 0 - 0
tests/pem/rsa-cast5-cbc.pem → tests/pem/pkcs/rsa-cast5-cbc.pem


+ 0 - 0
tests/pem/rsa-cast5-cfb.pem → tests/pem/pkcs/rsa-cast5-cfb.pem


+ 0 - 0
tests/pem/rsa-cast5-ofb.pem → tests/pem/pkcs/rsa-cast5-ofb.pem


+ 0 - 0
tests/pem/rsa-des-cbc.pem → tests/pem/pkcs/rsa-des-cbc.pem


+ 0 - 0
tests/pem/rsa-des-cfb.pem → tests/pem/pkcs/rsa-des-cfb.pem


+ 0 - 0
tests/pem/rsa-des-ede3-cbc.pem → tests/pem/pkcs/rsa-des-ede3-cbc.pem


+ 0 - 0
tests/pem/rsa-des-ede3-cfb.pem → tests/pem/pkcs/rsa-des-ede3-cfb.pem


+ 0 - 0
tests/pem/rsa-des-ede3-ofb.pem → tests/pem/pkcs/rsa-des-ede3-ofb.pem


+ 0 - 0
tests/pem/rsa-des-ofb.pem → tests/pem/pkcs/rsa-des-ofb.pem


+ 0 - 0
tests/pem/rsa-encrypted.pk8 → tests/pem/pkcs/rsa-encrypted.pk8


+ 0 - 0
tests/pem/rsa-idea-cbc.pem → tests/pem/pkcs/rsa-idea-cbc.pem


+ 0 - 0
tests/pem/rsa-idea-cfb.pem → tests/pem/pkcs/rsa-idea-cfb.pem


+ 0 - 0
tests/pem/rsa-idea-ofb.pem → tests/pem/pkcs/rsa-idea-ofb.pem


+ 0 - 0
tests/pem/rsa-pub.pem → tests/pem/pkcs/rsa-pub.pem


+ 0 - 0
tests/pem/rsa-rc2-40-cbc.pem → tests/pem/pkcs/rsa-rc2-40-cbc.pem


+ 0 - 0
tests/pem/rsa-rc2-64-cbc.pem → tests/pem/pkcs/rsa-rc2-64-cbc.pem


+ 0 - 0
tests/pem/rsa-rc2-cbc.pem → tests/pem/pkcs/rsa-rc2-cbc.pem


+ 0 - 0
tests/pem/rsa-rc2-cfb.pem → tests/pem/pkcs/rsa-rc2-cfb.pem


Some files were not shown because too many files changed in this diff