Commit Graph

1486 Commits

Author SHA1 Message Date
Jakub Jelen
2b67e2d54c SHA2 extension in the ssh-agent interface
The new constants for flags are defined in draft-miller-ssh-agent-02
are active if the SHA2 extension is negotiated with the server.

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit ebb01549d0)
2018-08-31 14:30:53 +02:00
Jakub Jelen
97d6eb84a4 auth: Support SHA2 extension for pubkey authentication (RFC 8332)
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 82da0c3361)
2018-08-31 14:30:53 +02:00
Jakub Jelen
33f2211cae pki: RSA signatures with SHA2 hash algorithms (RFC 8332)
* This change introduces a new API to request signature using
   one key and different hash algorithms. This is used only with
   RSA keys, that used to have SHA1 hardcoded, but the new
   algorithsms allow to use the SHA2 hashes, if the extension
   is negotiated.

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 1f08aabe43)
2018-08-31 14:30:53 +02:00
Jakub Jelen
03aff19b80 kex: Offer SHA2 extension signature algorithms by default
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 3ca7e1eea9)
2018-08-31 14:30:53 +02:00
Jakub Jelen
cf660fe27c pki: Support RSA verification using different hash algorithms
This changes the private API by adding one more argument to function

  pki_signature_from_blob()

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit fa60827840)
2018-08-31 14:30:53 +02:00
Jakub Jelen
f9d60e1360 client: Handle the MSG_EXT_INFO packet signalling supported extensions
RFC 8308: The extension negotiation in Secure Shell (SSH) Protocol

RFC 8332: Use of RSA Keys with SHA-256 and SHA-512
          in the Secure Shell (SSH) Protocol

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 761225712a)
2018-08-31 14:30:53 +02:00
Jakub Jelen
1098280e43 kex: Signalize support for the extension negotiation in client (RFC 8308)
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit df13d8c61f)
2018-08-31 14:30:53 +02:00
Andreas Schneider
7458e95ee5 poll: Fix size types in ssh_event_free()
src/poll.c:1024:9: error: assuming signed overflow does not occur when
    simplifying conditional to constant [-Werror=strict-overflow]

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 11d87238b8)
2018-08-30 08:59:56 +02:00
Andreas Schneider
2f69c5f022 poll: Reformat ssh_event_free()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 8243030c55)
2018-08-30 08:59:53 +02:00
Andreas Schneider
88c4d532ab Bump library version to 4.6.0
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 4fcc0bd407)
2018-08-29 19:17:00 +02:00
Jan-Niklas Burfeind
c847216ca4 dh: Add ssh_print_hash() function which can deal with sha256
Signed-off-by: Jan-Niklas Burfeind <libssh@aiyionpri.me>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit f32cb70675)
2018-08-29 19:16:50 +02:00
Jan-Niklas Burfeind
cacd2fa999 dh: Add SSH_PUBLICKEY_HASH_SHA256 to ssh_get_publickey_hash()
Signed-off-by: Jan-Niklas Burfeind <libssh@aiyionpri.me>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 1499b38aef)
2018-08-29 19:16:49 +02:00
Andreas Schneider
0b688e4829 sftp: Use strndup()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 509331ec81)
2018-08-29 19:16:48 +02:00
Andreas Schneider
27cf0ea06b misc: Add strndup implementation if not provides by the OS
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 247983e982)
2018-08-29 19:16:46 +02:00
Alex Hermann
6dc3f666c5 misc: Set default port to 22 in ssh_path_expand_escape()
Fixes, among others, ProxyCommand with %p when no port is used on
commandline or config file, thus using the default port.

Fixes T94

Signed-off-by: Alex Hermann <alex@hexla.nl>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 23f60a56f3)
2018-08-28 15:45:07 +02:00
Anderson Toshiyuki Sasaki
492095b2a7 cmake: Fix FindABIMap targets
Fix the targets and output files handling to make the symbols to be
updated correctly when a symbol is added or removed.

Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit f49bb1b6a3)
2018-08-27 16:46:59 +02:00
Andreas Schneider
193845ecdd auth: Reset errors on successful authentication
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit a0fec81221)
2018-08-27 12:25:10 +02:00
Andreas Schneider
598d04d5d9 error: Add ssh_reset_error() function
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0aad4de5f4)
2018-08-27 12:25:09 +02:00
Andreas Schneider
06c5dd9c84 auth: Also log the current auth method
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 280519af29)
2018-08-27 12:25:07 +02:00
Andreas Schneider
6632659907 auth: Fix the pending_call_state of ssh_userauth_password()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0ae376f133)
2018-08-27 12:25:05 +02:00
Andreas Schneider
86bf835d50 session: Group auth variables in a struct
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 73c9d60e5a)
2018-08-27 12:25:03 +02:00
Jakub Jelen
c9d0362a6b sftp: Avoid race condition reading incomplete data messages
This changes amends f561e6bcb3 which
introduces same check in one place, but miss it in other two places.

We encountered this issue with qemu using SFTP to transfer large
data chunks and in some cases, the file transfer was interrupted
without any reason. From the debug messages, it showed up that
last part of data message/packet was not handled in the time
of the sftp_read() call, therefore the ssh_channel_read() returned
zero (there was no more data to read yet), which made the whole
transfer fail hard instead of retrying later.

The proposed change is reusing the code from previously referenced
commit also in the other places.

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit ae3825dfb2)
2018-08-27 09:30:14 +02:00
Andreas Schneider
d2989f28db auth: Fix possible NULL pointer dereference
explicit_bzero() doesn't handle NULL.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 8f1e995cec)
2018-08-27 09:30:12 +02:00
Andreas Schneider
0bab6013d0 cmake: Check if the linker supports version scripts
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 4de8ed684b)
2018-08-27 09:30:10 +02:00
Andreas Schneider
c866592d7d options: Fix size types
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 119a457357)
2018-08-24 07:53:18 +02:00
Andreas Schneider
741021513b options: Fix integer types
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 9a43298b3a)
2018-08-23 22:41:21 +02:00
Andreas Schneider
97e8aba080 options: Reformat ssh_options_getopt()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 3f17154367)
2018-08-23 22:41:19 +02:00
Andreas Schneider
d0c1583ad2 knownhosts: Add knownhosts to libssh_session group
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 7e1b67754c)
2018-08-22 09:09:06 +02:00
Andreas Schneider
e862ea556c channels: Fix timeout variable to match documentation
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit c2fc9ac956)
2018-08-22 09:09:00 +02:00
Andreas Schneider
fabaab1540 gssapi: Fix size types
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 64a354159f)
2018-08-22 09:08:17 +02:00
Andreas Schneider
8ac49ff181 options: Fix size types
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 0a46690eca)
2018-08-22 09:08:15 +02:00
Andreas Schneider
cdf55a18d2 kex: Fix size types
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 26263aabd4)
2018-08-22 09:08:13 +02:00
Andreas Schneider
664b7ebfa1 known_hosts: Update documentation of deprecated knwon_hosts functions
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 7946104566)
2018-08-21 11:40:48 +02:00
Andreas Schneider
f00d780c16 cmake: Improve compiler flag detection
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit a9a99fb31f)
2018-08-20 18:43:20 +02:00
Andreas Schneider
b15103ef4e log: Make sure the buffer for date is big enough
src/log.c:71:32: error: '%06ld' directive output may be truncated
writing between 6 and 20 bytes into a region of size between 0 and 63
[-Werror=format-truncation=]
         snprintf(buf, len, "%s.%06ld", tbuf, (long)tv.tv_usec);

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 6766b0a860)
2018-08-20 18:43:06 +02:00
Andreas Schneider
95071cd1fe agent: Fix type of the buffer
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit ce45de9ea2)
2018-08-20 18:43:05 +02:00
Andreas Schneider
18a888f9fb mbedtls: Use getter for ssh_mbedtls_ctr_drbg
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 85d2c0371a)
2018-08-20 18:43:04 +02:00
Jakub Jelen
54e7af83e6 sftp: Fix the debug message in sftp_enqueue()
This fixes the assignment of variables to comments and makes
the output symmetric with sftp_dequeue().

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit a0214dfc9a)
2018-08-18 10:01:47 +02:00
Jakub Jelen
5869345899 config: Do not access negative indexes of seen array
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
(cherry picked from commit 6848c23d84)
2018-08-16 18:18:15 +02:00
Andreas Schneider
24de1fbde8 init: Fix DllMain
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 86d00f438c)
2018-08-16 09:22:12 +02:00
Andreas Schneider
1510b63d20 cmake: Bump library version for release
(cherry picked from commit a3475c2e4b)
2018-08-13 22:19:25 +02:00
Andreas Schneider
0db4d9bd46 init: Add a library constructor and destructor for VC
If we compile with Visual Studio, we need a DllMain() for running init
and finialize which is the same as a constructor and destructor.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 4d87256ca7)
2018-08-13 22:12:22 +02:00
Anderson Toshiyuki Sasaki
b99849c831 init: ignore init counter if destructor calls finalize
If the destructor calls finalize, ignore the init counter and finalize
the library anyway.

Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 66a3bc0332)
2018-08-13 15:27:51 +02:00
Andreas Schneider
c4d4731ddf cmake: Only install static lib if built WITH_STATIC_LIB
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 83898f3f6c)
2018-08-13 13:49:21 +02:00
Andreas Schneider
c42410b560 init: Only use constructor attribute if available
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit f2b6899298)
2018-08-13 11:00:52 +02:00
Anderson Toshiyuki Sasaki
efc427fdce cmake: Introduce symbol versioning
This adds a cmake module, FindABIMap, which looks for abimap and
provides functions to generate a symbol version linker script.

The module can be included using find_package(ABIMap).

This also adds the option to compile with symbol versioning.  The symbol
list is obtained from the header files by filtering those marked with
the LIBSSH_API modifier.

Such symbols are used as input to generate the version script used by
the linker.  The version script is automatically updated as new symbols
marked with LIBSSH_API are added to the header files.

If any symbol is removed, the build will fail due to break in the ABI.

Symbol versioning is enabled by default if abimap has been found. It is
disabled in non-UNIX platforms. It can be disabled by passing
"-DWITH_SYMBOL_VERSIONING=OFF" option to cmake.

Pair-Programmed-With: Andreas Schneider <asn@cryptomilk.org>

Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2018-08-08 20:58:23 +02:00
Andreas Schneider
0f64bc78a8 ABI: Add map file for library version 4.5.0
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2018-08-08 20:58:23 +02:00
Andreas Schneider
6c87316a9c session: Fix memory leak of global_knownhosts
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2018-08-08 15:04:59 +02:00
Andreas Schneider
96476f74af kownhosts: Fix a memory leak in ssh_session_has_known_hosts_entry()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2018-08-08 15:04:59 +02:00
Andreas Schneider
52b57077de knownhosts: Fix a memory leak in ssh_session_get_known_hosts_entry()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
2018-08-08 15:04:59 +02:00