The salt for AES-CBC and 3DES-CBC was generated with rte_rand(). Unlike the other cipher cases, where the salt comes from the key material supplied by the application, this value is generated internally and ends up in the IPsec transform.
rte_rand() is a fast pseudo-random generator whose state can be recovered from a few outputs, so use rte_random_bytes() instead. Signed-off-by: Stephen Hemminger <[email protected]> --- lib/pipeline/rte_swx_ipsec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pipeline/rte_swx_ipsec.c b/lib/pipeline/rte_swx_ipsec.c index 553056fad2..9959009aab 100644 --- a/lib/pipeline/rte_swx_ipsec.c +++ b/lib/pipeline/rte_swx_ipsec.c @@ -1460,7 +1460,8 @@ crypto_xform_get(struct rte_swx_ipsec_sa_params *p, switch (p->crypto.cipher_auth.cipher.alg) { case RTE_CRYPTO_CIPHER_AES_CBC: case RTE_CRYPTO_CIPHER_3DES_CBC: - salt = rte_rand(); + if (rte_random_bytes(&salt, sizeof(salt)) != 0) + return NULL; break; case RTE_CRYPTO_CIPHER_AES_CTR: -- 2.53.0

