Selaa lähdekoodia

add PEM tests

Signed-off-by: Steffen Jaeckel <[email protected]>
Steffen Jaeckel 3 vuotta sitten
vanhempi
commit
370457f405
33 muutettua tiedostoa jossa 455 lisäystä ja 0 poistoa
  1. 11 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem
  2. 11 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem
  3. 11 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem
  4. 11 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem
  5. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem
  6. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem
  7. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem
  8. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem
  9. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem
  10. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem
  11. 12 0
      tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem
  12. 13 0
      tests/pem/ecc-encrypted.pem
  13. 12 0
      tests/pem/ecc-encrypted.pk8
  14. 10 0
      tests/pem/ecc.pem
  15. 10 0
      tests/pem/ecc.pk8
  16. 3 0
      tests/pem/ed25519.pem
  17. 5 0
      tests/pem/ed25519_attrs.pem
  18. 18 0
      tests/pem/rsa-encrypted-aes128.pem
  19. 18 0
      tests/pem/rsa-encrypted-aes192.pem
  20. 18 0
      tests/pem/rsa-encrypted-aes256.pem
  21. 18 0
      tests/pem/rsa-encrypted-camellia128.pem
  22. 18 0
      tests/pem/rsa-encrypted-camellia192.pem
  23. 18 0
      tests/pem/rsa-encrypted-camellia256.pem
  24. 18 0
      tests/pem/rsa-encrypted-des.pem
  25. 18 0
      tests/pem/rsa-encrypted-des3.pem
  26. 18 0
      tests/pem/rsa-encrypted.pem
  27. 18 0
      tests/pem/rsa-encrypted.pk8
  28. 15 0
      tests/pem/rsa.pem
  29. 16 0
      tests/pem/rsa.pk8
  30. 6 0
      tests/pem/x25519-encrypted.pk8
  31. 55 0
      tests/pem_test.c
  32. 1 0
      tests/test.c
  33. 1 0
      tests/tomcrypt_test.h

+ 11 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem

@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBiTAbBgkqhkiG9w0BBQMwDgQIzN684k11RQMCAggABIIBaL9W5ZvbQUeDz4Zb
+jISViw6ehWft1lmvZpqzA8Fik3zFIhxSZ9qr03mRdh9fU6VOfLX15NyMdFxwcYnR
+c4a/CWz/tu7XTlY4sA0lvI0tJLrTOQNcZdNUlUTbnrQ1N1VaAVWbmP4m+r+NUivz
+7ml0q3wcClRZmADg9NcTx1KnZQrbboGjIfG9mSNcpuN9OYa8muat9ytCRlBj43Fa
+YKe6xYgKwWUzBdjArIufsdeCwDnfj5qFJ/7DUOgFaGS1mzCP/zJaZHWRd5ArchP/
+NVYwIonzPgmH7UP/VHJaFiKc7qmaHP7WHuGWMci8pMH1fnpCFDshQfwBHmCwCdar
+lUy3Kwu4DUarhyde3jbDFyMwM/ffu9VJor+KZXokTYNjXPzuuM5ZBx7ZKYnFTuMJ
+NpaH+chSxK3Peif03mWQMJZuiBNh3tAGfkFb+gMAdhxzgWpDhhtE1c8Zbnwyc+Sk
+MMNju1uX2plDFluAxQ==
+-----END ENCRYPTED PRIVATE KEY-----

+ 11 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem

@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBiTAbBgkqhkiG9w0BBQYwDgQIUliSQEiAS8wCAggABIIBaMP+c+hNliY66qDg
+33YhJJfuzxVkmW95vpDNw5UqF4jWBW+3xoJHpPJk2zON5nkENQkFU2B/7HY23tLT
+lPuWoA5GDotPEMadDMLvxzuynRL9ywZjLVouKNngcLSgxZC5+LS5BqwBlfvcCqk6
+3d0XXB616f4CocTA9s6FHM24vgVEJujjj7K7V4otW7kYfLUTx8ZQ+YUNCCXI/2jB
+c0UzHlCWFQ4oZuqINzc/W04HIOerjfGhK1SN/cUboN/PJ090wFzqEPE2MWf8/2ug
+N5V2vMkrwwN5uIUumFGY7+vXWOdbs7TAplZQDGlS6I5hnJXqJMXysnweAmw/TOKl
+UM25+LQSf6V5FeRh1q7cUzRtzahXX/YKICBYHgOChVj8B5QI31RNFRUpOYOFpjeo
+fCMvNI6Qp3U9sW462xq4hvemBUUSOuM5P8M+mZxpAXxB56W5bfVTD8nWTzdMH38o
+sfWwu/7anoMxI6YN8w==
+-----END ENCRYPTED PRIVATE KEY-----

+ 11 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem

@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBiTAbBgkqhkiG9w0BBQowDgQIT35B+lfH22gCAggABIIBaNDnpB3HZ1IxSmgD
+9icYYXhKwHT9lpyAzlX8h43ccwROt/WR4N9+Q0Xcfdktv/5pVKkzkGsXD1u0x6OM
+Oevtj/O7DbfzpW3pOUAB5aaA21QOksVAvjtjuwZ8eRGa4h6aXaMUQYOo5AQAHH8/
+Ev0MqqJucgEzONByZTp9B6FwWwbioEhap9h8qX6oQ09SXQnKCNi3KxD2IDAwMDMm
+Ss+wMmq6xiGR2UUHg/+tiMHCmLTcCkvhTg6l7rsH6LEO4W3G0teholWSrke73yeO
+NhU3O0AZjUCMXqli1WxeJByermRVAIY2lnMlG6+8sDQMEVePutd7x9Y7D223VwZR
+ou59pwdJt+OHNKMCMiPIFNht5iir3zpJ+yP5wP5CDigb+RS5e03LGmT9An+8j/Kb
+PZURQSa0aqQasn2QTAF7zRlLTOPpBlSPgmWuZolZbHqkDbX0xPJYO9BlfY5nX8hS
+/18lPQ0wUIBYG19yuQ==
+-----END ENCRYPTED PRIVATE KEY-----

+ 11 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem

