Skip to content

Commit d257963

Browse files
authored
fix/binary to hex (#19)
1 parent fb3edac commit d257963

3 files changed

Lines changed: 10 additions & 25 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<bcpkix.version>1.68</bcpkix.version>
3939
<okhttp.version>4.9.1</okhttp.version>
4040
<shedlock.version>4.23.0</shedlock.version>
41-
<dgc.lib.version>1.1.1</dgc.lib.version>
41+
<dgc.lib.version>1.1.2</dgc.lib.version>
4242
<!-- plugins -->
4343
<plugin.checkstyle.version>3.1.2</plugin.checkstyle.version>
4444
<plugin.sonar.version>3.6.1.1688</plugin.sonar.version>

src/main/java/eu/europa/ec/dgc/businessrule/service/GatewayDataDownloadBtpServiceImpl.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import com.fasterxml.jackson.databind.JsonNode;
55
import com.google.gson.FieldNamingPolicy;
6-
import com.google.gson.FieldNamingStrategy;
76
import com.google.gson.Gson;
87
import com.google.gson.GsonBuilder;
98
import com.google.gson.JsonSyntaxException;
@@ -21,15 +20,13 @@
2120
import eu.europa.ec.dgc.gateway.connector.dto.ValidationRuleDto;
2221
import eu.europa.ec.dgc.gateway.connector.model.ValidationRule;
2322
import eu.europa.ec.dgc.signing.SignedStringMessageParser;
23+
import eu.europa.ec.dgc.utils.CertificateUtils;
2424
import java.io.IOException;
25-
import java.math.BigInteger;
26-
import java.security.MessageDigest;
2725
import java.security.NoSuchAlgorithmException;
2826
import java.time.ZonedDateTime;
2927
import java.util.ArrayList;
3028
import java.util.Arrays;
3129
import java.util.Base64;
32-
import java.util.Collection;
3330
import java.util.HashMap;
3431
import java.util.List;
3532
import java.util.Map;
@@ -65,6 +62,7 @@ public class GatewayDataDownloadBtpServiceImpl implements GatewayDataDownloadSer
6562
private final BusinessRuleService businessRuleService;
6663
private final ValueSetService valueSetService;
6764
private final CountryListService countryListService;
65+
private final CertificateUtils certificateUtils;
6866

6967
@Override
7068
@Scheduled(fixedDelayString = "${dgc.businessRulesDownload.timeInterval}")
@@ -267,12 +265,7 @@ private boolean checkThumbprintIntegrity(TrustListItemDto trustListItem) {
267265
private String getCertThumbprint(X509CertificateHolder x509CertificateHolder) {
268266
try {
269267
byte[] data = x509CertificateHolder.getEncoded();
270-
byte[] certHashBytes = MessageDigest.getInstance("SHA-256").digest(data);
271-
String hexString = (new BigInteger(1, certHashBytes)).toString(16);
272-
if (hexString.length() == 63) {
273-
hexString = "0" + hexString;
274-
}
275-
return hexString;
268+
return certificateUtils.calculateHash(data);
276269
} catch (NoSuchAlgorithmException | IOException e) {
277270
log.error("Could not calculate thumbprint of certificate '{}': {}.",
278271
x509CertificateHolder.getSubject(), e.getMessage());

src/main/java/eu/europa/ec/dgc/businessrule/utils/BusinessRulesUtils.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,27 @@
2020

2121
package eu.europa.ec.dgc.businessrule.utils;
2222

23+
import eu.europa.ec.dgc.utils.CertificateUtils;
2324
import java.math.BigInteger;
2425
import java.nio.charset.StandardCharsets;
2526
import java.security.MessageDigest;
2627
import java.security.NoSuchAlgorithmException;
28+
import lombok.RequiredArgsConstructor;
2729
import lombok.extern.slf4j.Slf4j;
30+
import org.bouncycastle.util.encoders.Hex;
2831
import org.springframework.stereotype.Service;
2932

3033
@Slf4j
3134
@Service
35+
@RequiredArgsConstructor
3236
public class BusinessRulesUtils {
37+
private final CertificateUtils certificateUtils;
3338

3439
/**
3540
* returns SHA-256 Thumbprint of the data (hex encoded).
3641
*/
3742
public String calculateHash(String data) throws NoSuchAlgorithmException {
38-
return calculateHash(data.getBytes(StandardCharsets.UTF_8));
43+
return certificateUtils.calculateHash(data.getBytes(StandardCharsets.UTF_8));
3944
}
4045

41-
/**
42-
* returns SHA-256 Thumbprint of the data (hex encoded).
43-
*/
44-
public String calculateHash(byte[] data) throws NoSuchAlgorithmException {
45-
byte[] certHashBytes = MessageDigest.getInstance("SHA-256").digest(data);
46-
String hexString = new BigInteger(1, certHashBytes).toString(16);
47-
48-
if (hexString.length() == 63) {
49-
hexString = "0" + hexString;
50-
}
51-
52-
return hexString;
53-
}
5446
}

0 commit comments

Comments
 (0)