AbstractHafasClientInterfaceProvider: Migrate requestChecksumSalt and requestMicMacSalt to byte arrays, to make them independent of base-encoding.

This commit is contained in:
Andreas Schildbach 2018-11-12 14:34:35 +01:00
parent 2843b9f33d
commit e88a4983e6

View file

@ -87,9 +87,9 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
@Nullable @Nullable
public String apiClient; public String apiClient;
@Nullable @Nullable
public String requestChecksumSalt; public byte[] requestChecksumSalt;
@Nullable @Nullable
public String requestMicMacSalt; public byte[] requestMicMacSalt;
private static final String SERVER_PRODUCT = "hci"; private static final String SERVER_PRODUCT = "hci";
private static final HashFunction MD5 = Hashing.md5(); private static final HashFunction MD5 = Hashing.md5();
@ -117,12 +117,12 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
return this; return this;
} }
protected AbstractHafasClientInterfaceProvider setRequestChecksumSalt(final String requestChecksumSalt) { protected AbstractHafasClientInterfaceProvider setRequestChecksumSalt(final byte[] requestChecksumSalt) {
this.requestChecksumSalt = requestChecksumSalt; this.requestChecksumSalt = requestChecksumSalt;
return this; return this;
} }
protected AbstractHafasClientInterfaceProvider setRequestMicMacSalt(final String requestMicMacSalt) { protected AbstractHafasClientInterfaceProvider setRequestMicMacSalt(final byte[] requestMicMacSalt) {
this.requestMicMacSalt = requestMicMacSalt; this.requestMicMacSalt = requestMicMacSalt;
return this; return this;
} }
@ -660,15 +660,15 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
private HttpUrl requestUrl(final String body) { private HttpUrl requestUrl(final String body) {
final HttpUrl.Builder url = checkNotNull(mgateEndpoint).newBuilder(); final HttpUrl.Builder url = checkNotNull(mgateEndpoint).newBuilder();
if (requestChecksumSalt != null) { if (requestChecksumSalt != null) {
final HashCode checksum = MD5.newHasher().putString(body, Charsets.UTF_8) final HashCode checksum = MD5.newHasher().putString(body, Charsets.UTF_8).putBytes(requestChecksumSalt)
.putString(requestChecksumSalt, Charsets.UTF_8).hash(); .hash();
url.addQueryParameter("checksum", checksum.toString()); url.addQueryParameter("checksum", checksum.toString());
} }
if (requestMicMacSalt != null) { if (requestMicMacSalt != null) {
final HashCode mic = MD5.newHasher().putString(body, Charsets.UTF_8).hash(); final HashCode mic = MD5.newHasher().putString(body, Charsets.UTF_8).hash();
url.addQueryParameter("mic", HEX.encode(mic.asBytes())); url.addQueryParameter("mic", HEX.encode(mic.asBytes()));
final HashCode mac = MD5.newHasher().putString(HEX.encode(mic.asBytes()), Charsets.UTF_8) final HashCode mac = MD5.newHasher().putString(HEX.encode(mic.asBytes()), Charsets.UTF_8)
.putBytes(HEX.decode(requestMicMacSalt)).hash(); .putBytes(requestMicMacSalt).hash();
url.addQueryParameter("mac", HEX.encode(mac.asBytes())); url.addQueryParameter("mac", HEX.encode(mac.asBytes()));
} }
return url.build(); return url.build();