@@ -0,0 +1,11 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBiTAbBgkqhkiG9w0BBQswDgQIh4GKHk4SmIcCAggABIIBaFWSw80nmDwiKdqt
+u/t4WtFeyVbdtDZqX9pK1Um5lWVpdYNHBZFGtc+mQA4QTUGg7jCbOHC4YiO5FQtw
+FVay9nMGd/MAfITULLUCNr7DERM9OgP3Iy8fvnloFV7DLafDeFGlreTrGVaEzb6+
+vHkys/Q107k3UpNNZl7LUSZ+u1olENDIkm/VhInmDS8fWgOt8KfKdmQB9hpnW3Q0
+WOiUBC/SEau/o0tLc9jqwXbkUxG4tYfFlQgA6ll1N7OPmX0XOleGsVJkeyakkkZm
+78QQDDsEeDuS3Jk+L6VUbJimxUOFNzy27YhFYKFwvEoxVmAsKgBP+ycOQqIOM0Bu
+NwtfNQm4gIySqfkMGnGIrOFpXT9nk2ouIoTnT1prGBHP7IosgJATlTytChhfXCj+
+pm119VBAHho+Rx0K7WPfWh6F7gBf8v+dtlPgYdtg9KgxsESkHqLQNAOxTgyw6Wv/
+f2Ma7GbDLKr98YTwEw==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBuTBLBgkqhkiG9w0BBQ0wPjApBgkqhkiG9w0BBQwwHAQISIYM8rI/jPMCAggA
+MAwGCCqGSIb3DQIJBQAwEQYFKw4DAgcECDtoK11BLZ8yBIIBaBWpKqU/zd8dK45s
+iC3X+IdPeXmg/tlJZyKJdlLgyZMzq2hwmqpNW6OqcVUf6vRJXrmUvLXdzbc8LmHi
+hBUwtXAenYJHOt/dY2bQmHsh3UE6Rjo98CNUQkPY254kscMDCYIH2kYk5m7Axx9s
+r/GSteJ73i1snCMlguBnAw4Hfn63aWJ+quu91lTupoZ5GzP2JmByNaobOzPbLj+o
+RkQEdqjOCnRhnVKh6b7jJlJZjKC+pSrMovuVfrjfGk74MTnWDrYBBbM2whY2/1gV
+JHjfI+2UUg2AJXqrZL6aNXgRAypWqEWm74quPzw1oED1xeBv3n3qTT8ibYHNXXcl
+GGe8nduOm2sv+FZNx6LaKhutbSiCGW+TT14Rf7iYjDxDz2Zo+ngh9USb04VFhvN2
+rcdv3x2tetKqbQ6THhM9LfyArYpDF4tC2GRNCdmMcQClIMQIEwvabg14XORdYWBl
+ETQPMiGjep69gcsCLg==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIuVWjGRuwrEYCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECPNKy7KzuZplBIIBaMCytdZYGgmG
+HnRqZZefHmq6QoFtPFy0UcUx/k4QyPX98gftQZsOMQUjK3SYb0E1stwvJyuOxMk2
+QAAkSvQgdB4/O9Bn+YcAr2yN1kQ3ZGs4GhKeFdCVzha6DFXPnfumxB7nqH1A7hvq
+6e/DkOPnfcwfq7yy8ydmfubZ5ycdQmCn/s6UuxmipSG3viAWXOWxxj0ujOuwcti0
+UtVNDYfiat77khdEmkbTjWek/ClaQhbs8c0ihQ3VTjjzNumCjK95SDWzNfyXr1Cz
+BOz940PYzy/CWJ9kcPHtAzF9ZKBCE0iDx6dlAqUpMr8+cUDGHtoxeMG0SEhuneEx
++2PyO8eHACl+UZ7gvMRvU0HikmIXLIDuE4W/5bFwLlwe+W0vWx+/RrxSUhotY2f3
+tIUMchZH0V9e2bjcZEpoOgAbJFwpv4BhSzPFGUtCvaW02GprDFbkvpdeVEAOeJCo
+AERV4FOHuiQN5xICywgs8w==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBxDBWBgkqhkiG9w0BBQ0wSTAsBgkqhkiG9w0BBQwwHwQID289hiP8sNACAggA
+AgEQMAwGCCqGSIb3DQIJBQAwGQYIKoZIhvcNAwIwDQIBOgQIS6rg/BDDyx0EggFo
++EP7A0v/HXDb7sIKUaSRo31UgIvfB3ReCYvjl99OhGohyPKU5d0SG1P+a5qACAtM
+9NOPIB8UdjjrKxz8i3hjpWEOCMQAdaXhkIiYaDbPvAVQwlfEA8LUlUoJce1JbyUy
+O/BJx2FvSuQYMpzYdjj+PXifngb3qKAC7W+72D3d/npwCFMAfo/Bp9rCk/0MWakp
+KpUspNT9b69YI0yGKxRpJNaX5B4FuaLe1O31Tveq0ImyiWEcSC6bsFfi8xWXmNMR
+pw72Pv6FEgSc1aaSiViQVvkDaes1M4Po4K2geld07bnXn9e1JzInYquBnhFUe9Rs
+HyGTqJp0S1Yyqdt46e13NIfM8knvapl9/0fZ/QJ9UIPbINpFRGeFBJY5pR1xEvNK
+EST6HZIw84U0iMfGl2e9oyC4r+1hZfkELHSK3d/s/SRiRhw1yTOGU1dFMwUz8yif
+CCNNR0cFDfSKHYQOu78bUZ+Nmt7ydzn5
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIF1hZIYPOrdkCAggA
+MAwGCCqGSIb3DQIIBQAwFAYIKoZIhvcNAwcECO1sfQDcxpkyBIIBaHKe707yztqL
+ZqMI2BkJdLhNUeysatW7IP9WLN4+kM9IGx8d3jVthFK28kmQv2yHjFqbuTYnJJz+
+7sskqfbv+xO+LmSlppeD2XaolcoCCu0ic/JmE++CORaR/cswkjZD6dDaB3saZO/T
+gKleto54fMnMNUAF43aIKZGr1xOv6utMqWXULCIMkk1RtqRv5l/bTavFnnoHfuUW
++eNH+z4yopTuJYMSvYcxcTFaTx+SpoR+Cyp9HJAGmNk4LS3abxIu/QtB3Is1QZpS
+tBmizAv+5pmIshWIAsIXbgK3a6VboxzJI1Twt74pPYEv+OJbOtvmDNrM8Anqc6pk
+gc+0W9/CZ+gL9Zo0MZFnehnuK2EwpPmzHrRoyCM762wcImyz+5EVVpJrixUGpq8F
+wjtw1xOMhyQ3K5j/kQWdLgoR47s9fbkkgSxIggY9JrWA8VY6uqm/AWJKrITFM6hx
+75lOxEX6Cw/B4y0V+xZ1rw==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIqmXjSIb59wUCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECAhqA2qQFwcrBIIBaACt+al/ytm9
+NKroYGO1rExbTYC87yT9N4Q3im7IHTrUXrWxm12t8PHJCpr+2OIrCaTC6bcAMcRI
+cJEgsp6MISxZQXkFFt8zauC6cegsBnIngi3lPzpo+66v+jq3F26XXE1E6jWexcev
+osngyT8Ng1lddwSeUZ6qmIoajOdliaZKt9zEnNre9uGi1tqjXyAjtMzRNPOdj8qK
+6LS8U8bZlhNk/5LQiYdq/s93oA4XvIZaiVmNDnirfqYLWXhpPuk6pinZZIf45bNj
+WpHR6nlS6zrfMbu7OsOVMk1dYMS0wyWf4V7c33EUGq3V+UpCwf7lHiXpKHf3VUql
+ATJLCH0rVpVtSLQKzu+AtQ5hXWM5L95eDgJH4cHMvUZyH5fXBD0XVwGwF6jl5Bgu
+qpiQrk0N4SINtOTUz6cpkCg2i1rT/y1OFtfzlcaU2O73MlEcRSo9X1FFQuKSY978
+XJWKmss54p2ZDZXjI9hKIQ==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIsCQVVRoBSP0CAggA
+MAwGCCqGSIb3DQIKBQAwFAYIKoZIhvcNAwcECO8+o1eRBcmTBIIBaDM+16hmyXFa
+Nh02rGpKlggDDWc/bcpLnmi0vEyHIG5wpwS8RYiKY7AlJv/soNuGh/62kFJzvJyl
+gwhAdqE4Q8u1ECKvIz9VUJkY7etvSP3Pu2lNeE2wVPk6k36RjSib7cwefrawJrTQ
+50J9gdxw2vl/vep7nZRPVerqod9Us2x1/M0DMYtcm9iWgNGXKnF1bXE/TzDaWmUG
+4Isx49V4CaUSNbdP/Y9wfj1LARi/qZ8sIMQmi7rWFZJOutJ2HBJcvkiAOUWtxGrV
+PTPkWsCk8MQ6gzi0RTcotqC3Z8cJm7TQ0kVpytNAGNavuK+VklApSEPwK1RiLL5a
+04KuIyO0qf/Yh+e7i1miX9aNcA8U7XrgrgUguccFm+25JPhwvKerEvgbthQtd4DL
+09z8ClPcOqarLRzbpswcVppBmfI27TbQC5HS+UjPGa4CSTgOjwFmoFoV8P06E7/J
+DB2MLT7THaLfYdv+dewaLA==
+-----END ENCRYPTED PRIVATE KEY-----

+ 12 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIuyUx21YswXgCAggA
+MAwGCCqGSIb3DQILBQAwFAYIKoZIhvcNAwcECHopIpIBxzQyBIIBaKCdLeYJSoYs
+0tuuykMqh5YwG3yzsI5RoDHZVkuissmreb6AgFkwoH1PpvvbwY4NkAEZ3CADeeAr
+R+CPBI2GZP83/VoJKgk4WZ3518FZPUks4obIE5/AVNjYTJXhfwPCXdf21h6DoAUr
+OeSi4U72rsKTmNM/ARa44JJjkgC+77+Ith4+ayeq2h+v4ylRx533AkL8kbzBDVey
+pyLENNSnwwZHUpAhV0ZlurXLHc0eNHyn6LzIXig1RawC0uuYKb+CxZrkbtX9R/HO
+mTUf7EZrVvJb/G5H9Buhs8gi8Ul/C2LFnCdy2VbBkubnbK70mIyQ4HLY04NGpw+b
+6TXHODwrSEwCHNdIyVEuIFW4TkQtWmKAqT2/wupJ8PWo83/mxlTb6NQlhSFFY/Tu
+FiPRHi2q4rI3+283NJ/W624esG44u3+OBqHNZe1F7IXbEzM+iGo4osI7CXvvQrfo
+PJAUlYc9TtaTQAqdJcVjdA==
+-----END ENCRYPTED PRIVATE KEY-----

+ 13 - 0
tests/pem/ecc-encrypted.pem

@@ -0,0 +1,13 @@
+-----BEGIN EC PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,AB9C64372F927A0D0C27AFF8808FA408
+
+7vsYSX4TxsNKVJ9rdDQ0KJV5fIjv8cmtm0hCfY3dXPaoBy7dnQmtoS1cB2L7/5lg
+Qr/COJFKg0PY7y+aB+wK96rFZUvmHSwxjOUbz1/+e4PHbDaSJJCEJpqzS5Clo+nO
+q/FKjfXmQ9yANLO0o4QcSRwSjxIuIK5KWG2EXWm9gCsR1tPW9UmSCSFOn02puF6e
+HJZnrq7SHvTvuZ3Tbzzyhp7Z7LofSLPaHaCdWrGlY/AlsnUdOywHD3ATCvvjTVqJ
+GelaUv12BEJK+B945LmgMkj+BRhKcLXmK5Q2am3ZdvwyZW7E9JcDLPjX08VEfxY3
+aOBv1mysIroniX3UEZmNR/gUnQTSGa9m+ZsQvZYoZsqK0dn9THf70fW6scmBvfR/
+wRnS1fe3WYsjkXAvAq/a/5Ev6go6G0xgKHI+TJMeFxC2v1r2aTlDKw8AcGwUzsll
+HIbyabEaVwQviNuH6NHNpw==
+-----END EC PRIVATE KEY-----

+ 12 - 0
tests/pem/ecc-encrypted.pk8

