Add support for non-printable HTTP passwords #143
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The OCPP 1.6 Security Whitepaper foresees that the AuthorizationKey,
which is a hexadecimal string representation of the HTTP Basic
Authentication password to be used, may use the full byte range, i.e.
including non-printable characters. Thus, passing it as a Java String
object is not suitable.
In contrast, OCPP 2.0.1 specifies the password as being a string of
printable UTF-8 characters. The library already supports that.
To accomodate both, take advantage of the fact that JSONConfiguration
treats all parameters as Objects, so either a String or a byte array can
be set.
Change the code adding the credentials to the HTTP header to correctly
generate the Base64 encoded credentials from either a password string or
a byte array, depending on the object type that was set as the password.