From 4650eb272aef22e28c3bc7a62437d04e0f01a33a Mon Sep 17 00:00:00 2001 From: whyseu <35478590+whyseu@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:08:28 +0800 Subject: [PATCH] Potential fix for code scanning alert no. 55: Hard-coded cryptographic value Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- rust/src/direct_e2ee/x3dh.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rust/src/direct_e2ee/x3dh.rs b/rust/src/direct_e2ee/x3dh.rs index 5d5ccf3..7bb2fea 100644 --- a/rust/src/direct_e2ee/x3dh.rs +++ b/rust/src/direct_e2ee/x3dh.rs @@ -101,7 +101,14 @@ fn derive_initial_material(chunks: &[&[u8]]) -> Result>(); - let prk = hkdf_extract(&[0u8; 32], &ikm); + + let mut salt = [0u8; 32]; + if let Some(first_chunk) = chunks.first() { + let copy_len = core::cmp::min(first_chunk.len(), salt.len()); + salt[..copy_len].copy_from_slice(&first_chunk[..copy_len]); + } + + let prk = hkdf_extract(&salt, &ikm); let initial_secret: [u8; 32] = hkdf_expand_prk(&prk, b"ANP Direct E2EE v1 Initial Secret", 32)? .try_into() .map_err(|_| DirectE2eeError::crypto("invalid initial secret length"))?;