Skip to content
Snippets Groups Projects
Commit e621ce5b authored by Denis Sukhoroslov's avatar Denis Sukhoroslov
Browse files

VC resolution bug fix

parent fd909f81
Branches release/1.0.3
Tags 1.0.3
No related merge requests found
Pipeline #39370 passed
......@@ -415,7 +415,7 @@ public class DIDResolver implements HealthIndicator {
return JWSAlgorithm.ES256K;
}
public VCResolveResult resolveVC(String uri) {
public VCResolveResult resolveVC(String uri, String did) {
log.debug("resolveVC.enter; got uri: {}", uri);
JsonObject jsonVC = loadJsonDocument(uri);
VCResolveResult result = new VCResolveResult(false, null, null);
......@@ -428,7 +428,6 @@ public class DIDResolver implements HealthIndicator {
result.setHash((String) claims.get("hash"));
JsonObject vcJson = vc.toJsonObject();
String alg = getAlgFromProof(vcJson);
String did = vc.getLdProof().getVerificationMethod().toString();
result.setVerified(verifyVCSignature(JsonLDObject.fromJson(json), did, alg));
}
log.debug("resolveVC.exit; returning: {}", result);
......
......@@ -15,9 +15,6 @@ import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.europa.esig.trustedlist.jaxb.tsl.TrustStatusListType;
import eu.europa.esig.trustedlist.jaxb.tsl.TSPType;
import eu.europa.esig.trustedlist.jaxb.tsl.TrustServiceProviderListType;
import eu.xfsc.train.tcr.api.generated.model.Error;
import eu.xfsc.train.tcr.api.generated.model.ResolvedDid;
import eu.xfsc.train.tcr.api.generated.model.ResolvedDoc;
......@@ -30,7 +27,6 @@ import eu.xfsc.train.tcr.api.generated.model.ValidateResponse;
import eu.xfsc.train.tcr.server.generated.controller.TrustedContentResolverApiDelegate;
import eu.xfsc.train.tcr.server.service.DIDResolver.DCResolveResult;
import eu.xfsc.train.tcr.server.service.DIDResolver.DIDResolveResult;
import eu.xfsc.train.tcr.server.service.DIDResolver.TypedEndpoint;
import eu.xfsc.train.tcr.server.service.DIDResolver.VCResolveResult;
import eu.xfsc.train.tcr.server.service.TLResolver.TLResolveResult;
import eu.xfsc.train.tspa.model.trustlist.TrustServiceStatusList;
......@@ -88,7 +84,7 @@ public class ResolutionService implements TrustedContentResolverApiDelegate {
ResolvedDoc reDoc = new ResolvedDoc().document(didRes.getDocument()).didVerified(didVerified);
didRes.getEndpoints().forEach(endpoint -> {
try {
VCResolveResult vcRes = reDID.resolveVC(endpoint.getUrl());
VCResolveResult vcRes = reDID.resolveVC(endpoint.getUrl(), did);
ResolvedTrustList rtl = new ResolvedTrustList(endpoint.getUrl(), vcRes.getTrustListUri(), null, false);
TLResolveResult tlRes = reTL.resolveTLHash(vcRes.getTrustListUri(), true, vcRes.getHash());
// TL verified by hash
......@@ -137,7 +133,7 @@ public class ResolutionService implements TrustedContentResolverApiDelegate {
}
validateRequest.getEndpoints().forEach(endpoint -> {
try {
VCResolveResult vcRes = reDID.resolveVC(endpoint);
VCResolveResult vcRes = reDID.resolveVC(endpoint, validateRequest.getDid());
ResolvedTrustList rtl = new ResolvedTrustList(endpoint, vcRes.getTrustListUri(), null, false);
TLResolveResult tlRes = reTL.resolveTLHash(vcRes.getTrustListUri(), true, vcRes.getHash());
if (rtl != null) {
......@@ -160,13 +156,6 @@ public class ResolutionService implements TrustedContentResolverApiDelegate {
return trustList.getTrustServiceProviderList().getTrustServiceProvider().stream()
.filter(tsp -> tsp.getTSPServices().getTspService().stream().anyMatch(tsps -> tsps.getServiceTypeIdentifier().equals(issuer))).findFirst();
}
private Optional<TSPType> findIssuerProvider(TrustStatusListType trustList, String issuer) {
TrustServiceProviderListType list = trustList.getTrustServiceProviderList();
if (list == null) return Optional.empty();
return list.getTrustServiceProvider().stream()
.filter(tsp -> tsp.getTSPServices().getTSPService().stream().anyMatch(tsps -> tsps.getServiceInformation().getServiceTypeIdentifier().equals(issuer))).findFirst();
}
private Map<String, Object> convertToMap(Object value) {
try {
......
......@@ -188,7 +188,7 @@ public class DIDResolverTest {
ResolveRepresentationResult rrr = ResolveRepresentationResult.build(null, didDocEssif.getBytes(), null);
when(uniResolver.resolveRepresentation(eq(fhDidEssif), any())).thenReturn(rrr);
VCResolveResult vcRes = didResolver.resolveVC("https://essif.iao.fraunhofer.de/files/trustlist/federation1.test.train.trust-scheme.de.json");
VCResolveResult vcRes = didResolver.resolveVC("https://essif.iao.fraunhofer.de/files/trustlist/federation1.test.train.trust-scheme.de.json", fhDidEssif);
assertEquals("https://tspa.trust-scheme.de/tspa_train_domain/api/v1/scheme/federation1.test.train.trust-scheme.de", vcRes.getTrustListUri());
assertTrue(vcRes.isVerified());
}
......@@ -198,7 +198,7 @@ public class DIDResolverTest {
ResolveRepresentationResult rrr = ResolveRepresentationResult.build(null, didDocEssif.getBytes(), null);
when(uniResolver.resolveRepresentation(eq(fhDidEssif), any())).thenReturn(rrr);
Exception ex = assertThrowsExactly(DidException.class, () -> didResolver.resolveVC("https://ec.europa.eu/tools/lotl/eu-lotl.xml"));
Exception ex = assertThrowsExactly(DidException.class, () -> didResolver.resolveVC("https://ec.europa.eu/tools/lotl/eu-lotl.xml", fhDidEssif));
assertTrue(ex.getMessage().contains("LOADING_DOCUMENT_FAILED"));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment