Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OPENSSH KeyReader for more keys #614

Merged
merged 3 commits into from
Apr 18, 2021
Merged

Conversation

darinkes
Copy link
Collaborator

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

@huobazi
Copy link

huobazi commented Jul 22, 2020

+1

@xivk
Copy link

xivk commented Sep 18, 2020

Anything I can do to help with this pull request? Willing to put in some work, this is something I need.

@jons
Copy link

jons commented Sep 30, 2020

seconded for needing this feature.

@aibars
Copy link

aibars commented Nov 3, 2020

Any idea when does a new release including these changes will be released?

@epenet
Copy link

epenet commented Dec 23, 2020

@darinkes there is a conflict on the branch. Could you maybe rebase it?

@darinkes darinkes force-pushed the openssh_format_rsa branch 3 times, most recently from 040ae97 to 4b11594 Compare January 2, 2021 09:45
@epenet
Copy link

epenet commented Jan 5, 2021

@drieseng is there anything we can do to help getting this merged in?

src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
src/Renci.SshNet/PrivateKeyFile.cs Outdated Show resolved Hide resolved
@drieseng
Copy link
Member

@darinkes LGTM, with some comments. Please update README.md as well.

Some other things I'd like to discuss:

KeyHostAlgorithm

To me, either:

  • KeyHostAlgorithm remains public, and we update PrivateKeyFile.HostKey to return KeyHostAlgorithm.
    -or-
  • We change KeyHostAlgorithm to internal.

IDisposable

In PrivateKeyFile, we currently keep a "copy" of Key around to be able to dispose it.
We could instead implement IDisposable on KeyHostAlgorithm.

Regardless where we dispose the key, we should also check if the key effectively implements IDisposable instead of always casting to IDisposable like we do now. This allows us to remove the dummy IDisposable implementation from EcdsaKey and ED25519Key.

PrivateKeyFile unit tests

Right now, the unit tests for PrivateKeyFile are limited to verifying whether we do not throw an exception when loading a given key format. Shouldn't we verify whether the key information is correctly read, and cover more failure conditions?

@chrduc
Copy link

chrduc commented Jan 21, 2021

@drieseng @darinkes what is the ETA for your openssh_format_rsa PR? We are wanting this change ASAP

@darinkes
Copy link
Collaborator Author

@drieseng @darinkes what is the ETA for your openssh_format_rsa PR? We are wanting this change ASAP

I hope to have some spare time this weekend to include the comments of @drieseng

@drieseng
Copy link
Member

@chrduc Don't forget that we all have day jobs. Consider sponsoring @darinkes and/or SSH.NET to show us your appreciation :p

@chrduc
Copy link

chrduc commented Jan 29, 2021

@drieseng @darinkes what is the ETA for your openssh_format_rsa PR? We are wanting this change ASAP

I hope to have some spare time this weekend to include the comments of @drieseng

Thanks @darinkes

@darinkes
Copy link
Collaborator Author

Updated the PR with suggestions from @drieseng.
Would be awesome if someone could take this PR for a test-ride.

@darinkes
Copy link
Collaborator Author

@darinkes LGTM, with some comments. Please update README.md as well.

PrivateKeyFile unit tests

Right now, the unit tests for PrivateKeyFile are limited to verifying whether we do not throw an exception when loading a given key format. Shouldn't we verify whether the key information is correctly read, and cover more failure conditions?

I would also like to use new keys on each run instead of hardcoded resources.

@drieseng
Copy link
Member

drieseng commented Feb 1, 2021

I would also like to use new keys on each run instead of hardcoded resources.

I don't see a problem with the hardcoded resources. They should also allow for predictable results to verify against.
What would the advantage be of using new keys?

@drieseng
Copy link
Member

drieseng commented Feb 1, 2021

@darinkes Can you have a look at my other comments here?

@drieseng
Copy link
Member

drieseng commented Feb 1, 2021

Would be awesome if someone could take this PR for a test-ride.

When I have some time, I'll add integrations tests. For now these integration tests are still closed source :(
I should also find time to open source these.

@darinkes
Copy link
Collaborator Author

darinkes commented Feb 1, 2021

Some other things I'd like to discuss:

KeyHostAlgorithm

To me, either:

  • KeyHostAlgorithm remains public, and we update PrivateKeyFile.HostKey to return KeyHostAlgorithm.
    -or-
  • We change KeyHostAlgorithm to internal.

No opinion on that.

IDisposable

In PrivateKeyFile, we currently keep a "copy" of Key around to be able to dispose it.
We could instead implement IDisposable on KeyHostAlgorithm.

Regardless where we dispose the key, we should also check if the key effectively implements IDisposable instead of always casting to IDisposable like we do now. This allows us to remove the dummy IDisposable implementation from EcdsaKey and ED25519Key.

Ack, makes sense.

PrivateKeyFile unit tests

Right now, the unit tests for PrivateKeyFile are limited to verifying whether we do not throw an exception when loading a given key format. Shouldn't we verify whether the key information is correctly read, and cover more failure conditions?

Ack, this should be added as well.

I would also like to use new keys on each run instead of hardcoded resources.

I don't see a problem with the hardcoded resources. They should also allow for predictable results to verify against.
What would the advantage be of using new keys?

My concern is the padding, to ensure its done right hardcoded resources just test it works for those keys.
But maybe just overthinking it.

@drieseng drieseng merged commit f072c5f into sshnet:develop Apr 18, 2021
@drieseng
Copy link
Member

@darinkes Thanks, and sorry it took this long.

@darinkes
Copy link
Collaborator Author

@darinkes yay, cool! :) No worries about the timeframe!
Ping me, when you want to start the refactoring.

@NN---
Copy link

NN--- commented Apr 25, 2021

When can we expect NuGet with the update ?

@michaelstanford
Copy link

When can we expect NuGet with the update ?

Is there any update on this?

JoostJM pushed a commit to JoostJM/SSH.NET that referenced this pull request Aug 20, 2021
* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.
@darinkes darinkes mentioned this pull request Sep 30, 2021
@alucard87pl
Copy link

Any update on this? ShareX depends on this library and it's seriously cramping my productivity.

@alucard87pl
Copy link

