Comments (12)
@xBlaz3kx thanks a lot for opening the PR. I'll have a detailed look in the next few days.
Regarding the structure, since the security extension is backported from v2, it's technically up to us where we want to put it.
If we go by the book, the features should be structured like:
security
SecurityEventNotification
SignCertificate
CertificateSigned
iso15811
GetInstalledCertificateIds
DeleteCertificate
InstallCertificate
diagnostics
GetLog
LogStatusNotification
firmware
SignedUpdateFirmware
SignedFirmwareStatusNotification
remotecontrol
ExtendedTriggerMessage
(this is a special kid, since it's technically just theTriggerMessage
feature from v2, but since v1.6 already has it, they had to name this one differently)
Just FYI the structuring is derived from the functional blocks as presented in the 2.0.1 specs, which are identified by letters A - P
.
If we follow this split I would recommend leveraging at least the existing firmware
package in v1.6. Alternatively we can just group all of these features in a dedicated security-extension
package. I guess as a developer I would prefer the latter, but happy to take what exists already.
Your point about the SupportedFeatures
not being mentioned is valid and I agree with your current approach to stay on the safe side. We could dare adding the Security
profile to the list, as it should be straightforward to understand.
from ocpp-go.
We had the same issue with ABB, so we modified the library to support OCPP 1.6j security extension, but it does not include unit tests. We tested it in production and so far, it worked fine (https://github.com/GLCharge/ocpp-go)
from ocpp-go.
@xBlaz3kx would you like creating a PR for the security extension? It's been on my ToDo list but didn't get to it yet. Happy to include it and then write some tests for it.
from ocpp-go.
@lorenzodonini Sure, I can do that.
The only thing I'm a bit unsure of is the way I implemented/added additional handlers for incoming messages, specified in the extension.
The extension's specification doesn't really mention if the functionalities should be split into different profiles (like in the original specification), nor does it specify any additional SupportedFeatures
variable (as far as I understood the specification), that would indicate support for the security extension.
So I did this:
// OCPP 1.6j Security extension
chargePoint.SetCertificateHandler(handler)
chargePoint.SetLogHandler(handler)
chargePoint.SetSecureFirmwareHandler(handler)
chargePoint.SetExtendedTriggerMessageHandler(handler)
chargePoint.SetSecurityHandler(handler)
I'd like to hear your thoughts regarding the implementation approach.
from ocpp-go.
@lorenzodonini Of course, no problem. I'll have to fix a couple of details (I've renamed the module because we're using it in our product) before it can be merged.
Regarding the structure - it is essentially what I've done, with minor naming differences, so I think we are mostly aligned. Take a look when you can, and let me know if I should fix anything 😄
from ocpp-go.
Related Issues (20)
- Race condition in chargePoint.Start() HOT 4
- Race in library and tests HOT 1
- Unhandled json errors in GetConfiguration HOT 3
- Parsing of local timestamps not supported - spec violation? HOT 9
- Central-system 1.6 example - "fatal error: concurrent map writes" when connecting multiple chargers rapidly HOT 1
- Code Generation HOT 1
- TriggerMessage.Req validation disallows passing connector 0 HOT 6
- ChangeConfigurationRequest doesn't allow empty values
- Bad Request response for https via curl request HOT 1
- Release new version? HOT 2
- Fix vet report HOT 2
- Issue with DataTransfer on both ocpp 1.6 and 2.0.1 HOT 2
- Send Command To Charging Station
- I call remote start transaction but got error "ocpp message (2193907606): InternalError - An internal error occurred and the receiver was not able to process the requested Action successfully" HOT 1
- Decouple websocket server and message processing HOT 7
- Parses an OCPP-J message,Occurrence anomaly HOT 4
- Is their any way to bypass the SubjectAlternateName check while using tls? HOT 1
- Fetch chargePointId inside SetBasichandler HOT 6
- Fetch raw ocpp message HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ocpp-go.