@@ -0,0 +1,12 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBzTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIDvEXvzqHE1ICAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEqBBCj/pJclOyl8T9QLQ5hST9UBIIB
+cAhS99K8b/rp2TaTvSSuwTS1qFcJ0O33zSSIprhVriNdArgQC0sX3XZKe5tyzWSD
++ZJZXJhcnQKRauDGhiF7dJWSgM0MbL90ZgwFyQvwzl1kxfKheaS8Hv/xGDvx+eAU
+XwOAddifqcSediLUwtf5SRUmPy12gxcMFN0gY7fvjA0Wb/fDn6UuG0iu+y/msiu/
+S+dW+PbOZBDiQb1u/U+wKTdvQxowlu6zkapxRFRWC1i2S7vBtdK7aLTERUJwdEf/
+RdAMLXQdr5zhKHTjx7nQiPCksbNrpdTQHw/nsrNtE0pPvde3MCNIfvaDgHXyCV8F
+Fo/fn97YhaKH8zCfvWhduuY2Bj3M1jBLRxGQZ2cs4hb6Ua3R2GiTD0h5zp9uNXRH
+SrECToksdY5jNz1qMV6TA7gAOZ477sZCkJ0WU68B0jUVJKlEYCPzyTVcoy3a1hiF
+Lx2H5WbsXSsZGaX+wyUUicYm8J+YnGtVd+FgS5e8Lh4w
+-----END ENCRYPTED PRIVATE KEY-----

+ 10 - 0
tests/pem/ecc.pem

@@ -0,0 +1,10 @@
+-----BEGIN EC PRIVATE KEY-----
+MIIBUQIBAQQgDPGtLwP3kRu6A88jN8jy9zbOZfGELX2fX54h2V5JvSOggeMwgeAC
+AQEwLAYHKoZIzj0BAQIhAP////////////////////////////////////7///wv
+MEQEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAABwRBBHm+Zn753LusVaBilc6HCwcCm/zbLc4o
+2VnygVsW+BeYSDradyajxGVdpPv8DhEIqP0XtEimhVQZnEfQj/sQ1LgCIQD/////
+///////////////+uq7c5q9IoDu/0l6M0DZBQQIBAaFEA0IABCr5C9q+cWae0c8S
+0CSvurZ/+5YnPi+9HtX5jWxzncUWkb2yuRtAEFq3bG4yW/djYpQkJNvsP4vlbktk
+NzEkeU0=
+-----END EC PRIVATE KEY-----

+ 10 - 0
tests/pem/ecc.pk8

@@ -0,0 +1,10 @@
+-----BEGIN PRIVATE KEY-----
+MIIBYQIBADCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA////////////
+/////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEE
+eb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio
+/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQ
+NkFBAgEBBG0wawIBAQQgDPGtLwP3kRu6A88jN8jy9zbOZfGELX2fX54h2V5JvSOh
+RANCAAQq+QvavnFmntHPEtAkr7q2f/uWJz4vvR7V+Y1sc53FFpG9srkbQBBat2xu
+Mlv3Y2KUJCTb7D+L5W5LZDcxJHlN
+-----END PRIVATE KEY-----

+ 3 - 0
tests/pem/ed25519.pem

@@ -0,0 +1,3 @@
+-----BEGIN PRIVATE KEY-----
+MC4CAQAwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC
+-----END PRIVATE KEY-----

+ 5 - 0
tests/pem/ed25519_attrs.pem

@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MHICAQEwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC
+oB8wHQYKKoZIhvcNAQkJFDEPDA1DdXJkbGUgQ2hhaXJzgSEAGb9ECWmEzf6FQbrB
+Z9w7lshQhqowtrbLDFw4rXAxZuE=
+-----END PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-aes128.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,E34B30358A82741CC19E7D3B39F262F9
+
+gBfy6bd92405991TDo1pT58ZimYUlsz6rXQkaM22TsMzKq56Bw0qz9h4JOJ6huKh
+BQlHJ1Wn8m75J2dFPAX/Y1qTNzTufNIZ7iGsJnlagYV1P/ICN2kdDp5Qozz67n+v
+N/S8S+42snqrL6Z3PsX31Mz0+bp+AX+IONEDJ+63ggOiMx5/eOh5fGVP/xovCAP8
+E4NYev1mDY/DQpsMhaiSedAU2rwbGZTLdyZbT5Nj8bWOiU8Co9B0MLrnwfjqS9w0
+gpeW2N8bW9WrXySePS5qJIVWs4FwC0OnU0oZ5h2oi1p0j9vJfOBTHOnLXgC/m8oR
+tdDxHHUHrhBmLvMHnb5ZxMSGqYAB5CHt8TvGSYe+wUNdEV0bwWsgwDQp1DR9UKij
+HKpMbemWzwueOeXvgwmziHOzxureE4vAEEv+rakxhbagkWpizyM1IxjxPa3A0ohY
+THF/dq9PmDtyTtAKYcttRlqhPTOUIWHUu6rxqYpuXY8edqzALoC1dUI/WVJuMesf
+JVcX4gL0FxtN/Cyd2j01AfrC5rBQuEwq2l5IEfdGKv1rsWH3lGpI+yv+l6yLrYT9
+Hfooeb1ZKx7kf3J4Yy7LObaMuCjPaYFGeAAwVP5OL/cSRwJsAgvpTmwM9k23+AAP
+WS616Cl6FpKTFbJSDNrqfEAo4ghsbbrmuG/EzhqFNzYhCsX2GKRqp5Om5TBV+pSe
+svP6HF2sh1bypDlFv6V+grUIU6FHHS8v+/XeO502VDMdMonuV3G9kiFvL7pXGZ3Z
+iNFkdAUegliKvbkFg5DyHMYnAmYrj90BYaLQBPCVjFR8waxHLr/eFFaKTlvKT/T+
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-aes192.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-192-CBC,84225A437AB98BED8FB41AA30CEEF69C
+
+phaXiTpHZdPh9nB147D+IBIuWRLYueXgy1eqX1hFC/xskCRGQxwmhWhppGp6Evcu
+PA9DywqHHrYPl5fZsSXjOpj3H1JU/4oP/q48Yz6832YxRZHblAZgVEvK+OqPFq1y
+FVnL8JMXLZ7GNAvl9JNBfmL4kYJY1CwcLeplPXDfrAdrDt/974/jNB85qsyqVsQu
+QNdLj3BRLJYWWv2MUIlfP2+Wef5pA4w+Aurv5evxcRZYSsqUhHwrBjfrXMumzjAi
+7VHh71TyFJBbN/qiiBqaCLyG301HqUBdcpstlZ6GUU+dIg/QR+QrY2T5rRwmbp1T
+RA96OSsXypEDz/35XMrcnFV7PyO1q+GueXTxnNH/a5SNKohaElxyn7suJ5nuoh/W
+euUNeNFk6caq2wkCS7Ew5vvNqYbh6npKdrz1JzfsyjpwYkPdE0VXxEe5/Pcqhjpc
+tKZ5Ej+nNYSCIDrmGd8PteoUWby3oeyS/K+8OofKu0nKexdJ69iY7bcMCu+WuM/K
+flXCgQU1d2ClY6x7zFRjPjgI6NCiBlZ7ndx5NT5BLJfWA3VZRwMZsSYx04kUH+wJ
+vkaBKUGpBQIvR5cNvPberc5Ckl4CdiFCGSGhREF6M+8sB9KzdVebrBX3ht/lE05v
+m+4ekGz3O8tFFKEEnVHwdQw5aXGFc9TgS0gj6CVMl21lWHPKXAoaY0g0TRjc/rgE
+c4US5mRzyE87juEX0dOhx2CcJ6q1/CWXIUV2CKFS/9ugOy9eaA0KdaC1r2Jec1bA
+yxbM0eNXyckHhh062i+8sHLkWkRN34MPGp4p3Y8YT/iqPatKrcLOODm8NeJD69M8
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-aes256.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,D3DD9599A74A0A204325A4FC0104274E
+
+Cl//jk2w+X7KMvEoqvXlyz2n3DHqx1UKSHmK8ab+Gx5CRlbTeOkYseN75wx2Y3/B
+WiJTFuKBFSjK9o0ts8Li3xQUnCP1huXq6pY8CIcEo7V7ZKe/7rWPwPtLflaPsSoz
+4paXwqeUB61gS3qw6bxof3WFKN59lU+Xk0HsDOp/SK55ceA0j7vtOFm+pq+cqEwl
+wy3ZGUJUDCZgYOuTNTfvDqoRK2OuH77fbQu27ck3eKUC5LZiDCQ+Aqm9k12gcCdF
+tqqLZdZyQWJK/rpqY2rHZkLTkhou//Cs/15l3GLDO5P670aVEJb6vVNVJd5msu6b
+JGWDb31McTwj7m3NsK2OSPVfhGuA+Hx24/ul7o615Bei4AsN3yAcm1bQeRKHyQoA
+9LBZgyznt3NhEQ5RoXCR37HjwQheOoDcwgVh8uSJnKaD1dUMlIJYjW32kMbj6fxF
+kAMm6JT4FU52jnpsar0+ADqrLst33IkXfiPWzHoUsh9hnTzDwqOR1oEbxAnBABkz
+zkZPH818ENHsg6c/S2z9ZXyLxjqd+kh53cL36NiTZkCSJOfwuKWC9gnXsXgmpcV5
+BaOozzYLtW6OMsPWrledD5uV5EGBitLiNKBB4h22/AR5Br9Eo0csEJHkEfjd4hAh
+J2iXj26j0QmsLJV2KNgi1q/b99r6vqQVuFEUVhBprrt+vMVRlTAs1gkPMhZHwC5Y
+CP3w+d174aIURUeOqmTmlefP3ek74kKz+eUw5/KBq0yD2gWguuW7BzTF+GcP87Gs
+nBoeIbAF+diy95F7y1zXLlYr6U+xMaizpDtYChDehUXd7Hd85AqjRNHDD3a09m8t
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-camellia128.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: CAMELLIA-128-CBC,0303625F03B4D00BCF0CF7C823F1E665
+
+UGZaiZfZe69svZrpTL4oIuPgd6erA5Gmz7Yo8JJAcrmIRyLVaNeL4/FNQsstGyxv
+nax0h5X4jLDZrFrbF305wbENCEoDffNzII8Ju/w1lVxpOdkQTJtKUtp2iOdFAMfq
+BvmAVgjy2M0W++SluLXmop3fo6S4fxsOkLywKPLHFUZ8JwSg3I5LAMeCepbx2bG6
+NfozsjwVSVc3grs/FKHQlBhuXyUDJNJwXXA4hpBqoLPjBdOrYqjV0MA6D1csIRTu
+G/gsmobtp9luWQD+dEtufLXvfxOlLnJCdWWS/lhwxY3Zym6juc917wNQoxgyQq2L
++53kX2VFFLM7g6ES0VTMF6oAbglqKLABJOZk0aSzLh/h6RKzh3WaT0yux9w1JmaL
+0faIJDG2ZNroraOtAIDmc3Q4sfk2EcBxOFTRjKT/ypPcwOY2PWMRDAXpfHtAJrRx
+H6GQsM+X04wahpQ/aHCtUu1EO6n8zEdej8XUu+Tcz8stO7h2zs7IOi+7NbqqvHYk
+V09kX6FgSnUmzsV8DGcemEM2XkSbK6p+/b5EXHbvwkH65zjDNtfjloWgWd9B2nqv
+unB3i9h1Kd145a8TsiNE7Z9QI5bIBXN7x/70SoO5/OJjjPczNSHkgsBEkIseyjkU
+MuEQ6s9GFAOlw885ieUEJuEwyhVcA9ksCp5SuxVNEScMh3vZ2zK7reYsg8GC1Vx6
+2tw1HUzarDDgp5SWxjIFq14NWySZF3PTrlcmcaZkiepSprFGm3QZ29mXMpoCIpJW
+344/5dM2kkRgWoZhJP0d52dX/D9lqYG3nD9vlQbOFKR4DyHW1yeTGFlheqOdwiU+
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-camellia192.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: CAMELLIA-192-CBC,FB1DE964D0983449CAC8D7608D0CFBEC
+
+bsqay1xsCDMwqFR6vThpD4mDycgkc6pB1W9nMbe81bmYWe04c9jDk44FlhyMEFq/
+fetzGn16A9YFJoX7M+myk2rRv2xhj+UA7+CS/CDHSuh74ZP/Ebj6nKgyzNJUpHqG
+4QlUBwWGedkkkRCEV4w5cRMazXsclymENeAbee9s0PKAfso/w7Thvm2ET5Nuu6rq
+aOQsk5pVjMtNQN4FFiFa+Qi4u+cmWACvLj2zETg4oL9tzbgwe1BGF6Js+6oqDQx9
+gwk3Gem+902PblqblH/4k7Z8VfuoDj/2vWC5azf4ndEef3sTfDR8X3DGbauUHyYI
+gSiI7voaOESlRsWuuSVCH1SrgoNJZFY32wjVGOd7iDYkoybacJNQGRwu9oewd3IG
+gAUY5OiEKUHDgc2rsR2ASN1UmAppnUZZbnQ3xNlnoE2N8OEkhykYJTeTC/k4scKx
+hcw880ZfgYm1btw+W0UH2NPdNCIttahxUdTWqGBeTznuVDuVCYXX5HgPX1Ufp3D1
+eyJlUhzudJ2xl5z/qBf7ePzc9CgHqpq0nRGfEpS1fgHi2xRBF1JrYJXXAC61712Z
+Z6hwjg/22YturTNAOQ719aXZ77Tx8n22A0wrUP3g1nHEICob9zyBum+ncjCRVR0w
+ciu1iou7VYfr9B3nS9ECUZY5UmecWG0d+7ELXItZV5bP/wW3tKW54Vh5a22WDeO6
+B1R5MAEXPQ7qBrcNmwr1MEFG2WoucLBEJfHzrkJFIlhwvE8c2AXWZnk0jmPxOlUY
+QfxHwWJ4/ufI/FRTwFlYwUohItBAq5j6ve7+StoM3P6qT+bnQcy01xOw3l6o0U6Y
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-camellia256.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: CAMELLIA-256-CBC,7F40CB6CF02BCE145875EA4A15132B93
+
+GyycmUiMdO5AyYLtDy8eoSlcMBrk4vF+VfbPXLa8jz/qqglW25A+dMUw+B8DHox4
+x9t/IWs4Pq2MfNflct07wv6dnszTwVTpyhEOubRd//Q/HPjau5TAmQM7n0as4QHw
+dfbCd4laS8siug/KHRPYUqdaiifBOlzpxREQnjYYfXG60KlZYyxIFTp72W9BurIn
+BoHznYxQ16ZuID9R0eRgKQZok4If0cLt14z6n3fUw0LZeDEU8RFE5+2GfSgdghR6
+NPlZN7MlaZaVRx8ctFRROt9WXtCfvMSPBz7ua3qymuct76VrjzlYaxhr7nqf0RY9
+Tt2HXZLYzPvnKUA1hwJhbDXw9i0ahJ8lNDDQVEEy8UdiSqtWqjpAbOFuy1HXv86V
+mCH4viGdxNqOIe7IMst6jwvnUSDDTFms0fRV9tv+JouKgQ5A/H+VrxKiHm8ZpZRK
+yXrMusUMXFQ98u/u0vw1f/dn/dYocNBT0Dgxp3K8mmAuSX3XOupTtDfHJXM4I2Ur
+tJfstBPD0Ne54k0aBQnOjeUUrtXvu3xgY4h/c80GvXLHsQv1lTQF3o5AEStUrl9B
+KKAqb/E7AMr2a55RYl2rqV4QfL0rvhnTR7Os4ytjwerYmjaC4XvGP3omLWHhNqQJ
+jmPnUzyYDKeN1w7nZvNjfrKZvDWW1WT/SJqXqh7tjWdOM/2LRAj3b4W6E5EJBTR5
+8W4REs3K1Hgaw5alVOLRr+tXTF67WTRxbMgmnF+JBmTccLG+Htql78HEPj9Gugf4
+qaOOCrJlSm/Dd2bgFo+FUwY8Plytp/Eh6vHPGrPEyNTfTSd5MKjEHDfhmNmODH42
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-des.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-CBC,FF92A06E353260B5
+
+hmY/YaeOr8rrGrakUk0/pk5R4aBsrl2EKP+i58ziIKzRI7yVGmTgGIr14ys3oWb3
+9ba6A3hOcQvKfIjI4JxbWQxawOm++Cfcyp+PR7nmIMK1BhKeLynrbuTm7BvPRlHc
+APJxWA2OcwbSgnHRqcD4lZxVjX0JrM6w7axrs1/+K0A4NEhWDnWkHd2NHTgtlp9v
+Imu8n/atzm5olxb5DFGdyEVR8neASxQ/8gN6jFVG1lcB2DbR+LsS6s3aqrKNMbVU
+TKZteJh3Y/WWB1Qxo2Wi7QzjUx6GkFKPLQvLwtJldB218slNfRnlaE3+s/U8WOAL
+NRhrLqUij/T0DwJDEywl6DX8uu0Nb1Ge6DD36dp/AZ/M8k5M22Sx8nk1IEEG48cU
+TPF5r/WOKy2iSqBx33s9J/H8k65es/YRLv2fASW5mLySApbsKWrX7qgX0yeYa8qC
+e2ORyMQNmcgMu+vkyhsRSROCpo03CwZXTugN2h04UdIYhwXgUpcUX4WT+P4L9fAW
+pMIan8KRpIv2K4soz20rSCfhspk4tV4oSf165chzBHiw+5bELa3WkfyxowpN6FpD
+l6w35mj5y2I4XJoG5OUn5F8P6Z7qw7bB7pevvFch7X1LR/5rjeeXFL2hHPOK0Z3h
+kgXez7WcRlv26m8JPM+GfXrbx0qwcF7ApuGa20S3Y6MdMlvEpYzgG7eCNvNdgQqd
+MqzVQNLyhVwf41ttAzFbWKJSLffC6Y7kzBRyTnGu3os2joLPWt4i5cc74PEB+Yxt
+FY6XZFUeoK4BVVAQ0QRnDxqq9hciGIodiiJZpOiDS3tjxfEgk2wqgg==
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted-des3.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,107EB1F9974CA9E2
+
+CKBun5ni3tE7KoHUhY85NnFsxoJqIonLtiDEQRPCNOzFlmxYNqI+hfsnjyQiMB+O
+deqihKPEcU4lOFG/pXeMOjgsnqrRSLtpPce/1T0kQBuxjkSGwRDj7Kiyj4UInJTO
+8z50k0cclcVveTuta+hsq0CTItu6RCl6kaimjixrYsfNd55ahcR7WjU5DL23DHDe
+dJvPxXNcU6Kne0dIGm41uYTloleoe+f5Dvf27421sRlgltfA8M8KfaB5AKUOp/gA
+DeQ9lcCwSpCfPavIWdpyW67v3NBoICPlmKUgg2EsxB6+nceHP1OcAAK4Sm083UBB
+1uLcF08Yz2lMe7rHMieI8khZyjXI1A42M7wL3Yyl9m2/DvSuE5Xu6qyuEDDqNFbz
+GHQ9YECQ6ykf/MQd3CeKUeDlCZ313Nmb6uqehbbpm9Yayr/M9rwpgVilJwyQhELO
+gta3RozpQIqx3a8UXgUSXx1xckRdcbYitBGFgh3JpU4iaYyE2jFHkCrzUFt9Q3To
+pe2MTutj1K7l1wxUVy47nfK1/3JLI4wiP0QbflZMDBGiCyMPmZpJWEVkCtH3f1QY
+tFM+2TGkroQWOU1YaK9liqYtXQ8h5cjqSC273aMU21SK/FOEufpOUeWa8XCdOsNa
+MQKfI/fDgmAmQFacy4RE5ICWx0s68qnQotvmdyaLDClVFha5jlAKufnee8T1L5BA
+TV7HJci7h0wy8hTqZOiGpmDIG0UJXcD7sK+PeBKvte+wfaMVyM0Kq+j7DWCJRgw8
+xw8HpPDCVevr8tI94JszjiJhhRNuaHw0xiN8MRxf62MDEpw/NM0HFA==
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted.pem

