aboutsummaryrefslogtreecommitdiff
path: root/sys/opencrypto/cryptodev.h
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2021-10-06 21:08:47 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2021-10-06 21:08:47 +0000
commitae18720d2792287c9ec658404f1a3173014d4979 (patch)
treeda65ec60155a00af807ef15a57f5ab24166a9397 /sys/opencrypto/cryptodev.h
parentbcb0fd6accc095295765b08b02f5f3b07ea62536 (diff)
downloadsrc-ae18720d2792287c9ec658404f1a3173014d4979.tar.gz
src-ae18720d2792287c9ec658404f1a3173014d4979.zip
Diffstat (limited to 'sys/opencrypto/cryptodev.h')
-rw-r--r--sys/opencrypto/cryptodev.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h
index b3c79a48f632..6611a8925020 100644
--- a/sys/opencrypto/cryptodev.h
+++ b/sys/opencrypto/cryptodev.h
@@ -686,5 +686,34 @@ crypto_read_iv(struct cryptop *crp, void *iv)
crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen, iv);
}
+static __inline size_t
+ccm_max_payload_length(const struct crypto_session_params *csp)
+{
+ /* RFC 3160 */
+ const u_int L = 15 - csp->csp_ivlen;
+
+ switch (L) {
+ case 2:
+ return (0xffff);
+ case 3:
+ return (0xffffff);
+#ifdef __LP64__
+ case 4:
+ return (0xffffffff);
+ case 5:
+ return (0xffffffffff);
+ case 6:
+ return (0xffffffffffff);
+ case 7:
+ return (0xffffffffffffff);
+ default:
+ return (0xffffffffffffffff);
+#else
+ default:
+ return (0xffffffff);
+#endif
+ }
+}
+
#endif /* _KERNEL */
#endif /* _CRYPTO_CRYPTO_H_ */