1
0
mirror of https://github.com/libssh2/libssh2.git synced 2025-11-21 14:00:51 +03:00
Commit Graph

2122 Commits

Author SHA1 Message Date
Will Cosgrove
1f76151c92 kex.c: move EC macro outside of if check #549 (#550)
File: kex.c

Notes:
Moved the macro LIBSSH2_KEX_METHOD_EC_SHA_HASH_CREATE_VERIFY outside of the LIBSSH2_ECDSA since it's also now used by the ED25519 code.

Sha 256, 384 and 512 need to be defined for all backends now even if they aren't used directly. I believe this is already the case, but just a heads up.

Credit:
Stefan-Ghinea
2021-01-26 11:41:21 -08:00
Tim Gates
720998f322 kex.c: fix simple typo, niumber -> number (#545)
File: kex.c

Notes:
There is a small typo in src/kex.c.

Should read `number` rather than `niumber`.

Credit:
Tim Gates
2020-12-18 09:58:29 -08:00
Tseng Jun
cfe0bf6498 session.c: Correct a typo which may lead to stack overflow (#533)
File: session.c

Notes:
Seems the author intend to terminate banner_dup buffer, later, print it to the debug console.

Author:
Tseng Jun
2020-11-11 11:18:36 -08:00
Marc Hoersken
6c7769dcc4 wincng: fix random big number generation to match openssl
The old function would set the least significant bits in
the most significant byte instead of the most significant bits.

The old function would also zero pad too much bits in the
most significant byte. This lead to a reduction of key space
in the most significant byte according to the following listing:
- 8 bits reduced to 0 bits => eg. 2048 bits to 2040 bits DH key
- 7 bits reduced to 1 bits => eg. 2047 bits to 2041 bits DH key
- 6 bits reduced to 2 bits => eg. 2046 bits to 2042 bits DH key
- 5 bits reduced to 3 bits => eg. 2045 bits to 2043 bits DH key

No change would occur for the case of 4 significant bits.
For 1 to 3 significant bits in the most significant byte
the DH key would actually be expanded instead of reduced:
- 3 bits expanded to 5 bits => eg. 2043 bits to 2045 bits DH key
- 2 bits expanded to 6 bits => eg. 2042 bits to 2046 bits DH key
- 1 bits expanded to 7 bits => eg. 2041 bits to 2047 bits DH key

There is no case of 0 significant bits in the most significant byte
since this would be a case of 8 significant bits in the next byte.

At the moment only the following case applies due to a fixed
DH key size value currently being used in libssh2:

The DH group_order is fixed to 256 (bytes) which leads to a
2047 bits DH key size by calculating (256 * 8) - 1.

This means the DH keyspace was previously reduced from 2047 bits
to 2041 bits (while the top and bottom bits are always set), so the
keyspace is actually always reduced from 2045 bits to 2039 bits.

All of this is only relevant for Windows versions supporting the
WinCNG backend (Vista or newer) before Windows 10 version 1903.

Closes #521
2020-10-10 19:58:06 +02:00
Daniel Stenberg
4afcb8cd9b libssh2_session_callback_set.3: explain the recv/send callbacks
Describe how to actually use these callbacks.

Closes #518
2020-09-28 17:45:13 +02:00
Will Cosgrove
00d5b0c385 agent.c: formatting
Improved formatting of RECV_SEND_ALL macro.
2020-09-23 13:41:34 -07:00
Will Cosgrove
a1975c5b59 CMakeLists.txt: respect install lib dir #405 (#515)
Files:
CMakeLists.txt

Notes:
Use CMAKE_INSTALL_LIBDIR directory

Credit: Arfrever
2020-09-23 13:21:11 -07:00
Will Cosgrove
f553dcc95d kex.c: group16-sha512 and group18-sha512 support #457 (#468)
Files: kex.c

Notes:
Added key exchange group16-sha512 and group18-sha512. As a result did the following:

Abstracted diffie_hellman_sha256() to diffie_hellman_sha_algo() which is now algorithm agnostic and takes the algorithm as a parameter since we needed sha512 support. Unfortunately it required some helper functions but they are simple.
Deleted diffie_hellman_sha1()
Deleted diffie_hellman_sha1 specific macro
Cleaned up some formatting
Defined sha384 in os400 and wincng backends
Defined LIBSSH2_DH_MAX_MODULUS_BITS to abort the connection if we receive too large of p from the server doing sha1 key exchange.
Reorder the default key exchange list to match OpenSSH and improve security

Credit:
Will Cosgrove
2020-09-23 13:20:00 -07:00
Igor Klevanets
9ae9ff30cb agent.c: Recv and send all bytes via network in agent_transact_unix() (#510)
Files: agent.c

Notes:
Handle sending/receiving partial packet replies in agent.c API.

Credit: Klevanets Igor <cerevra@yandex-team.ru>
2020-09-23 13:15:01 -07:00
Daniel Stenberg
ecd6a74e44 Makefile.am: include all test files in the dist #379
File:
Makefile.am

Notes:
No longer conditionally include OpenSSL specific test files, they aren't run if we're not building against OpenSSL 1.1.x anyway.

Credit:
Daniel Stenberg
2020-09-01 16:40:48 -07:00
Max Dymond
7a4b051ba4 Add support for an OSS Fuzzer fuzzing target (#392)
Files:
.travis.yml, configure.ac, ossfuzz 

Notes:
This adds support for an OSS-Fuzz fuzzing target in ssh2_client_fuzzer,
which is a cut down example of ssh2.c. Future enhancements can improve
coverage.

Credit:
Max Dymond
2020-09-01 14:20:52 -07:00
Sebastián Katzer
5528f3da02 mbedtls.c: ECDSA support for mbed TLS (#385)
Files:
mbedtls.c, mbedtls.h, .travis.yml

Notes:
This PR adds support for ECDSA for both key exchange and host key algorithms.

The following elliptic curves are supported:

256-bit curve defined by FIPS 186-4 and SEC1
384-bit curve defined by FIPS 186-4 and SEC1
521-bit curve defined by FIPS 186-4 and SEC1

Credit:
Sebastián Katzer
2020-09-01 14:18:09 -07:00
Marc Hoersken
93862bf6c1 buildconf: exec autoreconf to avoid additional process (#512)
Also make buildconf exit with the return code of autoreconf.

Follow up to #224
2020-09-01 20:37:21 +02:00
Marc Hoersken
5964268dc7 scp.c: fix indentation in shell_quotearg documentation 2020-08-23 20:53:48 +02:00
Marc Hoersken
5eaa7aa1c0 wincng: make more use of new helper functions (#496) 2020-07-21 21:18:18 +02:00
Marc Hoersken
1894b30b5c wincng: make sure algorithm providers are closed once (#496) 2020-07-21 21:17:53 +02:00
David Benjamin
1a61d0c3ca openssl.c: clean up curve25519 code (#499)
File: openssl.c, openssl.h, crypto.h, kex.c

Notes:
This cleans up a few things in the curve25519 implementation:

- There is no need to create X509_PUBKEYs or PKCS8_PRIV_KEY_INFOs to
  extract key material. EVP_PKEY_get_raw_private_key and
  EVP_PKEY_get_raw_public_key work fine.

- libssh2_x25519_ctx was never used (and occasionally mis-typedefed to
  libssh2_ed25519_ctx). Remove it. The _libssh2_curve25519_new and
  _libssh2_curve25519_gen_k interfaces use the bytes. Note, if it needs
  to be added back, there is no need to roundtrip through
  EVP_PKEY_new_raw_private_key. EVP_PKEY_keygen already generated an
  EVP_PKEY.

- Add some missing error checks.

Credit:
David Benjamin
2020-07-10 10:47:48 -07:00
Will Cosgrove
ca9bb08908 transport.c: socket is disconnected, return error (#500)
File: transport.c

Notes:
This is to fix #102, instead of continuing to attempt to read a disconnected socket, it will now error out. 

Credit:
TDi-jonesds
2020-07-10 10:45:47 -07:00
Will Cosgrove
6b5fdf796b stale.yml
Increasing stale values.
2020-07-08 13:48:59 -07:00
Marc Hoersken
3baa367136 wincng: try newer DH API first, fallback to legacy RSA API
Avoid the use of RtlGetVersion or similar Win32 functions,
since these depend on version information from manifests.

This commit makes the WinCNG backend first try to use the
new DH algorithm API with the raw secret derivation feature.
In case this feature is not available the WinCNG backend
will fallback to the classic approach of using RSA-encrypt
to perform the required modular exponentiation of BigNums.

The feature availability test is done during the first handshake
and the result is stored in the crypto backends global state.

Follow up to #397
Closes #484
2020-07-06 20:46:48 +02:00
Marc Hoersken
8e6ae2855b wincng: fix indentation of function arguments and comments
Follow up to #397
2020-07-06 20:46:48 +02:00
Wez Furlong
7a26697ede wincng: use newer DH API for Windows 8.1+
Since Windows 1903 the approach used to perform DH kex with the CNG
API has been failing.

This commit switches to using the `DH` algorithm provider to perform
generation of the key pair and derivation of the shared secret.

It uses a feature of CNG that is not yet documented.  The sources of
information that I've found on this are:

* https://stackoverflow.com/a/56378698/149111
* 5d39011e63/mini/crypto/cng/dh.inl (L355)

With this change I am able to successfully connect from Windows 10 to my
ubuntu system.

Refs: https://github.com/alexcrichton/ssh2-rs/issues/122
Fixes: https://github.com/libssh2/libssh2/issues/388
Closes: https://github.com/libssh2/libssh2/pull/397
2020-07-06 20:46:48 +02:00
Zenju
0222603df5 comp.c: Fix name clash with ZLIB macro "compress" (#418)
File: comp.c

Notes:
* Fix name clash with ZLIB macro "compress". 

Credit:
Zenju
2020-07-01 11:55:29 -07:00
yann-morin-1998
fc5d77881e buildsystem: drop custom buildconf script, rely on autoreconf (#224)
Notes:
The buildconf script is currently required, because we need to copy a
header around, because it is used both from the library and the examples
sources.

However, having a custom 'buildconf'-like script is not needed if we can
ensure that the header exists by the time it is needed. For that, we can
just append the src/ directory to the headers search path for the
examples.

And then it means we no longer need to generate the same header twice,
so we remove the second one from configure.ac.

Now, we can just call "autoreconf -fi" to generate the autotools files,
instead of relying on the canned sequence in "buildconf", since
autoreconf has now long known what to do at the correct moment (future
versions of autotools, automake, autopoint, autoheader etc... may
require an other ordering, or other intermediate steps, etc...).

Eventually, get rid of buildconf now it is no longer needed. In fact, we
really keep it for legacy, but have it just call autoreconf (and print a
nice user-friendly warning). Don't include it in the release tarballs,
though.

Update doc, gitignore, and travis-CI jobs accordingly.

Credit:
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Sam Voss <sam.voss@rockwellcollins.com>
2020-07-01 11:44:08 -07:00
Will Cosgrove
1c3a03ebc3 libssh2.h: Update Diffie Hellman group values (#493)
File: libssh2.h

Notes:
Update the min, preferred and max DH group values based on RFC 8270.

Credit:
Will Cosgrove, noted from email list by Mitchell Holland
2020-07-01 11:37:20 -07:00
Marc Hoersken
92d756045a travis: use existing Makefile target to run checksrc 2020-06-22 21:24:44 +02:00
Marc Hoersken
87c5883a42 Makefile: also run checksrc on test source files 2020-06-22 21:24:05 +02:00
Marc Hoersken
984d008106 tests: avoid use of deprecated function _sleep (#490) 2020-06-22 21:08:57 +02:00
Marc Hoersken
ac13b70a89 tests: avoid use of banned function strncat (#489) 2020-06-22 21:08:11 +02:00
Marc Hoersken
36d87a17a8 tests: satisfy checksrc regarding max line length of 79 chars
Follow up to 2764bc8e06
2020-06-20 21:48:30 +02:00
Marc Hoersken
2764bc8e06 tests: satisfy checksrc with whitespace only fixes
checksrc.pl -i4 -m79 -ASIZEOFNOPAREN -ASNPRINTF
            -ACOPYRIGHT -AFOPENMODE tests/*.[ch]
2020-06-20 20:47:56 +02:00
Marc Hoersken
ec53d55cc0 tests: add support for ports published via Docker for Windows 2020-06-20 18:47:49 +02:00
Marc Hoersken
b78e57a2d7 tests: restore retry behaviour for docker-machine ip command 2020-06-20 18:44:30 +02:00
Marc Hoersken
0f6d3b68db tests: fix mix of declarations and code failing C89 compliance 2020-06-20 18:42:24 +02:00
Marc Hoersken
6c99a18577 wincng: add and improve checks in bit counting function 2020-06-14 19:36:32 +02:00
Marc Hoersken
e7d5439119 wincng: align bits to bytes calculation in all functions 2020-06-14 19:35:21 +02:00
Marc Hoersken
cc00ece962 wincng: do not disable key validation that can be enabled
The modular exponentiation also works with key validation enabled.
2020-06-14 19:34:18 +02:00
Marc Hoersken
93206a7acd wincng: fix return value in _libssh2_dh_secret
Do not ignore return value of modular exponentiation.
2020-06-14 19:32:49 +02:00
Marc Hoersken
9b5407f91b appveyor: build and run tests for WinCNG crypto backend 2020-06-08 21:14:47 +02:00
suryakalpo
07fc1532b6 INSTALL_CMAKE.md: Update formatting (#481)
File: INSTALL_CMAKE.md

Notes:
Although the original text would be immediately clear to seasoned users of CMAKE and/or Unix shell, the lack of newlines may cause some confusion for newcomers. Hence, wrapping the texts in a md code-block such that the newlines appear as intended.

credit:
suryakalpo
2020-06-01 16:26:09 -07:00
Marc Hoersken
ffab6960b5 src: add new and align include guards in header files (#480)
Make sure all include guards exist and follow the same format.
2020-05-31 23:08:15 +02:00
Marc Hoersken
ba149e804e wincng: fix multiple definition of `_libssh2_wincng' (#479)
Add missing include guard and move global state
from header to source file by using extern.
2020-05-31 23:07:39 +02:00
Will Cosgrove
0b44e558f3 transport.c: moving total_num check from #476 (#478)
file: transport.c

notes:
moving total_num zero length check from #476 up to the prior bounds check which already includes a total_num check. Makes it slightly more readable.

credit:
Will Cosgrove
2020-05-28 14:20:08 -07:00
lutianxiong
642eec48ff transport.c: fix use-of-uninitialized-value (#476)
file:transport.c

notes:
return error if malloc(0)

credit:
lutianxiong
2020-05-28 10:25:40 -07:00
Dr. Koutheir Attouchi
1105af5651 libssh2_sftp.h: Changed type of LIBSSH2_FX_* constants to unsigned long, fixes #474
File:
libssh2_sftp.h 

Notes:
Error constants `LIBSSH2_FX_*` are only returned by `libssh2_sftp_last_error()` which returns `unsigned long`.
Therefore these constants should be defined as unsigned long literals, instead of int literals.

Credit:
Dr. Koutheir Attouchi
2020-05-26 10:28:12 -07:00
monnerat
4e75a59e29 os400qc3.c: constify libssh2_os400qc3_hash_update() data parameter. (#469)
Files: os400qc3.c, os400qc3.h

Notes:
Fixes building on OS400. #426

Credit:
Reported-by: hjindra on github, dev by Monnerat
2020-05-15 10:26:52 -07:00
monnerat
6e0f17f672 HACKING.CRYPTO: keep up to date with new crypto definitions from code. (#466)
File: HACKING.CRYPTO

Notes:
This commit updates the HACKING.CRYPTO documentation file in an attempt to make it in sync with current code.
New documented features are:

SHA384
SHA512
ECDSA
ED25519

Credit:
monnerat
2020-05-06 16:54:11 -07:00
Harry Sintonen
1a082247a7 kex.c: Add diffie-hellman-group14-sha256 Key Exchange Method (#464)
File: kex.c

Notes: Added diffie-hellman-group14-sha256 kex

Credit: Harry Sintonen <sintonen@iki.fi>
2020-05-01 10:26:20 -07:00
Will Cosgrove
e238df7353 os400qc3.h: define sha512 macros (#465)
file: os400qc3.h
notes: fixes for building libssh2 1.9.x
2020-04-30 11:27:41 -07:00
Will Cosgrove
1e57d61b01 os400qc3.h: define EC types to fix building #426 (#462)
File: os400qc3.h
Notes: define missing EC types which prevents building
Credit: hjindra
2020-04-17 15:28:20 -07:00