@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,79A277F758B09D047847C9C5F099B5D0
+
+cbGjYcmMEdYJC76SMAi5cbiJ17tcR+swnKBKJ6Wz8TEUiG2WjhkzPcAiobJQMwNT
+r47uhzyOD9SkhuXkMwB+EXaB8JSBOhqeLE5zmxQOedba5HHWUBGBHNa7FafgV+/H
+RpLjaAsDkXTnmBTBbLpQmMP3zJRG2e8+G7/WFakzd0QcQcy4zWNH3WtBc207Oeup
+WN8P2XA7KQkHnCdojfLD4JNJTosa+o9HphSRdRtTrzCCR6WMH3iUovnQCmSARUcm
+7JmujGzOx/wuKDiC4HSZWYhOul0OSXrt25G42RJJu4v8bHgsKFeHp2/U2Zpkkd/b
+96TtQ7Mo2lsuZzUEmb4kWO+2vVKy+0sPn8G7uOID3FZ8jmQZV4v1ASLGz6Mj2zJe
+u0b0+UpSRB8eVwM3BL1oZxe3MSNynFgbPs53Q52zJGX8CFTxDNEPGYYRGFb1B5B8
+Hd6QTilegEbFStWLH2tv1IX/YeLNytd94+wMaqRmDv9huo9lushQ7pT4tMkntzte
+vMkboFD/p83T2uHXMVfRthNKBWfLYgpAbwQ5UbfLjTIxZ6Jhr5hakMb2R28IaXj5
+5Ss85suLiY+RWnNCh/313ghuWvFC3Ixx1YVpVKdTIGRK/gLkSzXV8oA00yJm7RoW
+WilXcXppWLIODkOn3VFsrQ9lerVWRX4emndP4drW5SnVCnkrlPDmE7joh2Mumjwl
+vO0QMq1o8CZoWbxZ20qnqveoEH0Kw8qhsLScxs55LGgqGnf5G0AmVDh4mK6CyY1m
+cXoqkJ2IpBmnMGNPKEKeuLGl1kRW7eyP0+xlGG8JtMpA/xRiSn3lRydAlCkxAZRq
+-----END RSA PRIVATE KEY-----

