diff --git a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/controller/ProofController.java b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/controller/ProofController.java new file mode 100644 index 00000000..eb92f9da --- /dev/null +++ b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/controller/ProofController.java @@ -0,0 +1,44 @@ +package didentity.amos.digitalIdentity.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import didentity.amos.digitalIdentity.services.AuthenticationService; +import didentity.amos.digitalIdentity.services.ProofService; + +@Controller +@RequestMapping(path = "/proof") +public class ProofController { + + @Autowired + private AuthenticationService authenticationService; + + @Autowired + private ProofService proofService; + + // TODO RequestParam image can be added + @PostMapping(path = "/create") + public @ResponseBody ResponseEntity createProof( + @RequestParam String requestedSelfAttestedAttributes, + @RequestParam String revocationFilterType, + @RequestParam String requestedAttributes, + @RequestParam String name, + @RequestParam String requestedPredicates, + @RequestParam String requestedDeviceBindingVerifications, + @RequestParam String version, + @RequestParam String revocationFilterTimes, + @RequestParam(required = false) String authorization) { + + if (authenticationService.authentication(authorization) == false) { + return authenticationService.getError(); + } + + return proofService.createProof(requestedSelfAttestedAttributes, revocationFilterType, requestedAttributes, name, requestedPredicates, requestedDeviceBindingVerifications, version, revocationFilterTimes); + } + +} diff --git a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/LissiApiService.java b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/LissiApiService.java index b7863a17..3a02bae7 100644 --- a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/LissiApiService.java +++ b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/LissiApiService.java @@ -148,6 +148,32 @@ public ResponseEntity issueCredential(String connectionId, String creden return handleResponse(response); } + public ResponseEntity createProof(File image, + String requestedSelfAttestedAttributes, + String revocationFilterType, + String requestedAttributes, + String name, + String requestedPredicates, + String requestedDeviceBindingVerifications, + String version, + String revocationFilterTimes) { + String url = baseUrl + "/ctrl/api/v1.0/proof-templates/create"; + + ResponseEntity response = httpService.executeRequest(url, HttpMethod.POST, String.class, + Pair.of("image", image), + Pair.of("requestedSelfAttestedAttributes", requestedSelfAttestedAttributes), + Pair.of("revocationFilterType", revocationFilterType), + Pair.of("requestedAttributes", requestedAttributes), + Pair.of("name", name), + Pair.of("requestedPredicates", requestedPredicates), + Pair.of("requestedDeviceBindingVerifications", requestedDeviceBindingVerifications), + Pair.of("version", version), + Pair.of("revocationFilterTimes", revocationFilterTimes)); + + // check response status code + return handleResponse(response); + } + public ResponseEntity handleResponse(ResponseEntity response) { if (response == null || response.getStatusCode().is2xxSuccessful() == false) { return null; diff --git a/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/ProofService.java b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/ProofService.java new file mode 100644 index 00000000..23c83e3b --- /dev/null +++ b/src/digitalIdentity-backend/src/main/java/didentity/amos/digitalIdentity/services/ProofService.java @@ -0,0 +1,35 @@ +package didentity.amos.digitalIdentity.services; + +import java.io.File; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +@Service +public class ProofService { + + @Autowired + private LissiApiService lissiApiService; + + @Autowired + private ResourceService resourceService; + + public ResponseEntity createProof(String requestedSelfAttestedAttributes, + String revocationFilterType, + String requestedAttributes, + String name, + String requestedPredicates, + String requestedDeviceBindingVerifications, + String version, + String revocationFilterTimes) { + + File image = resourceService.getDummyPng(); + if (image == null) { + return ResponseEntity.status(500).body("Could not find image."); + } + + return lissiApiService.createProof(image, requestedSelfAttestedAttributes, revocationFilterType, requestedAttributes, name, requestedPredicates, requestedDeviceBindingVerifications, version, revocationFilterTimes); + } + +}