{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":49673872,"defaultBranch":"develop","name":"SSH.NET","ownerLogin":"sshnet","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-01-14T20:41:54.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/16708801?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714591387.0","currentOid":""},"activityList":{"items":[{"before":"49aed6f2190bdfa5212887510d0e50c5d981dcd1","after":"fdbc4d3e366a48a401b9a0d4ebca44e94d9e4ea1","ref":"refs/heads/develop","pushedAt":"2024-05-23T13:30:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Fix a few issues with PipeStream (#1399)\n\nApply similar treatment to PipeStream as #1322 did to ShellStream\r\n\r\nPipeStream now behaves much more Stream-like. In particular, it performs partial\r\nreads (instead of blocking until a certain amount of data is available), blocks\r\nuntil data is available (instead of returning 0 prematurely) and removes the\r\nStream-unlike properties `BlockLastReadBuffer` and `MaxBufferLength`.\r\n\r\nSadly I gave up trying to make a benchmark compatible with all the quirks of the\r\nprevious implementation, but a dumb throughput test (reading and writing simultaneously)\r\nshows about 5.2GB/s with this implementation compared to 140MB/s previously.\r\n\r\nSome cleanup of its usage in the library followed.\r\n\r\nCo-authored-by: Wojciech Nagórski ","shortMessageHtmlLink":"Fix a few issues with PipeStream (#1399)"}},{"before":"452c1a23ce7511646536a9d14f17069e4c684f20","after":"49aed6f2190bdfa5212887510d0e50c5d981dcd1","ref":"refs/heads/develop","pushedAt":"2024-05-22T18:37:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Relax the RSA/DSA decision for SSH2 keys (#1190)","shortMessageHtmlLink":"Relax the RSA/DSA decision for SSH2 keys (#1190)"}},{"before":"b09b4f53602d70c957c05508bf29471bc6567c95","after":"452c1a23ce7511646536a9d14f17069e4c684f20","ref":"refs/heads/develop","pushedAt":"2024-05-22T18:36:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"dotnet pack in CI (#1400)\n\n* dotnet pack in CI\r\n\r\nand delete the old build script\r\n\r\n* Update appveyor.yml","shortMessageHtmlLink":"dotnet pack in CI (#1400)"}},{"before":"7d52787ce3d909231a77da9d98f558aa90576863","after":"b09b4f53602d70c957c05508bf29471bc6567c95","ref":"refs/heads/develop","pushedAt":"2024-05-22T18:35:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Delete CountdownEventTests (#1409)\n\nWe have been using the BCL version since #1117","shortMessageHtmlLink":"Delete CountdownEventTests (#1409)"}},{"before":"b4722b86e86753d6938a6288c0b0bab4b394c063","after":"7d52787ce3d909231a77da9d98f558aa90576863","ref":"refs/heads/develop","pushedAt":"2024-05-21T11:05:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"make ConnectShouldActivateKeepAliveIfSessionIs test less flaky (#1410)\n\n* make ConnectShouldActivateKeepAliveIfSessionIs test less flaky\r\n\r\nwait longer and expect at least two instead of exactly two.\r\n\r\nexample: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49849877/job/9rrtw6j8eu3i5p8o?fullLog=true\r\n\r\n* fix net462 build","shortMessageHtmlLink":"make ConnectShouldActivateKeepAliveIfSessionIs test less flaky (#1410)"}},{"before":"23323aa2173167ae19e247d3325bdffdafc64c4e","after":"b4722b86e86753d6938a6288c0b0bab4b394c063","ref":"refs/heads/develop","pushedAt":"2024-05-21T11:05:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Enable nullable on NetConf/Scp/SshClient (#1392)\n\n* Enable nullable on NetConf/Scp/SshClient\r\n\r\n* fix formatting\r\n\r\n* improve directoryCounter check\r\n\r\n* disable nullable warnings on old frameworks\r\n\r\nsince the libraries are missing a lot of nullable attributes\r\nin the old frameworks, this causes a lot of false positive\r\nnullable warnings.\r\n\r\nSimply disable these warnings for old frameworks.","shortMessageHtmlLink":"Enable nullable on NetConf/Scp/SshClient (#1392)"}},{"before":"aa70718a862559f0b88957ef75d091ac92e576eb","after":"23323aa2173167ae19e247d3325bdffdafc64c4e","ref":"refs/heads/develop","pushedAt":"2024-05-20T15:27:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"use Regex Source Generator for .NET 7+ (#1401)\n\n* use Regex Source Generator for .NET 7+\r\n\r\nfixes #1131\r\n\r\n* use shorter pattern for GeneratedRegex","shortMessageHtmlLink":"use Regex Source Generator for .NET 7+ (#1401)"}},{"before":"1143ad3d2404500b975cfc1e67a77ea774f96cf2","after":"aa70718a862559f0b88957ef75d091ac92e576eb","ref":"refs/heads/develop","pushedAt":"2024-05-19T09:11:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"More AsyncSocketListener patchwork (#1408)\n\n* More AsyncSocketListener patchwork\r\n\r\nThis is Whack-a-mole part 2 in diagnosing or preventing the test host from crashing in CI.\r\n\r\n* Fix test","shortMessageHtmlLink":"More AsyncSocketListener patchwork (#1408)"}},{"before":"fcb4ea2a1bb3a8f2127a481dc21903ba6cddd0a0","after":"1143ad3d2404500b975cfc1e67a77ea774f96cf2","ref":"refs/heads/develop","pushedAt":"2024-05-18T19:25:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"fix flaky Sftp_BeginUploadFile test (#1402)\n\n* fix flaky Sftp_BeginUploadFile test\r\n\r\nthis test can randomly fail because it assumes that the callback\r\nhas been called when the AsyncWaitHandle was set. But this is not\r\nnecessarily the case because AsyncResult.SetAsCompleted does it\r\nthe other way around.\r\n\r\nexample: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49831002/job/1237d4lg46j22pf0\r\n\r\n* use ManualResetEventSlim\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"fix flaky Sftp_BeginUploadFile test (#1402)"}},{"before":"fe5ed423a069e5a65f6ccc0d5f1488e55f673ba9","after":"fcb4ea2a1bb3a8f2127a481dc21903ba6cddd0a0","ref":"refs/heads/develop","pushedAt":"2024-05-18T16:15:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"fix flaky ReceiveOnServerSocketShouldReturnZero test (#1404)\n\n* fix flaky ReceiveOnServerSocketShouldReturnZero test\r\n\r\nReceiveOnServerSocketShouldReturnZero assumed that the disconnect\r\nalready happened on the server side, but it never waits for this.\r\nThis could cause ServerSocket.Receive to still return valid data\r\nand fail the test.\r\n\r\nexample: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49836561/job/wen5tjd1c7wgxrfh\r\n\r\n* Update test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"fix flaky ReceiveOnServerSocketShouldReturnZero test (#1404)"}},{"before":"c0a353a4de7791b8274d6f7089687fb6fbfa58ae","after":"fe5ed423a069e5a65f6ccc0d5f1488e55f673ba9","ref":"refs/heads/develop","pushedAt":"2024-05-18T12:17:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"fix flaky Connectivity Tests (#1403)\n\nthese two tests were not waiting for the interruption (all other usages\r\nof BreakConnections() did). This could cause random failures because\r\ne.g. the wrong exception is thrown.\r\n\r\nexample: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49831433/job/4urb0upx63bvxcgu\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"fix flaky Connectivity Tests (#1403)"}},{"before":"1de33c469e893d81e27ed7076e2a6ba94ff4963d","after":"c0a353a4de7791b8274d6f7089687fb6fbfa58ae","ref":"refs/heads/develop","pushedAt":"2024-05-17T20:34:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Cleanup formatting and style and enforce it in CI (#1380)\n\n* Preparation to enforce formatting and style in CI\r\n\r\n- enabled IDE0055 to enforce formatting on build\r\n- disabled SA1137 and SA1025 because they are already\r\n covered by IDE0055\r\n- disabled SA1021 because it conflicts with csharp_space_after_cast\r\n\r\n* Cleanup formatting and style on codebase\r\n\r\nThis commit has no manual changes, it is the result\r\nof running \"dotnet format whitespace\" and \"dotnet format style\"\r\n\r\n* new formatting fixes after merge\r\n\r\n* appveyor: set git autocrlf\r\n\r\nas suggested by sharwell to hopefully fix Windows CI.\r\n\r\n* use autocrlf input\r\n\r\nto hopefully fix Linux tests\r\n\r\n* fix formatting\r\n\r\n* use autocrlf input for Linux only\r\n\r\n* set csharp_space_after_cast to false\r\n\r\n* Revert SA1021 suppression\r\n\r\n---------\r\n\r\nCo-authored-by: Robert Hague ","shortMessageHtmlLink":"Cleanup formatting and style and enforce it in CI (#1380)"}},{"before":"0cfeb6bb943adff9a56d863dfffcf45224769af7","after":"1de33c469e893d81e27ed7076e2a6ba94ff4963d","ref":"refs/heads/develop","pushedAt":"2024-05-10T09:38:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Documentation updates (#1395)\n\n- Update README to point to https://sshnet.github.io/SSH.NET rather than the CHM file\r\n- Add a CONTRIBUTING.md with some how-tos\r\n\r\nFor https://sshnet.github.io/SSH.NET:\r\n\r\n- Use the repo README as the landing page to keep them in sync\r\n- Combine the API-per-TFM pages to just one \"API\" page\r\n- Add a couple more examples\r\n- Add a GitHub link in the header.","shortMessageHtmlLink":"Documentation updates (#1395)"}},{"before":"f9908a22b5b171211292e2e7c38200a5d94e0a9b","after":"0cfeb6bb943adff9a56d863dfffcf45224769af7","ref":"refs/heads/develop","pushedAt":"2024-05-10T09:37:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Tweak AsyncSocketListener in tests (#1382)\n\n* Tweak AsyncSocketListener in tests\r\n\r\nSome CI runs have been crashing lately from within AsyncSocketListener.\r\nThis moves a bit of disconnection & exception handling around. It probably won't\r\nfix the underlying tests which would have otherwise failed, but it might stop the\r\nprocess from outright crashing.\r\n\r\nAlso reference the same code for the integration tests.\r\n\r\n* Simplify the diff\r\n\r\n* Stabilise a couple of tests","shortMessageHtmlLink":"Tweak AsyncSocketListener in tests (#1382)"}},{"before":"749a0e00749d2d6d92422a755ff1fafbb655916b","after":"f9908a22b5b171211292e2e7c38200a5d94e0a9b","ref":"refs/heads/develop","pushedAt":"2024-05-10T09:35:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Use System.Security.Cryptography for RSA (#1373)\n\n* Use BCL for RSA\r\n\r\n* Restore benchmark (with quirks for old code)\r\n\r\n* Fixup benchmark (remove compatibility with old code)\r\n\r\n* cosmetic tweaks\r\n\r\n* Add a regression test for #1388","shortMessageHtmlLink":"Use System.Security.Cryptography for RSA (#1373)"}},{"before":"6e42d1fcd3a94347ec8d9ceb487271dae3dd9774","after":"749a0e00749d2d6d92422a755ff1fafbb655916b","ref":"refs/heads/develop","pushedAt":"2024-05-06T19:22:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"drop obsolete #if directives (#1394)","shortMessageHtmlLink":"drop obsolete #if directives (#1394)"}},{"before":"59840ecdbaad0a0df8a56de71dfb05d3d7896942","after":"6e42d1fcd3a94347ec8d9ceb487271dae3dd9774","ref":"refs/heads/develop","pushedAt":"2024-05-06T19:20:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"gitattributes: set diff=csharp on cs files (#1393)","shortMessageHtmlLink":"gitattributes: set diff=csharp on cs files (#1393)"}},{"before":"f1f273cf349532b9d41c1de51d3b83a9accedc88","after":null,"ref":"refs/heads/release/2020.0","pushedAt":"2024-05-01T19:23:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"}},{"before":"69e91a01e14c9602e08eb87d29fdc437d8f83782","after":null,"ref":"refs/heads/cleanup","pushedAt":"2024-05-01T19:15:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"}},{"before":"3f1bfe69c18a17f9f2aaf64f20dc01426dac5aa1","after":null,"ref":"refs/heads/async","pushedAt":"2024-05-01T19:14:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"}},{"before":"aca73f59fe0a5d0d37f4ce57cef146c4aad2eaa0","after":null,"ref":"refs/heads/appveyor","pushedAt":"2024-05-01T19:12:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"}},{"before":"4e1e2436af54fbd29da313c747b72823c9b47765","after":"59840ecdbaad0a0df8a56de71dfb05d3d7896942","ref":"refs/heads/develop","pushedAt":"2024-04-27T20:43:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Fix SocketAsyncEventArgsAwaitable calling continuation multiple times (#918)\n\n* Fix SocketAsyncEventArgsAwaitable calling continuation multiple times\r\n\r\n* Use Interlocked.Exchange\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Fix SocketAsyncEventArgsAwaitable calling continuation multiple times ("}},{"before":"c8b527397a2ea90949d36dcbe00adaf23cfebdb4","after":"4e1e2436af54fbd29da313c747b72823c9b47765","ref":"refs/heads/develop","pushedAt":"2024-04-27T18:52:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Fix ArgumentException usage in BlockCipher (#818)\n\nCo-authored-by: Wojciech Nagórski \r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Fix ArgumentException usage in BlockCipher (#818)"}},{"before":"ce451293083ce4689f16e1bc88f282fc27bf36f5","after":"c8b527397a2ea90949d36dcbe00adaf23cfebdb4","ref":"refs/heads/develop","pushedAt":"2024-04-27T18:49:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Handle timeout correctly on Socks5 Proxy (#1342)\n\n* Add timeouts when reading from sockets in Socks5Connector\r\n\r\n* Add a Socks5 timeout test for a connection reply\r\n\r\n---------\r\n\r\nCo-authored-by: Wojciech Nagórski \r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Handle timeout correctly on Socks5 Proxy (#1342)"}},{"before":"94397d47ed3dcef941b960f0b8ce7d75d8aad47f","after":"ce451293083ce4689f16e1bc88f282fc27bf36f5","ref":"refs/heads/develop","pushedAt":"2024-04-24T21:49:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Fix potential side-channel timing attack issue (#1375)\n\n* Fix potential side-channel timing attack issue\r\n\r\n* Eliminate the extra allocation\r\n\r\n* Remove serverHash variable\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Fix potential side-channel timing attack issue (#1375)"}},{"before":"71423c17f9df4d4e0c02c4c8127d206f561309ce","after":"94397d47ed3dcef941b960f0b8ce7d75d8aad47f","ref":"refs/heads/develop","pushedAt":"2024-04-24T20:36:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Implement OpenSSH strict key exchange extension (#1366)\n\n* Implement OpenSSH strict key exchange extension\r\n\r\n* The pseudo-algorithm\r\nis only valid in the initial SSH2_MSG_KEXINIT and MUST be ignored\r\nif they are present in subsequent SSH2_MSG_KEXINIT packets.\r\n\r\n* Only send strict kex pseudo algorithm for the first kex.\r\nStrictly disable non-kex massages in strict kex mode.\r\n\r\n* Unit tests for strict kex\r\n\r\n* More unit tests\r\n\r\n* More unit tests\r\n\r\n* Correct file name\r\n\r\n* Update SessionTest_ConnectingBase.cs\r\n\r\n* More unit tests\r\n\r\n* Delete SessionTest_Connecting_ServerSendsMaxIgnoreMessagesBeforeKexInit.cs\r\n\r\n* Add a comment about throwing exception when inbound sequence number is about to wrap during init kex.\r\n\r\n* Delete SessionTest_Connecting_ServerSendsDebugMessageAfterKexInit_NoStrictKex.cs\r\n\r\n* Fix build\r\n\r\n* Update test/Renci.SshNet.Tests/Classes/SessionTest_Connected.cs\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Implement OpenSSH strict key exchange extension (#1366)"}},{"before":"3dc3fc8b1c7a02e5095e395fa490e1eb08792afc","after":"71423c17f9df4d4e0c02c4c8127d206f561309ce","ref":"refs/heads/develop","pushedAt":"2024-04-19T11:00:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"WojciechNagorski","name":"Wojciech Nagórski","path":"/WojciechNagorski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17333903?s=80&v=4"},"commit":{"message":"Add an AOT compatibility test app (#1378)\n\n* Add an AOT compatibility test app\r\n\r\nFollowing the guides at\r\nhttps://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/prepare-libraries-for-trimming?pivots=dotnet-8-0\r\nand https://devblogs.microsoft.com/dotnet/creating-aot-compatible-libraries/,\r\nadd an application which is published for AOT in CI.\r\n\r\nThis process fully verifies all code-paths in the library and its dependencies\r\nfor trimming/AOT, which the analyzers are not themselves able to do.\r\n\r\n(As a side benefit, now we are also checking the library builds in Release)\r\n\r\n* Test failure scenario\r\n\r\n* Revert \"Test failure scenario\"\r\n\r\nThis reverts commit 6ff943b5024b9ef57f94feb466dabeb55257fe2e.","shortMessageHtmlLink":"Add an AOT compatibility test app (#1378)"}},{"before":"953e1366f29936f013f35263dfe6b09304b2a2d0","after":"3dc3fc8b1c7a02e5095e395fa490e1eb08792afc","ref":"refs/heads/develop","pushedAt":"2024-04-18T18:06:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Add support for AEAD AES 128/256 GCM Ciphers (.NET 6.0 onward only) (#1369)\n\n* Init AeadCipher\r\n\r\n* Move AeadCipher to parent folder. Move EncryptBlock/DecryptBlock from SymmetricCipher to BlockCipher\r\n\r\n* simplify parameter name\r\n\r\n* Implement AesGcmCipher\r\n\r\n* Update README\r\n\r\n* Remove protected IV from AeadCipher; Set offset to outbound sequence just like other ciphers\r\n\r\n* Rename associatedData to packetLengthField\r\n\r\n* Use Span to avoid unnecessary allocations\r\n\r\n* Use `Span` to improve performance when `IncrementCounter()`\r\n\r\n* Add `IsAead` property to `CipherInfo`. Include packet length field and tag field in offset and length when call AesGcm's `Decrypt(...)` method. Do not determine HMAC if cipher is AesGcm during kex.\r\n\r\n* Fix build\r\n\r\n* Fix UT\r\n\r\n* Check `AesGcm.IsSupported` before add to the `Encryptions` collection.\r\nGuard AES-GCM with `NET6_0_OR_GREATER`.\r\nInsert AES-GCM ciphers right after AES-CTR ciphers but before AES-CBC ciphers, which is similar with OpenSSH:\r\n```\r\ndebug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com\r\ndebug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com\r\n```\r\nAlthough Dictionary's order is not defined, from observation, it is in the same order with add. Anyway that would be another topic.\r\n\r\n* Suppress CA1859 \"Use concrete types when possible for improved performance\" for `ConnectionInfo.Encryptions`.\r\nTest `Aes128Gcm` and `Aes256Gcm` only when `NET6_0_OR_GREATER`\r\n\r\n* Update xml doc comments. Do not treat AesGcmCipher separately in Session.cs\r\n\r\n* Fix build\r\n\r\n* Fix build\r\n\r\n* Update the comment as ChaCha20Poly1305 uses a separated key to encypt the packet length and the size it 4.\r\n\r\n* Update src/Renci.SshNet/Security/Cryptography/Cipher.cs\r\n\r\nCo-authored-by: Rob Hague \r\n\r\n* Make `AesGcmCipher` internal.\r\nAssert offset when decrypt.\r\n\r\n* Fix nullable error in build\r\n\r\n* typos\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Hague ","shortMessageHtmlLink":"Add support for AEAD AES 128/256 GCM Ciphers (.NET 6.0 onward only) (#…"}},{"before":"0fb38718e621c29f9fe105dcd8d9943b9fe19e53","after":"953e1366f29936f013f35263dfe6b09304b2a2d0","ref":"refs/heads/develop","pushedAt":"2024-04-18T17:26:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"Fix nullable error in build (#1377)","shortMessageHtmlLink":"Fix nullable error in build (#1377)"}},{"before":"b553f81f8a09e40177e72b17bfd07f4dd537f41b","after":"0fb38718e621c29f9fe105dcd8d9943b9fe19e53","ref":"refs/heads/develop","pushedAt":"2024-04-17T19:44:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Rob-Hague","name":"Rob Hague","path":"/Rob-Hague","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5132141?s=80&v=4"},"commit":{"message":"remove end_of_line from .editorconfig (#1372)\n\n* git: checkout cs files with crlf\r\n\r\n* remove end_of_line from .editorconfig\r\n\r\ninstead of forcing crlf checkout in git","shortMessageHtmlLink":"remove end_of_line from .editorconfig (#1372)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUg3I5wA","startCursor":null,"endCursor":null}},"title":"Activity · sshnet/SSH.NET"}