+ 18 - 0
tests/pem/rsa-encrypted.pk8

@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIzkqhs+PNHcUCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBjfvDZNKdgUMcoi06nycWNBIIC
+gCh5mBr0KtjS8A0X8pXZ3A2fFo33RNLmkASq3l4o+OyZx8o/LHqLV0EqYI3ovV/r
+A6Z4Y6aPJwAmyRULc8us4E8pZLc5I8rSu9rlGnmSz1JDlFKy8xdo5+0oVE1uRmWe
+NBhWjCUp1wu/tOavM59rVSXXV/HOe4K350ANkZgJTqUsuud4YabhlIwu6umi3Fam
++jjZtGu5K2t8HHKLTYANDHYiW5a+YnZ66sFw+Ny9K3oEBCMTc/flxZnraihg5NwP
+bmqgH4y2FCpRIsTknmPnOXwTHgdjbNT3si5Ja38ztU5QnmITPk8RDApeihbMyfln
+UhWvOTXOGF85msA5uAa5QHrtokFpIpyOzDZh/OTznAz2Pe7w6D0AbJU19ozGyHwR
+IKg4qyG1dzLz8YhBtscei8yoWjhIFsRpjd87mEEs6dEomFGndkDse7IZvyjFG5Yy
+iVejSKXv9n2aJy8GhWrIO2ucyQ0wRZ93WwCTO3p4//nqXB/BlImZBE3moUxKdT/2
+UYT9uhk5ZUOlWur77Q3wO6IM9KcEcgxSkFwTuh7cpawM4qG5HTzob/3OAr0gYx/2
+0UbhcTtRgavYXNaEVrgNc+fXc3iAt1w80E6oblUPSkg9fyorrbQb6IbEesLLjIi9
+7Tnvv25p8Rdq2i5dmCUtUmiYLYm9E3lO/HKOpMtvRT3srv7+L6GiyuzQ4j4oSLr/
+9ktc+vLJ7eSZ8i3KUJDPwNhU+HRsTVmAIs2dOQiHGBfpEoHgUMxT448LrmV2OYMr
+NPYCZKHDIocBYgR4K6WXi48Ta3D7P+Y+qB2oiRyyEC0AZKfUHVKM6xF1SehV7HWV
+VUpdx4blblYjMEmdY3BRG+Y=
+-----END ENCRYPTED PRIVATE KEY-----

+ 15 - 0
tests/pem/rsa.pem

