Skip to content

Commit 1f58137

Browse files
authored
Merge pull request #137 from rapier1/dev_minor
HPN-SSH 18.7.1 Release
2 parents 27d8b7e + 7d6d075 commit 1f58137

32 files changed

+789
-2301
lines changed

.git_allowed_signers

Lines changed: 0 additions & 11 deletions
This file was deleted.

.git_allowed_signers.asc

Lines changed: 0 additions & 16 deletions
This file was deleted.

.github/configs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,11 @@ case "${TARGET_HOST}" in
354354
win10)
355355
# No sudo on Windows.
356356
SUDO=""
357+
SKIP_LTESTS="scp-resume"
358+
;;
359+
windows*)
360+
#skip the scp-resume test
361+
SKIP_LTESTS="scp-resume"
357362
;;
358363
esac
359364

@@ -363,6 +368,7 @@ case "$host" in
363368
SUDO=""
364369
# Don't run compat tests on cygwin as they don't currently compile.
365370
TEST_TARGET="tests"
371+
SKIP_LTESTS="scp-resume"
366372
;;
367373
*-darwin*)
368374
# Unless specified otherwise, build without OpenSSL on Mac OS since

.github/workflows/c-cpp.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
# First we test all OSes in the default configuration.
2929
target:
3030
- ubuntu-22.04
31-
- ubunut-24.04
31+
- ubuntu-24.04
3232
- ubuntu-latest
3333
- ubuntu-22.04-arm
3434
- ubuntu-24.04-arm
@@ -41,6 +41,14 @@ jobs:
4141
# Then we include any extra configs we want to test for specific VMs.
4242
# Valgrind slows things down quite a bit, so start them first.
4343
include:
44+
- { target: ubuntu-22.04, config: valgrind-1 }
45+
- { target: ubuntu-22.04, config: valgrind-2 }
46+
- { target: ubuntu-22.04, config: valgrind-3 }
47+
- { target: ubuntu-22.04, config: valgrind-4 }
48+
- { target: ubuntu-22.04, config: valgrind-5 }
49+
- { target: ubuntu-22.04, config: valgrind-6 }
50+
- { target: ubuntu-22.04, config: valgrind-7 }
51+
- { target: ubuntu-22.04, config: valgrind-unit }
4452
- { target: windows-2022, config: cygwin-release }
4553
- { target: windows-2025, config: cygwin-release }
4654
# binn no longer supports c89 so skip.
@@ -63,14 +71,6 @@ jobs:
6371
- { target: ubuntu-22.04, config: pam }
6472
- { target: ubuntu-22.04, config: selinux }
6573
- { target: ubuntu-22.04, config: sk }
66-
- { target: ubuntu-22.04, config: valgrind-1 }
67-
- { target: ubuntu-22.04, config: valgrind-2 }
68-
- { target: ubuntu-22.04, config: valgrind-3 }
69-
- { target: ubuntu-22.04, config: valgrind-4 }
70-
- { target: ubuntu-22.04, config: valgrind-5 }
71-
- { target: ubuntu-22.04, config: valgrind-6 }
72-
- { target: ubuntu-22.04, config: valgrind-7 }
73-
- { target: ubuntu-22.04, config: valgrind-unit }
7474
- { target: ubuntu-22.04, config: without-openssl }
7575
- { target: ubuntu-latest, config: gcc-14 }
7676
- { target: ubuntu-latest, config: clang-15 }
@@ -80,7 +80,7 @@ jobs:
8080
# - { target: ubuntu-latest, config: aws-lc }
8181
- { target: ubuntu-latest, config: libressl-master }
8282
# We don't support libreSSL earlier than 3.7 due to problems with
83-
# the structures used by the aes-ctr mt cipher that wasn't address
83+
# the structures used by the aes-ctr mt cipher that wasn't addressed
8484
# before 3.7
8585
# - { target: ubuntu-latest, config: libressl-3.2.6 }
8686
# - { target: ubuntu-latest, config: libressl-3.3.6 }

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ Makefile
22
buildpkg.sh
33
config.h
44
config.h.in~
5+
config.h.in
6+
aclocal.m4
57
config.log
68
config.status
79
openbsd-compat/Makefile

