Loading src/ssl.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -2832,9 +2832,24 @@ void netplus::ssl::_queueClientHello(){ auto add_key_share_p256 = [&](){ _client_offered_tls13 = true; // generate ephemeral priv scalar (32 bytes big-endian) // generate valid ephemeral priv scalar: 0 < k < n for (;;) { fillRandomBytes(_client_priv_ecdhe, 32); // check not all zeros bool allZero = true; for (int i = 0; i < 32; i++) { if (_client_priv_ecdhe[i]) { allZero = false; break; } } if (allZero) continue; // check k < n (P-256 curve order) u256 k = bytes_be_to_u256(_client_priv_ecdhe); if (u256_cmp(k, P256_N) >= 0) continue; break; // valid scalar } // compute pub = priv * G netplus::P256Point pub = netplus::scalar_mul_G(_client_priv_ecdhe); Loading Loading
src/ssl.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -2832,9 +2832,24 @@ void netplus::ssl::_queueClientHello(){ auto add_key_share_p256 = [&](){ _client_offered_tls13 = true; // generate ephemeral priv scalar (32 bytes big-endian) // generate valid ephemeral priv scalar: 0 < k < n for (;;) { fillRandomBytes(_client_priv_ecdhe, 32); // check not all zeros bool allZero = true; for (int i = 0; i < 32; i++) { if (_client_priv_ecdhe[i]) { allZero = false; break; } } if (allZero) continue; // check k < n (P-256 curve order) u256 k = bytes_be_to_u256(_client_priv_ecdhe); if (u256_cmp(k, P256_N) >= 0) continue; break; // valid scalar } // compute pub = priv * G netplus::P256Point pub = netplus::scalar_mul_G(_client_priv_ecdhe); Loading