AuthenticationMethodFactory.cs 5.2 KB

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