HPN-README

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
11
Notes:
22

3+
FIPS Mode and Parallel Ciphers in 18.7.1
4+
Using HPN-SSH in operating systems working in FIPS mode (e.g. RHEL with
5+
FIPS enabled) preclude the use of parallel ciphers. This is because
6+
the parallel AES-CTR implementation is not FIPS certified and will cause FIPS
7+
to exit with an error when loaded. In the case of the parallel ChaCha20 cipher
8+
the algorithm itself has not been FIPS certified and no implementation of
9+
ChaCha20 should be allowed in FIPS mode. We suggest the use of the AES-GCM
10+
cipher when operating under FIPS mode for optimal performance.
11+
12+
Happy Eyeballs Support in 18.7.1
13+
Happy Eyeballs (RFC 8305) is for use on dual stack systems meaning that they have both
14+
IPv4 and IPv6 TCP stacks. When enabled this option will try to connect to the
15+
target over both IPv4 and IPv6 with preference given to IPv6. The first connection
16+
that completes successfully will be used. Any outstanding connection attempts will
17+
be closed. As of version 18.7.1 this option should be considered somewhat experimental.
18+
19+
usage:
20+
-oHappyEyes=[Yes|No] will enable Happy Eyeballs. The default is no.
21+
-oHappyDelay=[N] where N is a positive integer expressed in milliseconds.
22+
The default value of 250ms is suggested by RFC 8305.
323

424
MPTCP Support in 18.7.0:
525
Multipath TCP is now available as a runtime option for HPN-SSH. MPTCP
626
is available only on Linux and Mac OSX operating systems. Using MPTCP on a system that
727
doesn't support it will result in a notice and failure. The use cases for MPTCP include
828
seamless handovers when changing networks and aggregating multiple interfaces to improve
9-
available bandwidth. As of 18.7.0 this options should be considered somewhat experimental.
29+
available bandwidth. As of 18.7.0 this option should be considered somewhat experimental.
1030

1131
Usage:
1232
-oUseMPTCP=[Yes|No] will enable MPTCP. The default is no.
@@ -79,7 +99,6 @@ the source only send the necessary bytes to complete the transfer. If the hashes
7999
the entire file is resent. If the target file is larger then the source file then the entire
80100
source file is sent and any existing target file is overwritten.
81101

82-
83102
MULTI-THREADED AES CIPHER:
84103
The AES cipher in CTR mode has been multithreaded (MTR-AES-CTR). This will allow ssh installations
85104
on hosts with multiple cores to use more than one processing core during encryption.
@@ -178,4 +197,4 @@ Sponsors: Thanks to Niklas Hambuchen for being the first sponsor of HPN-SSH
178197
via github's sponsor program!
179198

180199

181-
Edited: October 11, 2023
200+
Edited: September 19, 2025

Makefile.in

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ MKDIR_P=@MKDIR_P@
7474

7575
.SUFFIXES: .lo
7676

77-
TARGETS=hpnssh$(EXEEXT) hpnsshd$(EXEEXT) hpnsshd-session$(EXEEXT) hpnsshd-auth$(EXEXT) hpnssh-add$(EXEEXT) hpnssh-keygen$(EXEEXT) hpnssh-keyscan${EXEEXT} hpnssh-keysign${EXEEXT} hpnssh-pkcs11-helper$(EXEEXT) hpnssh-agent$(EXEEXT) hpnscp$(EXEEXT) hpnsftp-server$(EXEEXT) hpnsftp$(EXEEXT) hpnssh-sk-helper$(EXEEXT)
77+
TARGETS=hpnssh$(EXEEXT) hpnsshd$(EXEEXT) hpnsshd-session$(EXEEXT) hpnsshd-auth$(EXEEXT) hpnssh-add$(EXEEXT) hpnssh-keygen$(EXEEXT) hpnssh-keyscan${EXEEXT} hpnssh-keysign${EXEEXT} hpnssh-pkcs11-helper$(EXEEXT) hpnssh-agent$(EXEEXT) hpnscp$(EXEEXT) hpnsftp-server$(EXEEXT) hpnsftp$(EXEEXT) hpnssh-sk-helper$(EXEEXT)
7878

7979
XMSS_OBJS=\
8080
ssh-xmss.o \
@@ -118,7 +118,8 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
118118
kexsntrup761x25519.o kexmlkem768x25519.o sntrup761.o kexgen.o \
119119
sftp-realpath.o platform-pledge.o platform-tracing.o platform-misc.o \
120120
sshbuf-io.o metrics.o binn.o cipher-ctr-mt-provider.o \
121-
cipher-ctr-mt-functions.o ossl3-provider-err.o num.o
121+
cipher-ctr-mt-functions.o ossl3-provider-err.o num.o \
122+
happyeyeballs.o
122123

123124
SKOBJS= ssh-sk-client.o
124125

aclocal.m4

Lines changed: 0 additions & 15 deletions
This file was deleted.

cipher-ctr-mt-functions.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -619,11 +619,15 @@ int aes_mt_do_cipher(void *vevp_ctx,
619619
/* } else */
620620
#endif
621621
/* 64 bits */
622-
if ((align & 0x7) == 0) {
623-
destp.u64[0] = srcp.u64[0] ^ bufp.u64[0];
624-
destp.u64[1] = srcp.u64[1] ^ bufp.u64[1];
625-
/* 32 bits */
626-
} else if ((align & 0x3) == 0) {
622+
/* this is causing undefined behaviour in sanitizers
623+
* this is annoying because it's more efficient
624+
* but UB is not something I want to retain */
625+
/* if ((align & 0x7) == 0) { */
626+
/* destp.u64[0] = srcp.u64[0] ^ bufp.u64[0]; */
627+
/* destp.u64[1] = srcp.u64[1] ^ bufp.u64[1]; */
628+
/* /\* 32 bits *\/ */
629+
/* } else */
630+
if ((align & 0x3) == 0) {
627631
destp.u32[0] = srcp.u32[0] ^ bufp.u32[0];
628632
destp.u32[1] = srcp.u32[1] ^ bufp.u32[1];
629633
destp.u32[2] = srcp.u32[2] ^ bufp.u32[2];

cipher-ctr-mt.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -471,12 +471,16 @@ ssh_aes_ctr(EVP_CIPHER_CTX *ctx, u_char *dest, const u_char *src,
471471
/* destp.u128[0] = srcp.u128[0] ^ bufp.u128[0]; */
472472
/* } else */
473473
#endif
474+
/* this is causing undefined behaviour in sanitizers
475+
* this is annoying because it's more efficient
476+
* but UB is not something I want to retain */
474477
/* 64 bits */
475-
if ((align & 0x7) == 0) {
476-
destp.u64[0] = srcp.u64[0] ^ bufp.u64[0];
477-
destp.u64[1] = srcp.u64[1] ^ bufp.u64[1];
478-
/* 32 bits */
479-
} else if ((align & 0x3) == 0) {
478+
/* if ((align & 0x7) == 0) { */
479+
/* destp.u64[0] = srcp.u64[0] ^ bufp.u64[0]; */
480+
/* destp.u64[1] = srcp.u64[1] ^ bufp.u64[1]; */
481+
/* /\* 32 bits *\/ */
482+
/* } else */
483+
if ((align & 0x3) == 0) {
480484
destp.u32[0] = srcp.u32[0] ^ bufp.u32[0];
481485
destp.u32[1] = srcp.u32[1] ^ bufp.u32[1];
482486
destp.u32[2] = srcp.u32[2] ^ bufp.u32[2];

0 commit comments

Comments
 (0)