From ab2f706b4605d14f8a982ec6a61c7535d1725c40 Mon Sep 17 00:00:00 2001 From: Thomas Speer Date: Sun, 24 Aug 2025 18:23:56 +0200 Subject: [PATCH] OCPP: Handle security events silently (#23199) --- charger/ocpp/cs_core.go | 20 ++++++++++++++++++++ charger/ocpp/instance.go | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/charger/ocpp/cs_core.go b/charger/ocpp/cs_core.go index d56e7e325..953a40f35 100644 --- a/charger/ocpp/cs_core.go +++ b/charger/ocpp/cs_core.go @@ -2,6 +2,7 @@ package ocpp import ( "github.com/lorenzodonini/ocpp-go/ocpp1.6/core" + "github.com/lorenzodonini/ocpp-go/ocpp1.6/security" "github.com/lorenzodonini/ocpp-go/ocpp1.6/types" ) @@ -105,3 +106,22 @@ func (cs *CS) OnStopTransaction(id string, request *core.StopTransactionRequest) return res, nil } + +func (cs *CS) OnSecurityEventNotification(id string, request *security.SecurityEventNotificationRequest) (*security.SecurityEventNotificationResponse, error) { + // Acknowledge any security event + return &security.SecurityEventNotificationResponse{}, nil +} + +func (cs *CS) OnSignCertificate(id string, request *security.SignCertificateRequest) (*security.SignCertificateResponse, error) { + // Reject any certificate signing request + return &security.SignCertificateResponse{ + Status: types.GenericStatusRejected, + }, nil +} + +func (cs *CS) OnCertificateSigned(id string, request *security.CertificateSignedRequest) (*security.CertificateSignedResponse, error) { + // Acknowledge any certificate + return &security.CertificateSignedResponse{ + Status: security.CertificateSignedStatusAccepted, + }, nil +} diff --git a/charger/ocpp/instance.go b/charger/ocpp/instance.go index 9fec88103..6cc3a2aff 100644 --- a/charger/ocpp/instance.go +++ b/charger/ocpp/instance.go @@ -10,6 +10,7 @@ import ( ocpp16 "github.com/lorenzodonini/ocpp-go/ocpp1.6" "github.com/lorenzodonini/ocpp-go/ocpp1.6/core" "github.com/lorenzodonini/ocpp-go/ocpp1.6/remotetrigger" + "github.com/lorenzodonini/ocpp-go/ocpp1.6/security" "github.com/lorenzodonini/ocpp-go/ocpp1.6/smartcharging" "github.com/lorenzodonini/ocpp-go/ocppj" "github.com/lorenzodonini/ocpp-go/ws" @@ -30,7 +31,7 @@ func Instance() *CS { dispatcher := ocppj.NewDefaultServerDispatcher(ocppj.NewFIFOQueueMap(0)) dispatcher.SetTimeout(Timeout) - endpoint := ocppj.NewServer(server, dispatcher, nil, core.Profile, remotetrigger.Profile, smartcharging.Profile) + endpoint := ocppj.NewServer(server, dispatcher, nil, core.Profile, remotetrigger.Profile, smartcharging.Profile, security.Profile) endpoint.SetInvalidMessageHook(func(client ws.Channel, err *ocpp.Error, rawMessage string, parsedFields []interface{}) *ocpp.Error { log.ERROR.Printf("%v (%s)", err, rawMessage) return nil @@ -49,6 +50,7 @@ func Instance() *CS { ocppj.SetLogger(instance) cs.SetCoreHandler(instance) + cs.SetSecurityHandler(instance) cs.SetNewChargePointHandler(instance.NewChargePoint) cs.SetChargePointDisconnectedHandler(instance.ChargePointDisconnected)