AuthenticationMethodFactory.cs 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. namespace Renci.SshNet.IntegrationTests
  2. {
  3. public class AuthenticationMethodFactory
  4. {
  5. public PasswordAuthenticationMethod CreatePowerUserPasswordAuthenticationMethod()
  6. {
  7. var user = Users.Admin;
  8. return new PasswordAuthenticationMethod(user.UserName, user.Password);
  9. }
  10. public PrivateKeyAuthenticationMethod CreateRegularUserPrivateKeyAuthenticationMethod()
  11. {
  12. var privateKeyFile = GetPrivateKey("Data.Key.RSA.txt");
  13. return new PrivateKeyAuthenticationMethod(Users.Regular.UserName, privateKeyFile);
  14. }
  15. public PrivateKeyAuthenticationMethod CreateRegularUserMultiplePrivateKeyAuthenticationMethod()
  16. {
  17. var privateKeyFile1 = GetPrivateKey("Data.Key.RSA.txt");
  18. var privateKeyFile2 = GetPrivateKey("Data.Key.RSA.txt");
  19. return new PrivateKeyAuthenticationMethod(Users.Regular.UserName, privateKeyFile1, privateKeyFile2);
  20. }
  21. public PrivateKeyAuthenticationMethod CreateRegularUserPrivateKeyWithPassPhraseAuthenticationMethod()
  22. {
  23. var privateKeyFile = GetPrivateKey("Data.Key.RSA.Encrypted.Aes.256.CBC.12345.txt", "12345");
  24. return new PrivateKeyAuthenticationMethod(Users.Regular.UserName, privateKeyFile);
  25. }
  26. public PrivateKeyAuthenticationMethod CreateRegularUserPrivateKeyAuthenticationMethodWithBadKey()
  27. {
  28. string unauthorizedKey = """
  29. -----BEGIN RSA PRIVATE KEY-----
  30. MIIEpAIBAAKCAQEAuK3OhcrEnQbbE1+WaE57tUCcTz1yqdE2AwvMfs3of1nyfGcS
  31. Rz9vzAFYU+3uEEApk0QOsIeWCyB2DIlPnlQHyjVWRYPqiTtQ7GmdzbF0ISa7dr23
  32. EHJKgtJxSm3O/sb5F9JyqlxFMhKpz5NVgnN7NFcej93opHZN6h9LaP8cHgJIepWV
  33. IkZqhcv8v6SpAgei0muoPHB+ZA6Rycnv+2//WUBzu+3AJu0PiHUkTTVC8M5svMRV
  34. Ah8CnLsCkAAx7ld4AH7McRlFjymmkwxTSewFJYkloI/OqDOjsmuW03Gmx+eytPWa
  35. HEPGeRhcz1kZ6eOmqrPMlTaLPV1MbFn86nauAQIDAQABAoIBAGEiWauZOMx2nKeV
  36. 8SAvl3V/5DbxVOvotAXqIMbZOl4xSw8Pj1eWEBE26+RJEpvNg5CHjUpgJhT4H978
  37. Ibpe7DH418V8WtGPN0MBUhSsLy54lsUfh7fIxVQFp7zEAMmUkdNrxw+/tE1f75zU
  38. G3efkb+3ysVUrFZEOzrW9uzksT8+gm2Ll/IKuDy2r5k9mJr2cX5OYKxXjtNo5duO
  39. UK+M3jW9Sk1k23Jzpq2GwuJGTTjgtI41ND6CDkrY7COdRQdIx3eQ0uQSXosKNREe
  40. lv0VTlboVyh8JXt+G1tkfA6+Al77/mzycaZVX26C8Io7Y/S7JVG7TT1p1RsFGZM8
  41. kcqvpBkCgYEA7vD3S+6T+8Ql8U877nDi/Ttf16NEUUQllgjWgCP+DiWcqQGWaiaB
  42. JTYyM4Ydb4jy2jAcAdf3HfImE4QO3+u/wyuQrdlvWByHo2NqOxYMdyqKqwGh7qhU
  43. zZFbGfHRD/gV4hWXfzj65wA8uMBVc5J3/ug7nmkTWywiDH/SsPdbxmcCgYEAxd0c
  44. EbJ3dlIyK5Ul1Gw5dASyE91Nx/NHAvB+5QHH5rIe/IqbtxbXmEMKcxwEPN8hvpzs
  45. g487TQFkNPze6X8vZkiuaNLUq9vwRlQwr/LIdjLLKOA69wKfFDSkei8LEMgEz7Wg
  46. ZEm8ifJP75hGozx31bW4dYX2o2X75SbXneMVF1cCgYEAo4h8WJXC5o9KwKtQA1Nz
  47. p4lZgUaW3V/csaD+3djEan5HiEwz3BbaUNOU7DqgLtP2EmrW4FQlJ3Oxp628WHkL
  48. V9KbRMEKOa3dD3BdJm9ivLR7D6sgXy0KTV9skIc2ZM2QfJn2g/ZFkpBQ/sl0MpNO
  49. WUIse7DCtKWx8AgT9VZ2k4UCgYB1G8JSQyPrtwiUvQkP6iIzJdhUY4Z20ulztu4U
  50. EvLC+yfV5x/0xKNELmHP8YQclyA81loyH6NEl488wXIaFznxuxDnX+mZ8moK5ieO
  51. 7A5zzuppvhWIP1fyOJok6xUMkKYwXdqZoP7jUrS3JZShZteyeIS9olVxLpphbZTu
  52. kQnZrwKBgQDhO2+iGXwNLS+OFKwEiyUgvi6jb5OrIsdwWgqaqQarm6h0QWtxrCs6
  53. CMFFEusswZEGRo83J6lQxtcXvhWzTkVPu69J8YvTQqcKlvUSA9TEG2iX9bwXSWzy
  54. LeGb5NjBZ3szfzp9l5Utnj5GuAGoDDDKpf7M6S95Lg6F58Mhd/tCFA==
  55. -----END RSA PRIVATE KEY-----
  56. """;
  57. using MemoryStream memoryStream = new(Encoding.UTF8.GetBytes(unauthorizedKey));
  58. return new PrivateKeyAuthenticationMethod(Users.Regular.UserName, new PrivateKeyFile(memoryStream));
  59. }
  60. public PasswordAuthenticationMethod CreateRegularUserPasswordAuthenticationMethod()
  61. {
  62. return new PasswordAuthenticationMethod(Users.Regular.UserName, Users.Regular.Password);
  63. }
  64. public PasswordAuthenticationMethod CreateRegularUserPasswordAuthenticationMethodWithBadPassword()
  65. {
  66. return new PasswordAuthenticationMethod(Users.Regular.UserName, "xxx");
  67. }
  68. public KeyboardInteractiveAuthenticationMethod CreateRegularUserKeyboardInteractiveAuthenticationMethod()
  69. {
  70. var keyboardInteractive = new KeyboardInteractiveAuthenticationMethod(Users.Regular.UserName);
  71. keyboardInteractive.AuthenticationPrompt += (sender, args) =>
  72. {
  73. foreach (var authenticationPrompt in args.Prompts)
  74. {
  75. authenticationPrompt.Response = Users.Regular.Password;
  76. }
  77. };
  78. return keyboardInteractive;
  79. }
  80. private PrivateKeyFile GetPrivateKey(string resourceName, string passPhrase = null)
  81. {
  82. using (var stream = TestBase.GetData(resourceName))
  83. {
  84. return new PrivateKeyFile(stream, passPhrase);
  85. }
  86. }
  87. }
  88. }