@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97bfYUtlmXl
+P3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7kEY5BaHxh
+E9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE/QIDAQAB
+AoGBAMhiuereRFMdVpfZl54azzAeCohFhikwo02fYWVz4NaHj7bzBqOC3Hys/pso
+mq79+/4vDtiXBOO7H9HsDbqjSX9HrIpEBH6GtzlCP60etw6lUfRAYx79veqfQZ+o
+kB1vClqVExENgK9fZJiKLHhoZbAri6JTh8rxZASr8nvbg8iBAkEA975eI8MyP7+L
+jjru/PzL5ffxC7xCgq7Vej7K99VpP2Qloh+3dXUFkkLruPHzCgXjlNFVeDWgNqCb
+fJKEbN3cTQJBANaGDoVCCwQIhCFg8A4NiP0eNhBlTx5TtAhygFw/WWYX5pjy6Wx6
+Bkysdj3tjKHOrRu9tH0ovOMOOI2Z2AW1o3ECQG3rwy0u8F6kiDEFKQCK0ZUpm4PP
+ddsx43on3jp0MAx2TNRQKkAtOdmZY6ldgK5TypQ/BSMe+AUE4bg18hezoIkCQQCr
+kIj6YAgpUJpDi6BQzNha/pdkY3F0IqMgAlrP68YWlVTRy6uNGsYA+giSnHHVUlI1
+lnFLi5IM0Om/rWMLpemxAkEA3MwnyOTcYkjVm6/1q2D2If1T4rddCckaoQSp/GEs
+XQRYOlo58UohVmf9zCCjj3gYWnk9Lo5+hgrmqDPBBBdKnw==
+-----END RSA PRIVATE KEY-----

+ 16 - 0
tests/pem/rsa.pk8

@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAM+a3mSK2sgzIKnX
+gzEZVLKahaeht3UztqmshCSz3tt9hS2WZeU/cpUknyhoyk/bRBw+YBKK3Sal6/8L
+XtSIOEkqblu/EjdHvQVrvNvz7uQRjkFofGET10LIgL42j9wIi0+spOJ2DMljbElY
+k+3MqtwlOwpgP4tUOsNNMeeUpET9AgMBAAECgYEAyGK56t5EUx1Wl9mXnhrPMB4K
+iEWGKTCjTZ9hZXPg1oePtvMGo4LcfKz+myiarv37/i8O2JcE47sf0ewNuqNJf0es
+ikQEfoa3OUI/rR63DqVR9EBjHv296p9Bn6iQHW8KWpUTEQ2Ar19kmIoseGhlsCuL
+olOHyvFkBKvye9uDyIECQQD3vl4jwzI/v4uOOu78/Mvl9/ELvEKCrtV6Psr31Wk/
+ZCWiH7d1dQWSQuu48fMKBeOU0VV4NaA2oJt8koRs3dxNAkEA1oYOhUILBAiEIWDw
+Dg2I/R42EGVPHlO0CHKAXD9ZZhfmmPLpbHoGTKx2Pe2Moc6tG720fSi84w44jZnY
+BbWjcQJAbevDLS7wXqSIMQUpAIrRlSmbg8912zHjeifeOnQwDHZM1FAqQC052Zlj
+qV2ArlPKlD8FIx74BQThuDXyF7OgiQJBAKuQiPpgCClQmkOLoFDM2Fr+l2RjcXQi
+oyACWs/rxhaVVNHLq40axgD6CJKccdVSUjWWcUuLkgzQ6b+tYwul6bECQQDczCfI
+5NxiSNWbr/WrYPYh/VPit10JyRqhBKn8YSxdBFg6WjnxSiFWZ/3MIKOPeBhaeT0u
+jn6GCuaoM8EEF0qf
+-----END PRIVATE KEY-----

+ 6 - 0
tests/pem/x25519-encrypted.pk8

@@ -0,0 +1,6 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIGbMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAjemFQzTzUb/QICCAAw
+DAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEPhFOISMQdpDb6MkjW9pEkQEQP4C
+Du/QGJw0fzI07h36dP6wSFeWj4Po0LD0AIcYpD8gsggm9H7huFuVv4MsXLFJWfZX
+D4yrLu8Y1KC2Dc8kkZ4=
+-----END ENCRYPTED PRIVATE KEY-----

+ 55 - 0
tests/pem_test.c

@@ -0,0 +1,55 @@
+/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
+/* SPDX-License-Identifier: Unlicense */
+#include <tomcrypt_test.h>
+
+#if defined(LTC_PEM) && defined(LTC_TEST_READDIR) && !defined(LTC_EASY)
+
+static int password_get(void **p, unsigned long *l, void *u)
+{
+   LTC_UNUSED_PARAM(u);
+   *p = strdup("secret");
+   *l = 6;
+   return 0;
+}
+
+static int s_pem_decode_filehandle(const void *in, unsigned long inlen, void *key)
+{
+   password_ctx pw_ctx;
+   pw_ctx.callback = password_get;
+   return pem_decode(in, inlen, key, &pw_ctx);
+}
+
+static void s_pem_free_key(ltc_pka_key *key)
+{
+   switch (key->id) {
+      case LTC_PKA_RSA:
+         rsa_free(&key->u.rsa);
+         break;
+      case LTC_PKA_EC:
+         ecc_free(&key->u.ecc);
+         break;
+      default:
+         break;
+   }
+}
+
+int pem_test(void)
+{
+   ltc_pka_key key;
+
+   if (ltc_mp.name == NULL) return CRYPT_NOP;
+
+   DO(test_process_dir("tests/pem", &key, s_pem_decode_filehandle, (dir_cleanup_cb)s_pem_free_key, "pem_test"));
+   DO(test_process_dir("tests/pem-ecc-pkcs8", &key, s_pem_decode_filehandle, (dir_cleanup_cb)s_pem_free_key, "pem_test+ecc"));
+
+   return 0;
+}
+
+#else
+
+int pem_test(void)
+{
+   return CRYPT_NOP;
+}
+
+#endif

+ 1 - 0
tests/test.c

@@ -36,6 +36,7 @@ static const test_function test_functions[] =
       LTC_TEST_FN(x25519_test),
       LTC_TEST_FN(file_test),
       LTC_TEST_FN(multi_test),
+      LTC_TEST_FN(pem_test),
       /* keep the prng_test always at the end as
        * it has to be handled specially when
        * testing with LTC_PTHREAD enabled

+ 1 - 0
tests/tomcrypt_test.h

@@ -35,6 +35,7 @@ int base32_test(void);
 int base16_test(void);
 int file_test(void);
 int multi_test(void);
+int pem_test(void);
 int prng_test(void);
 int mpi_test(void);
 int padding_test(void);