Since this appears to be merged, when can we expect a new release of SSH.NET?
There are now a few other applications that I am using on a nearly daily basis that make use of this library and I am relegated to using SSH through the command line instead.
Last full release was almost a year ago :(

@lilhoser
Copy link

lilhoser commented Jan 7, 2022

Agreed. Can we please get a new release? I can't use this project due to:
Renci.SshNet.Common.SshException: 'cipher name aes256-ctr for openssh key file is not supported'

@Isitar
Copy link

Isitar commented Feb 8, 2022

what hinders us from releasing?

@zybexXL
Copy link
Contributor

zybexXL commented Feb 8, 2022

Unavailable single owner, unwilling to just add others as admins to help things along. Eventually someone else needs to just fork this thing and take a more active stance on the project, this is getting ridiculous. I propose SSHNet+ for the name.

@chrduc
Copy link

chrduc commented Feb 8, 2022 via email

@zybexXL
Copy link
Contributor

zybexXL commented Feb 8, 2022

I did the same to merge in 3 or 4 of my own PRs, but if we keep doing that just for our own stuff it doesn't really help the project and the community at large.

@darkoperator
Copy link

darkoperator commented Feb 8, 2022 via email

@zybexXL
Copy link
Contributor

zybexXL commented Feb 8, 2022

It is a lot of work specially when someone has kids and main job , even more in COVID times, do understand the frustration from both sides. So Pedro are you going to do the fork and add other maintainers? I personally use the project but lack the skills, time and commitment for such and endeavor, even forking for my own project became a real pain since Open Source is a hobby and I put out stuff as is with 0 implied support. If you do and maintain it more regularly I would use it 😊

It is a strong commitment, which I am also reluctant to make. I wouldn't like to start it and then let it fall to the same disrepair due to lack of time. It may seem hypocritical to criticize Gert and then refuse to do what he does, but the difference is that he already made that commitment, I did not. I would be willing to onboard more admins/maintainers though, so I'm still considering if I should go ahead or not. It would be a first time for me as a maintainer of such a public project, and I also need to check with my company if it doesn't break any of their policies. All in all, I feel it would be best if Gert just added some active admins and stop trying to micromanage every single line of code.

@darkoperator
Copy link

darkoperator commented Feb 8, 2022 via email

@zybexXL
Copy link
Contributor

zybexXL commented Feb 8, 2022

@darkoperator, please don't reply via email - check the Github page directly and edit your comments there to remove the extra stuff coming from outlook.

@drieseng
Copy link
Member

drieseng commented Feb 9, 2022

I'd be happy to add new members. That doesn't mean that any change contributed by them would be blindly accepted (the same goes for any change that I would want to make... yes, I can hear you laughing).

Having support for numerous legacy target frameworks slows down the process considerably. I actually have an old Windows 8.1 VM that I need to use for part of the release process. Most of the software that I need to build a release is no longer available for download. I sollicited feedback on this topic through #665, but I haven't even had time to act upon it.

I'd really like to move this project forward, but it's just one of many things I'd like to do. Work has kept me very busy lately (12 to 15 hours a day).

@darkoperator, @darinkes: Would you guys be interested in becoming part of the team? Perhaps more souls in the team will also encourage me to spend more of my (limited) time on SSH.NET.

@IgorMilavec
Copy link
Collaborator

@drieseng I'm also willing to help out. There are a lot of PRs pending review, issues to close etc. I think with proper "rules of engagement" you can still keep the oversight of the project while letting others help out.
One other area I feel should be enhanced is a release pipeline to automatically publish the beta NuGet package when a commit is made to the develop branch.

@darkoperator
Copy link

not a C# expert but willing to help where I can :)

@darinkes
Copy link
Collaborator Author

@drieseng sure! trying to support the stuff i've added anyways :)

@IgorMilavec IgorMilavec added this to the vNext milestone Feb 21, 2022
drieseng pushed a commit that referenced this pull request May 24, 2023
* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.
mjhilton pushed a commit to OctopusDeploy/SSH.NET that referenced this pull request Jun 9, 2023
* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.
WojciechNagorski added a commit that referenced this pull request Oct 10, 2023
* Assets/logos (#782)

* Added logo assets

* Added PNG 1260x640 with white border

Co-authored-by: 103filgualan <f.gualandi@crif.com>

* OPENSSH KeyReader for more keys (#614)

* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.

* Add interface to SftpFile #120 (#812)

* Create ISftpFile interface. SftpFile sealed. Return ISftpFile from SftpClient instead of SftpFile. Make ISftpClient interface disposable.

Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>

* Start MessageListener with ThreadAbstraction.ExecuteThreadLongRunning (#902)

* Fix Thread pool exhaustion due to MessageListener running on ThreadPool
* Mark long running thread as background

* Add async support to SftpClient and SftpFileStream (#819)

* Add FEATURE_TAP and net472 target
* Add TAP async support to SftpClient and SftpFileStream
* Add async support to DnsAbstraction and SocketAbstraction
* Add async support to *Connector and refactor the hierarchy
* Add ConnectAsync to BaseClient

* Add CODEOWNERS file.

* Fix virus false-positive by Defender on Renci.SSHNet.Tests.dll (#867)

Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>

* Add unit tests for task-based asynchronous API (#906)

* Fix runtime and culture dependant tests.
* Set C# 7.3 in Tests.csproj to limit intellisense's suggestions under different targets
* Add SftpClientTest.*Async
* Add SftpFileStreamTest_OpenAsync_*
* Add SftpFileStreamTest_WriteAsync_*
* Add SftpFileStreamTest_ReadAsync_*
* Align AppVeyor script with Test project target frameworks

* correct 'Documenation' to 'Documentation' (#838)

in the documentation's window title

* Agent auth and Keygen (#794)

* Allow to set PrivateKeyFile Key directly
   So you can add your own Key-Classes to SSH.NET
* Add ED25519 ctor for just pub key part.
* Make ECDSA Key Bits accessible
   You cant export imported CngKeys. To be able to export them to agent or Key-Files make the private bits also accessible.
* Better NETFRAMEWORK vs NETSTANDARD handling
* Add Comment Property to Key
* Add IPrivateKeySource
  So Extension can add own PrivateKeyFiles, e.g. PuttyKeyFile.

* Use cryptographically secure random number generator.
Fixes CVE-2022-29245.

* Remove unused import.

* Add IBaseClient for BaseClient and ISftpClient to inherit from (#975)

Add IBaseClient for BaseClient and ISftpClient to inherit from

* fix typo (#999)

* Fix Seek Operations in SftpFileStream (#910)

* Fix offset operations in SftpFileStream.Seek
* Fix seek exception message and add default case for invalid seek origin
* Use named params when throwing ArgumentException
* Add tests for seeking from end of file

* Add back copyright to license. (#1060)

Fixes #1059.

* Removing old target frameworks (#1109)

Remove support for legacy / deprecated target frameworks while adding support for .NET 6.0 (and higher).
The supported target frameworks are now:
* .NETFramework 4.6.2 (and higher)
* .NET Standard 2.0
* .NET 6.0 (and higher)

* Remove old features [Part 1] (#1117)

Remove obsolete feature switches (now that we've remove support for legacy target frameworks) and remove corresponding conditional code.

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES (#1119)

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES
* Add exception documentation

* Fix some (lots of) issues reported by analyzers. (#1125)

Fix some (lots of) issues reported by analyzers.

* Round 2 of analyzer fixes and general cleanup. (#1132)

* Analyzer fixes round 3. (#1135)

* Replace Array<T>.Empty with Array.Empty<T>() (#1137)

* Replace IsNullOrWhiteSpace extension (#1142)

* Use License Expression for NuGet Package

licenseUrl is deprecated, see NuGet/Announcements#32

* Integration tests

* Remove todos

* Update CODEOWNERS

* Use correct SSH.NET

* ListDirectoryAsync return IAsyncEnumerable (#1126)

* ListDirectoryAsync return IAsyncEnumerable

* Fix documentation

* Update README.md

* Fix

* Add Sftp ListDirectoryAsync test

* Revert

* Integration tests for ListDirectoryAsync with IAsyncEnumerable

* Fix the assembly resolution build warning (#1165)

* Delete performance/longrunning tests (#1143)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Move Integration tests (#1173)

* Renci.SshNet.IntegrationTests

* Renci.SshNet.TestTools.OpenSSH

* Move integration tests to main repo

* Move old tests to new integration tests

* Move old integration tests to new integration tests

* Move more tests

* Move authentication tests

* Move SshClientTests

* Fix some tests

* Remove duplicated test

* Poc of ProcessDisruptor

* Rename

* Some fixes

* Remove performance tests

* Small improvements

* Add a benchmarks project (#1151)

* Add a benchmarks project

* Small improvements

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle() (#936)

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle()

* merge

* Update src/Renci.SshNet/Session.cs

Co-authored-by: Rob Hague <rob.hague00@gmail.com>

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>

* Support SHA256 fingerprints for host key validation (#1098)

* Add tests for HostKeyEventArgs

* Add SHA256 fingerprint support

* Add support for RSA SHA-2 public key algorithms (#1177)

* Abstract out the hash algorithm from RsaDigitalSignature

* Add integration tests

* Add DigitalSignature property to KeyHostAlgorithm

* Add IHostAlgorithmsProvider interface

* Verify the host signature

* Fix HostKeyEventArgsTest after merge

* Remove PubkeyAcceptedAlgorithms ssh-rsa

* Add test coverage for RSA keys in PrivateKeyFile

* Obsolete IPrivateKeySource

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Improvements after #1177 (#1180)

* Use ExceptionDispatchInfo in more places (#1182)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Try to "fix" the flaky test (#1185)

* Enable DSA tests (#1181)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* FingerPrints (#1186)

* Use OS-agnostic socket error codes to allow tests run on different OSes (#1179)

SocketErrorCode is OS agnostic, ErrorCode is OS specific.

On Windows ErrorCode = (int) SocketErrorCode, but on Mac and Unix it is not.

For example ExitCode for HostNotFound (11001) on Windows is 11001, on Mac & Unix is -131073. So testing for ExitCode == 11001 fails on Mac & Unix.

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Fix for channel session semaphore from thread blocking (#1071)

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Update Channel to fix AppVeyor failure (field should be readonly)

* Update ISftpClient for #120 (#1193)

* Implement set last write and access time (#1194)

* Add/migrate hmac+cipher integration tests (#1189)

* Add/migrate hmac+cipher integration tests

* fix integration tests

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Update tests for SetLastAccessTime(Utc) to also verify the time component and the Kind of the DateTime value returned by GetLastAccessTime(Utc). (#1198)

---------

Co-authored-by: Filippo Gualandi <filippo.gualandi@gmail.com>
Co-authored-by: 103filgualan <f.gualandi@crif.com>
Co-authored-by: Stefan Rinkes <darinkes@users.noreply.github.com>
Co-authored-by: wxtsxt <wojciech.swieboda@gmail.com>
Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>
Co-authored-by: Igor Milavec <igor.milavec@gmail.com>
Co-authored-by: drieseng <gert.driesen@telenet.be>
Co-authored-by: Pedro Fonseca <pbfonseca@gmail.com>
Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>
Co-authored-by: Maximiliano Jabase <maxijabase@gmail.com>
Co-authored-by: Owen Krueger <37021716+Owen-Krueger@users.noreply.github.com>
Co-authored-by: Masuri <psh0258@gmail.com>
Co-authored-by: LemonPi314 <49930425+LemonPi314@users.noreply.github.com>
Co-authored-by: Gert Driesen <gertdriesen@msn.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Rob Hague <rh@johnstreetcapital.com>
Co-authored-by: Marius Thesing <marius.thesing@gmail.com>
Co-authored-by: Dāvis Mošenkovs <davikovs@gmail.com>
Co-authored-by: Dmitry Tsarevich <dimhotepus@users.noreply.github.com>
Co-authored-by: Patrick Yates <114094360+patrick-yates-redgate@users.noreply.github.com>
@WojciechNagorski
Copy link
Collaborator

Version 2023.0.0 has been published https://www.nuget.org/packages/SSH.NET/2023.0.0

WojciechNagorski added a commit that referenced this pull request Dec 29, 2023
* Release 2023.0.0 (#1201)

* Assets/logos (#782)

* Added logo assets

* Added PNG 1260x640 with white border

Co-authored-by: 103filgualan <f.gualandi@crif.com>

* OPENSSH KeyReader for more keys (#614)

* OPENSSH KeyReader for more keys

Add support to parse OpenSSH Keys with ECDSA 256/384/521 and RSA.

https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key

Change-Id: Iaa9cce0f2522e5fee377a82cb252f81f0b7cc563

* Fix ED25519Key KeyLength

* Fix ED25519 PubKey-auth

LeadingZeros of BigInteger-Conversion have to be removed
before sending the Key.

* Add interface to SftpFile #120 (#812)

* Create ISftpFile interface. SftpFile sealed. Return ISftpFile from SftpClient instead of SftpFile. Make ISftpClient interface disposable.

Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>

* Start MessageListener with ThreadAbstraction.ExecuteThreadLongRunning (#902)

* Fix Thread pool exhaustion due to MessageListener running on ThreadPool
* Mark long running thread as background

* Add async support to SftpClient and SftpFileStream (#819)

* Add FEATURE_TAP and net472 target
* Add TAP async support to SftpClient and SftpFileStream
* Add async support to DnsAbstraction and SocketAbstraction
* Add async support to *Connector and refactor the hierarchy
* Add ConnectAsync to BaseClient

* Add CODEOWNERS file.

* Fix virus false-positive by Defender on Renci.SSHNet.Tests.dll (#867)

Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>

* Add unit tests for task-based asynchronous API (#906)

* Fix runtime and culture dependant tests.
* Set C# 7.3 in Tests.csproj to limit intellisense's suggestions under different targets
* Add SftpClientTest.*Async
* Add SftpFileStreamTest_OpenAsync_*
* Add SftpFileStreamTest_WriteAsync_*
* Add SftpFileStreamTest_ReadAsync_*
* Align AppVeyor script with Test project target frameworks

* correct 'Documenation' to 'Documentation' (#838)

in the documentation's window title

* Agent auth and Keygen (#794)

* Allow to set PrivateKeyFile Key directly
   So you can add your own Key-Classes to SSH.NET
* Add ED25519 ctor for just pub key part.
* Make ECDSA Key Bits accessible
   You cant export imported CngKeys. To be able to export them to agent or Key-Files make the private bits also accessible.
* Better NETFRAMEWORK vs NETSTANDARD handling
* Add Comment Property to Key
* Add IPrivateKeySource
  So Extension can add own PrivateKeyFiles, e.g. PuttyKeyFile.

* Use cryptographically secure random number generator.
Fixes CVE-2022-29245.

* Remove unused import.

* Add IBaseClient for BaseClient and ISftpClient to inherit from (#975)

Add IBaseClient for BaseClient and ISftpClient to inherit from

* fix typo (#999)

* Fix Seek Operations in SftpFileStream (#910)

* Fix offset operations in SftpFileStream.Seek
* Fix seek exception message and add default case for invalid seek origin
* Use named params when throwing ArgumentException
* Add tests for seeking from end of file

* Add back copyright to license. (#1060)

Fixes #1059.

* Removing old target frameworks (#1109)

Remove support for legacy / deprecated target frameworks while adding support for .NET 6.0 (and higher).
The supported target frameworks are now:
* .NETFramework 4.6.2 (and higher)
* .NET Standard 2.0
* .NET 6.0 (and higher)

* Remove old features [Part 1] (#1117)

Remove obsolete feature switches (now that we've remove support for legacy target frameworks) and remove corresponding conditional code.

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES (#1119)

* Remove FEATURE_DIRECTORYINFO_ENUMERATEFILES
* Add exception documentation

* Fix some (lots of) issues reported by analyzers. (#1125)

Fix some (lots of) issues reported by analyzers.

* Round 2 of analyzer fixes and general cleanup. (#1132)

* Analyzer fixes round 3. (#1135)

* Replace Array<T>.Empty with Array.Empty<T>() (#1137)

* Replace IsNullOrWhiteSpace extension (#1142)

* Use License Expression for NuGet Package

licenseUrl is deprecated, see NuGet/Announcements#32

* Integration tests

* Remove todos

* Update CODEOWNERS

* Use correct SSH.NET

* ListDirectoryAsync return IAsyncEnumerable (#1126)

* ListDirectoryAsync return IAsyncEnumerable

* Fix documentation

* Update README.md

* Fix

* Add Sftp ListDirectoryAsync test

* Revert

* Integration tests for ListDirectoryAsync with IAsyncEnumerable

* Fix the assembly resolution build warning (#1165)

* Delete performance/longrunning tests (#1143)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Move Integration tests (#1173)

* Renci.SshNet.IntegrationTests

* Renci.SshNet.TestTools.OpenSSH

* Move integration tests to main repo

* Move old tests to new integration tests

* Move old integration tests to new integration tests

* Move more tests

* Move authentication tests

* Move SshClientTests

* Fix some tests

* Remove duplicated test

* Poc of ProcessDisruptor

* Rename

* Some fixes

* Remove performance tests

* Small improvements

* Add a benchmarks project (#1151)

* Add a benchmarks project

* Small improvements

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle() (#936)

* Use ExceptionDispatchInfo to retain call stack in Session.WaitOnHandle()

* merge

* Update src/Renci.SshNet/Session.cs

Co-authored-by: Rob Hague <rob.hague00@gmail.com>

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>

* Support SHA256 fingerprints for host key validation (#1098)

* Add tests for HostKeyEventArgs

* Add SHA256 fingerprint support

* Add support for RSA SHA-2 public key algorithms (#1177)

* Abstract out the hash algorithm from RsaDigitalSignature

* Add integration tests

* Add DigitalSignature property to KeyHostAlgorithm

* Add IHostAlgorithmsProvider interface

* Verify the host signature

* Fix HostKeyEventArgsTest after merge

* Remove PubkeyAcceptedAlgorithms ssh-rsa

* Add test coverage for RSA keys in PrivateKeyFile

* Obsolete IPrivateKeySource

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Improvements after #1177 (#1180)

* Use ExceptionDispatchInfo in more places (#1182)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Try to "fix" the flaky test (#1185)

* Enable DSA tests (#1181)

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* FingerPrints (#1186)

* Use OS-agnostic socket error codes to allow tests run on different OSes (#1179)

SocketErrorCode is OS agnostic, ErrorCode is OS specific.

On Windows ErrorCode = (int) SocketErrorCode, but on Mac and Unix it is not.

For example ExitCode for HostNotFound (11001) on Windows is 11001, on Mac & Unix is -131073. So testing for ExitCode == 11001 fails on Mac & Unix.

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Fix for channel session semaphore from thread blocking (#1071)

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Merging fix from @clivetong into our own SSH.NET fork
- The following article describes some of the issues with the double check lock that we have seen issues with: https://www.sudhanshutheone.com/posts/double-check-lock-csharp

* Update Channel to fix AppVeyor failure (field should be readonly)

* Update ISftpClient for #120 (#1193)

* Implement set last write and access time (#1194)

* Add/migrate hmac+cipher integration tests (#1189)

* Add/migrate hmac+cipher integration tests

* fix integration tests

---------

Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>

* Update tests for SetLastAccessTime(Utc) to also verify the time component and the Kind of the DateTime value returned by GetLastAccessTime(Utc). (#1198)

---------

Co-authored-by: Filippo Gualandi <filippo.gualandi@gmail.com>
Co-authored-by: 103filgualan <f.gualandi@crif.com>
Co-authored-by: Stefan Rinkes <darinkes@users.noreply.github.com>
Co-authored-by: wxtsxt <wojciech.swieboda@gmail.com>
Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>
Co-authored-by: Igor Milavec <igor.milavec@gmail.com>
Co-authored-by: drieseng <gert.driesen@telenet.be>
Co-authored-by: Pedro Fonseca <pbfonseca@gmail.com>
Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>
Co-authored-by: Maximiliano Jabase <maxijabase@gmail.com>
Co-authored-by: Owen Krueger <37021716+Owen-Krueger@users.noreply.github.com>
Co-authored-by: Masuri <psh0258@gmail.com>
Co-authored-by: LemonPi314 <49930425+LemonPi314@users.noreply.github.com>
Co-authored-by: Gert Driesen <gertdriesen@msn.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Rob Hague <rh@johnstreetcapital.com>
Co-authored-by: Marius Thesing <marius.thesing@gmail.com>
Co-authored-by: Dāvis Mošenkovs <davikovs@gmail.com>
Co-authored-by: Dmitry Tsarevich <dimhotepus@users.noreply.github.com>
Co-authored-by: Patrick Yates <114094360+patrick-yates-redgate@users.noreply.github.com>

* Remove code examples

---------

Co-authored-by: Filippo Gualandi <filippo.gualandi@gmail.com>
Co-authored-by: 103filgualan <f.gualandi@crif.com>
Co-authored-by: Stefan Rinkes <darinkes@users.noreply.github.com>
Co-authored-by: wxtsxt <wojciech.swieboda@gmail.com>
Co-authored-by: Wojciech Swieboda <wswieboda@chathamfinancial.com>
Co-authored-by: Igor Milavec <igor.milavec@gmail.com>
Co-authored-by: drieseng <gert.driesen@telenet.be>
Co-authored-by: Pedro Fonseca <pbfonseca@gmail.com>
Co-authored-by: Pedro Fonseca <pfonseca@qti.qualcomm.com>
Co-authored-by: Maximiliano Jabase <maxijabase@gmail.com>
Co-authored-by: Owen Krueger <37021716+Owen-Krueger@users.noreply.github.com>
Co-authored-by: Masuri <psh0258@gmail.com>
Co-authored-by: LemonPi314 <49930425+LemonPi314@users.noreply.github.com>
Co-authored-by: Gert Driesen <gertdriesen@msn.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Rob Hague <rh@johnstreetcapital.com>
Co-authored-by: Marius Thesing <marius.thesing@gmail.com>
Co-authored-by: Dāvis Mošenkovs <davikovs@gmail.com>
Co-authored-by: Dmitry Tsarevich <dimhotepus@users.noreply.github.com>
Co-authored-by: Patrick Yates <114094360+patrick-yates-redgate@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet