1
1

1921 Коммитов

Автор SHA1 Сообщение Дата
Daniel Stenberg
d10da27a07
docs/SECURITY: the max embargo is 14 days now 2018-03-12 21:03:07 +01:00
Viktor Szakats
7697448db6 docs: spelling fixes [ci skip]
Closes https://github.com/libssh2/libssh2/pull/222
2018-03-12 19:21:37 +00:00
Will Cosgrove
e39fcfdd3f
Fixed minor tabs/spacing issues 2018-03-12 11:06:41 -07:00
Will Cosgrove
1bcf309ad8
Update kex.c 2018-03-12 11:04:37 -07:00
Will Cosgrove
228c3d9f48
Added basic bounds checking #206
Basic bounds checking in ecdh_sha2_nistp()
2018-03-12 10:22:52 -07:00
Will Cosgrove
f8b2474fb6
Fixed Clang warning #206
Fixed possible garbage value for secret in an error case
2018-03-12 10:08:13 -07:00
Will Cosgrove
6909dfc07e
Fixed incorrect #if to #ifdef #206
When checking HAVE_OPAQUE_STRUCTS.
2018-03-12 09:59:25 -07:00
Viktor Szakats
e1d8c63476 src: suppress two checksrc warnings
Ref: https://github.com/libssh2/libssh2/pull/235
2018-03-12 11:10:09 +00:00
Viktor Szakats
ef6eaadba5 src: address fopen() warnings, add missing copyright headers
Ref: https://github.com/libssh2/libssh2/pull/235
2018-03-12 11:09:36 +00:00
Viktor Szakats
c274a3fdd4 src: replace sprintf() with snprintf()
Ref: https://github.com/libssh2/libssh2/pull/235
2018-03-12 11:09:10 +00:00
Viktor Szakats
e54ef175d4 src: fix checksrc warnings
Use checksrc.pl from the curl project, with (for now)
suppressed long line warnings and indentation set to
4 spaces. Fixes are whitespace for the most part.

Warning count went down from 2704 to 12.

Also fix codespell typos, two non-ANSI C89 comments
and a stray tab in include/libssh2.h.

Ref: https://github.com/libssh2/libssh2/pull/235
2018-03-12 11:08:21 +00:00
Viktor Szakats
fad6e5bb02 checksrc: add source style checker
This is a slightly extended version of this original source
from the curl project:
8b754c430b/lib/checksrc.pl

This version adds the following options to customize it for
libssh2 (plus some whitespace formatting):

`-i<n>`  to override indentation spaces (2)
`-m<n>`  to override maximum line length (79)

Command-line used to check libssh2 sources:

$ ./checksrc.pl -i4 -m500 *.c *.h

Closes https://github.com/libssh2/libssh2/pull/236
2018-03-12 10:59:15 +00:00
Viktor Szakats
2d4d062813 src: add static qualifier
To private, const strings.

Closes https://github.com/libssh2/libssh2/pull/237
2018-03-12 10:57:01 +00:00
Will Cosgrove
aba34f5f56 Add support for ECDSA keys and host keys (#41)
This commit lands full ECDSA key support when using the OpenSSL
backend. Which includes:

New KEX methods:
ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521

Can now read OpenSSL formatted ECDSA key files.

Now supports known host keys of type ecdsa-sha2-nistp256.

New curve types:
NID_X9_62_prime256v1, NID_secp384r1, NID_secp521r1

Default host key preferred ordering is now nistp256, nistp384,
nistp521, rsa, dss.

Ref: https://github.com/libssh2/libssh2/issues/41

Closes https://github.com/libssh2/libssh2/pull/206
2018-03-09 19:28:38 +00:00
Will Cosgrove
bcd492163b
Fixed possible crash when decoding invalid data
When trying to decode invalid data, it frees the buffer but doesn't nil it so the caller gets a junk memory pointer which they could potentially double free.
2017-12-15 10:42:50 -08:00
Will Cosgrove
0ecc41f16c
Remove call to OpenSSL_add_all_ciphers()
Now lives in libssh2 init() from PR #189
2017-12-14 13:40:25 -08:00
Will Cosgrove
a7df51164d
Fixed incorrect reference to decrypted block
Fixed incorrectly copied memory from p->buf into init instead of from the decrypted buffer block. The only reason this worked was because the crypt() function decrypts the value in-place and overwrites p->buf.  I'm working on a fork that no longer does this and exposed this bug.
2017-12-11 11:31:57 -08:00
Pan
616fd4d1b3 Fix typo in crypt.c (#218) 2017-10-20 10:45:07 -07:00
Kamil Dudka
712c6cbdd2 session: avoid printing misleading debug messages
... while throwing LIBSSH2_ERROR_EAGAIN out of session_startup()

If the session runs in blocking mode, LIBSSH2_ERROR_EAGAIN never reaches
the libssh2 API boundary and, in non-blocking mode, these messages are
suppressed by the condition in _libssh2_error_flags() anyway.

Closes #211
2017-10-17 15:03:48 +02:00
Viktor Szakats
1d0e694d7d win32/GNUmakefile: allow customizing dll suffixes
- New `LIBSSH2_DLL_SUFFIX` envvar will add a suffix to the generated
  libssh2 dll name. Useful to add `-x64` to 64-bit builds so that
  it can live in the same directory as the 32-bit one. By default
  this is empty.

- New `LIBSSH2_DLL_A_SUFFIX` envvar to customize the suffix of the
  generated import library (implib) for libssh2 .dll. It defaults
  to `dll`, and it's useful to modify that to `.dll` to have the
  standard naming scheme for mingw-built .dlls, i.e. `libssh2.dll.a`.

Ref: aaa16f8025

Closes https://github.com/libssh2/libssh2/pull/215
2017-10-15 20:36:59 +00:00
Viktor Szakats
e41d6f4b0e makefile.m32: allow to override gcc, ar and ranlib
Allow to ovverride certain build tools, making it possible to
use LLVM/Clang to build libssh2. The default behavior is unchanged.
To build with clang (as offered by MSYS2), these settings can
be used:

LIBSSH2_CC=clang
LIBSSH2_AR=llvm-ar
LIBSSH2_RANLIB=llvm-ranlib

Also adjust ranlib parameters to be compatible with LLVM/Clang's
ranlib tool.

Closes https://github.com/libssh2/libssh2/pull/214
2017-10-15 17:23:47 +00:00
Will Cosgrove
23b873a9e5 Fixes out of bounds memory access (#210)
If an invalid PEM file is read and the lines are longer than 128 characters it will go out of bounds and crash on line 91.
2017-09-27 11:08:50 -07:00
Kamil Dudka
819ef4f203 scp: do not NUL-terminate the command for remote exec (#208)
It breaks SCP download/upload from/to certain server implementations.

The bug does not manifest with OpenSSH, which silently drops the NUL
byte (eventually with any garbage that follows the NUL byte) before
executing it.

Bug: https://bugzilla.redhat.com/1489736
2017-09-11 12:13:45 -07:00
Viktor Szakats
fe186fef3a openssl.c: remove no longer used variable (#204)
after e378d2e30a40bd9bcee06dc3a4250f269098e200
2017-08-21 17:49:57 -05:00
Will Cosgrove
6762664e7e Fix for #188 (#189)
* Update openssl.c

* Create openssl.h
2017-06-09 14:59:18 -07:00
Marcel Raad
c423b543ca openssl: fix build with OpenSSL 1.1 API (#176)
When building with OPENSSL_API_COMPAT=0x10100000L, OpenSSL_add_all_algorithms
and OpenSSL_add_all_ciphers don't exist. The corresponding functionality is
handled automatically with OpenSSL 1.1.
2017-05-24 10:21:22 -07:00
Sune Bredahl
bbc43cb333 Add support for SHA256 hostkey fingerprints (#180)
Looks good, thanks!
2017-05-24 10:15:53 -07:00
Will Cosgrove
97518ca8bd Fix memory leak of crypt_ctx->h using openSSL 1.1+ (#177)
Need to use EVP_CIPHER_CTX_free instead of EVP_CIPHER_CTX_reset.
2017-05-12 16:34:26 -07:00
Marc Hoersken
323aa08f01 tests/openssh_server/authorized_keys: add key_rsa_encrypted.pub 2017-03-02 22:29:14 +01:00
Marc Hoersken
20a545d37d tests: add simple test for passphrase-protected PEM file support 2017-03-02 00:51:37 +01:00
Marc Hoersken
aefc5db56a os400qc3: enable passphrase-protected PEM file support using pem.c 2017-03-02 00:15:31 +01:00
Marc Hoersken
fe963dfd3a pem: fix indentation and replace assert after 386e012292 2017-03-02 00:14:36 +01:00
Keno Fischer
386e012292 pem: add passphrase-protected PEM file support for libgcrypt and wincng
Since they use our own PEM parser which did not support encrypted
PEM files, trying to use such files on these backends failed.
Fix that by augmenting the PEM parser to support encrypted PEM files.
2017-03-02 00:12:06 +01:00
Thomas
674299c346 misc: use time constant implementation for AES CTR increment 2017-03-01 23:09:33 +01:00
Thomas
2de14f8f9a wincng: add AES CTR mode support (aes128-ctr, aes192-ctr, aes256-ctr) 2017-03-01 23:09:16 +01:00
Thomas
e378d2e30a openssl: move shared AES-CTR code into misc 2017-03-01 23:00:32 +01:00
Alex Crichton
b3f9557f52 kex: acknowledge error code from libssh2_dh_key_pair()
Fixes a segfault using ssh-agent on Windows

This commit fixes a segfault seen dereferencing a null pointer on
Windows when using ssh-agent. The problem ended up being that errors
weren't being communicated all the way through, causing null pointers to
be used when functions should have bailed out sooner.

The `_libssh2_dh_key_pair` function for WinCNG was modified to propagate
errors, and then the two callsites in kex.c of
`diffie_hellman_sha{1,256}` were updated to recognize this error and
bail out.

Fixes #162
Closes #163
2016-12-20 23:34:43 +01:00
monnerat
f7daf3185a Implement Diffie-Hellman computations in crypto backends. (#149)
Not all backends feature the low level API needed to compute a Diffie-Hellman
secret, but some of them directly implement Diffie-Hellman support with opaque
private data. The later approach is now generalized and backends are
responsible for all Diffie Hellman computations.
As a side effect, procedures/macros _libssh2_bn_rand and _libssh2_bn_mod_exp
are no longer needed outside the backends.
2016-11-27 18:39:00 +00:00
Peter Stuge
5abceec571 acinclude.m4: The mbedtls crypto backend actually requires libmbedcrypto
Examples can't be linked with libmbedtls but need libmbedcrypto, and
any users of libssh2 which use libtool and libssh2.la would encounter
the same problem.

This changes the mbedtls detection to search for libmbedcrypto, which
is the actual dependency for the backend.
2016-11-16 22:32:39 +01:00
Peter Stuge
ab8f0bc0bf acinclude.m4: Add CPPFLAGS=-I$prefix-dir/include in LIBSSH2_LIB_HAVE_LINKFLAGS
This is absolutely neccessary for header files to be found when
AC_LIB_HAVE_LINKFLAGS searches for libraries.
2016-11-16 22:25:16 +01:00
Peter Stuge
5621a97e38 acinclude.m4: Make saved variables in LIBSSH2_LIB_HAVE_LINKFLAGS uniform 2016-11-16 22:23:53 +01:00
Peter Stuge
ddb0c65856 docs/HACKING.CRYPTO: Improve documentation for autoconf build system 2016-11-16 22:20:02 +01:00
Alex Arslan
8dc9f4c156 Check for netinet/in.h in the tests cmake file (#148) 2016-11-16 08:45:38 +00:00
Patrick Monnerat
028a0ba4ed Define new Diffie-Hellman context for mbedTLS 2016-11-13 18:14:50 +00:00
monnerat
c8c1b4a050 Make libssh2 work again on os400. (#118)
* os400: minimum supported OS version is now V6R1.
Do not log compiler informational messages.

* Implement crypto backend specific Diffie-Hellman computation.

This feature is now needed on os400 because the QC3 library does not
implement bn_mod_exp() natively. Up to now, this function was emulated using
an RSA encryption, but commits ca5222ea819cc5ed797860070b4c6c1aeeb28420 and
7934c9ce2a029c43e3642a492d3b9e494d1542be (CVE-2016-0787) broke the emulation
because QC3 only supports RSA exponents up to 512 bits.

Happily, QC3 supports a native API for Diffie-Hellman computation, with
opaque random value: this commit implements the use of this API and, as a
side effect, enables support of this feature for any other crypto backend that
would use it.

A "generic" Diffie-Hellman computation internal API supports crypto backends
not implementing their own: this generic API uses the same functions as before.

* Fix typos in docs/HACKING.CRYPTO.
2016-11-12 18:15:49 +00:00
Peter Stuge
c81b2384ac acinclude.m4: Fixup OpenSSL EVP_aes_128_ctr() detection 2016-11-12 10:46:06 +00:00
Peter Stuge
e70e71a3b1 configure.ac: Add --with-crypto= instead of many different --with-$backend
The new --with-crypto option replaces the previous backend-specific
--with-{openssl,libgcrypt,mbedtls,wincng} options and fixes some issues.

* libgcrypt or mbedtls would previously be used whenever found, even
  if configure was passed --without-libgcrypt or --without-mbedtls.

* If --with-$backend was specified then configure would not fail even
  if that library could not be found, and would instead use whichever
  crypto library was found first.

The new option defaults to `auto`, which makes configure check for all
supported crypto libraries in turn, choosing the first one found, or
exiting with an error if none can be found.
2016-11-12 10:46:06 +00:00
Tony Kelman
e83bbc48ab Build mbedtls from source on Travis (#133)
* Revert "Revert "travis: Test mbedtls too""

This reverts commit c4c60eac5ca756333034b07dd9e0b97741493ed3.

* travis: Build mbedtls from source on Travis

Use TOOLCHAIN_OPTION when calling cmake on mbedtls

* tests: only run DSA tests for non-mbedtls

crypto backends
2016-11-12 10:41:48 +00:00
Peter Stuge
a68356418d configure.ac src/Makefile.am: Remove dead AM_CONDITIONAL(OS400QC3)
According to os400/README400 this backend can not be built
with configure+make, and the conditional is hard coded to false.
2016-11-05 22:18:04 +00:00
Peter Stuge
6b0a09bc11 configure.ac: Add -DNDEBUG to CPPFLAGS in non-debug builds
There are a few uses of assert() in channel.c, sftp.c and transport.c.
2016-11-05 22:18:04 +00:00