freebsd-dev/sys
John Baldwin a8280123e4 KTLS: Add a new recrypt operation to the software backend.
When using NIC TLS RX, packets that are dropped and retransmitted are
not decrypted by the NIC but are passed along as-is.  As a result, a
received TLS record might contain a mix of encrypted and decrypted
data.  If this occurs, the already-decrypted data needs to be
re-encrypted so that the resulting record can then be decrypted
normally.

Add support for this for sessions using AES-GCM with TLS 1.2 or TLS
1.3.  For the recrypt operation, allocate a temporary buffer and
encrypt the the payload portion of the TLS record with AES-CTR with an
initial IV constructed from the AES-GCM nonce.  Then fixup the
original mbuf chain by copying the results from the temporary buffer
back into the original mbufs for any mbufs containing decrypted data.

Once it has been recrypted, the mbuf chain can then be decrypted via
the normal software decryption path.

Co-authored by:	Hans Petter Selasky <hselasky@FreeBSD.org>
Reviewed by:	hselasky
Sponsored by:	Netflix
Differential Revision:	https://reviews.freebsd.org/D35012
2022-04-22 15:52:50 -07:00
..
amd64 amd64 NOTES: Add entries for qlxgb, glxgbe, and glxge. 2022-04-22 15:18:06 -07:00
arm busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
arm64 busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
bsm
cam iscsi: Fetch limits based on a socket rather than assuming global limits. 2022-04-18 12:53:28 -07:00
cddl zfs: merge openzfs/zfs@a86e08941 (master) into main 2022-03-08 18:53:02 +01:00
compat linux: plug a set-but-not-used var 2022-04-19 12:45:57 +00:00
conf FB_INSTALL_CDEV: Remove this option and related code. 2022-04-21 10:29:14 -07:00
contrib acpica: Drop a local patch in favor of an upstream patch 2022-04-15 16:29:09 -04:00
crypto ccp: Use devclass_find to lookup devclass in db_show_ccp. 2022-04-21 10:29:14 -07:00
ddb
dev qlxgb/qlxgbe/qlxge: Fix build without INET and/or without INET6. 2022-04-22 15:18:05 -07:00
dts
fs ext2: plug a set-but-not-used var 2022-04-19 12:45:57 +00:00
gdb
geom geli: Add a chicken switch for unmapped I/O 2022-04-18 17:55:24 -04:00
gnu
i386 FB_INSTALL_CDEV: Remove this option and related code. 2022-04-21 10:29:14 -07:00
isa vgapm: Use devclass_find to lookup the vga devclass in suspend and resume. 2022-04-21 10:29:15 -07:00
kern KTLS: Move OCF function pointers out of ktls_session. 2022-04-22 15:52:12 -07:00
kgssapi kgssapi krb5: Remove unused variables. 2022-04-06 16:45:29 -07:00
libkern libkern: Fix two typos in source code comments 2022-04-09 09:36:34 +02:00
modules mac_pimd: Support for privilege drop in pimd 2022-04-20 08:07:37 +02:00
net pf: Add per-rule timestamps for rule and eth_rule 2022-04-22 19:53:20 +02:00
net80211 net80211: Fix traffic hang on STA/AP VAPs on a multi-VAP interface 2022-04-21 22:49:01 -07:00
netgraph ng_netflow: Move various variables under INET || INET6. 2022-04-13 16:08:21 -07:00
netinet sctp: cleanup 2022-04-19 21:40:22 +02:00
netinet6 udp6: allow udp_tun_func_t() to indicate it did not eat the packet 2022-04-22 16:55:23 +02:00
netipsec ipsec_encap: setdf is only used for INET. 2022-04-13 16:08:21 -07:00
netpfil pf: Add per-rule timestamps for rule and eth_rule 2022-04-22 19:53:20 +02:00
netsmb smb_smb_treedisconnect: eliminate write only variable mbp 2022-04-04 22:30:57 -06:00
nfs nfs: do not panic on bootpc_init when no interfaces are found 2022-04-07 19:33:26 -03:00
nfsclient
nfsserver
nlm
ofed ofed: Fix a typo in a source code comment 2022-04-09 14:39:36 +02:00
opencrypto KTLS: Add a new recrypt operation to the software backend. 2022-04-22 15:52:50 -07:00
powerpc powerpc: add GENERIC64LE-NODEBUG config and improve GENERIC64-NODEBUG 2022-04-22 01:06:13 +02:00
riscv busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
rpc svc_vc_rendezvous_stat: eliminiate write only variable stat 2022-04-04 22:31:04 -06:00
security mac_pimd: Support for privilege drop in pimd 2022-04-20 08:07:37 +02:00
sys KTLS: Move OCF function pointers out of ktls_session. 2022-04-22 15:52:12 -07:00
teken teken: color #3 is yellow not brown - use TC_YELLOW as the name 2022-03-12 09:17:29 -05:00
tests
tools syscallarg_t: Add a type for system call arguments 2022-03-28 19:43:03 +01:00
ufs ffs: plug a set-but-not-used var 2022-04-19 16:51:12 +02:00
vm vm_phys_init: Quiet unused but set warnings about npages. 2022-04-18 12:06:14 -07:00
x86 busdma_bounce: Add free_bounce_pages helper function. 2022-04-21 10:42:14 -07:00
xdr
xen xen: Use __diagused for a variable only used in KASSERT(). 2022-04-13 16:08:20 -07:00
Makefile