From 09350d7b1c6db25d72dd9d970abd18d9906bb92a Mon Sep 17 00:00:00 2001 From: Maaike Zijderveld Date: Mon, 3 Feb 2025 17:16:33 +0100 Subject: [PATCH] Fix bug where retry of certificate signing is too fast (#970) * Fix bug where retry of certificate signing should be at least 250 seconds but was 250 milliseconds. * Set CertSigningWaitMinimum to a value of 30. Signed-off-by: Maaike Zijderveld, iolar --- .../v201/component_config/standardized/SecurityCtrlr.json | 2 +- lib/ocpp/v201/functional_blocks/security.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/v201/component_config/standardized/SecurityCtrlr.json b/config/v201/component_config/standardized/SecurityCtrlr.json index ab13d92f4..9e168ad99 100644 --- a/config/v201/component_config/standardized/SecurityCtrlr.json +++ b/config/v201/component_config/standardized/SecurityCtrlr.json @@ -101,7 +101,7 @@ { "type": "Actual", "mutability": "ReadWrite", - "value": 0 + "value": 30 } ], "description": "Seconds to wait before generating another CSR in case CSMS does not return a signed certificate.", diff --git a/lib/ocpp/v201/functional_blocks/security.cpp b/lib/ocpp/v201/functional_blocks/security.cpp index 215d2d6ed..84f95fd4a 100644 --- a/lib/ocpp/v201/functional_blocks/security.cpp +++ b/lib/ocpp/v201/functional_blocks/security.cpp @@ -234,8 +234,8 @@ void Security::handle_sign_certificate_response(CallResultawaited_certificate_signing_use_enum = std::nullopt; return; } - int retry_backoff_milliseconds = - std::max(minimum_cert_signing_wait_time_seconds, 1000 * cert_signing_wait_minimum.value()) * + int retry_backoff_seconds = + std::max(minimum_cert_signing_wait_time_seconds, cert_signing_wait_minimum.value()) * std::pow(2, this->csr_attempt); // prevent immediate repetition in case of value 0 this->certificate_signed_timer.timeout( [this]() { @@ -246,7 +246,7 @@ void Security::handle_sign_certificate_response(CallResultawaited_certificate_signing_use_enum.reset(); this->sign_certificate_req(current_awaited_certificate_signing_use_enum); }, - std::chrono::milliseconds(retry_backoff_milliseconds)); + std::chrono::seconds(retry_backoff_seconds)); } else { this->awaited_certificate_signing_use_enum = std::nullopt; this->csr_attempt = 1;