The kernel crypto API already provides ARIA implementations, but XFRM
does not have algorithm descriptors for them. Consequently, ARIA cannot
be selected for ESP through XFRM.
Add XFRM algorithm descriptors for CBC and RFC3686 CTR modes using the
existing cbc(aria) and rfc3686(ctr(aria)) crypto algorithms.
The CBC and CTR modes have been tested with IPsec using strongSwan.
Signed-off-by: Hong In-su <redacted>
---
Changes in v2:
- Drop the duplicate "aria" compatibility alias from the CTR entry.
- Use a 128-bit default key size for CBC.
- Document that the CTR default key size includes the 32-bit nonce.
v1: https://lore.kernel.org/netdev/20260909054530.7861-1-his1415@pribit.com/ (local)
net/xfrm/xfrm_algo.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c
index 70434495f23f..7ed84220ad5d 100644
--- a/net/xfrm/xfrm_algo.c
+++ b/net/xfrm/xfrm_algo.c
@@ -512,6 +512,33 @@ static struct xfrm_algo_desc ealg_list[] = {
.sadb_alg_maxbits = 256
}
},
+{
+ .name = "cbc(aria)",
+ .compat = "aria",
+
+ .uinfo = {
+ .encr = {
+ .geniv = "echainiv",
+ .blockbits = 128,
+ .defkeybits = 128,
+ }
+ },
+
+ .pfkey_supported = 0,
+},
+{
+ .name = "rfc3686(ctr(aria))",
+
+ .uinfo = {
+ .encr = {
+ .geniv = "seqiv",
+ .blockbits = 128,
+ .defkeybits = 160, /* 128-bit key + 32-bit nonce */
+ }
+ },
+
+ .pfkey_supported = 0,
+},
{
.name = "cbc(twofish)",
.compat = "twofish",--
2.43.0