diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/constant/SignatureErrorCode.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/constant/SignatureErrorCode.java index fef252ec..2b28cb99 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/constant/SignatureErrorCode.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/constant/SignatureErrorCode.java @@ -48,7 +48,11 @@ public enum SignatureErrorCode { CLAIM_NOT_FOUND("KER-SIG-118", "{claim} Claim not found in the CWT Token."), - CLAIM_NOT_MATCHED("KER-SIG-119", "Provided {claim} Claim value not matched with CWT."); + CLAIM_NOT_MATCHED("KER-SIG-119", "Provided {claim} Claim value not matched with CWT."), + + UNTAGGED_COSE_SIGN1("KER-SIG-120", "Untagged COSE Sign1 not found"), + + TAGGED_COSE_SIGN1("KER-SIG-121", "Tagged COSE Sign1 not found"); private final String errorCode; private final String errorMessage; diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/controller/CoseSignController.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/controller/CoseSignController.java index 5be62c2d..7fe6ad51 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/controller/CoseSignController.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/controller/CoseSignController.java @@ -57,7 +57,7 @@ public class CoseSignController { @ResponseFilter @PreAuthorize("hasAnyRole(@signAuthRoles.getPostcosesign1())") @PostMapping(value = "/coseSign1") - public ResponseWrapper coseSign(@RequestBody @Valid RequestWrapper requestDto) { + public ResponseWrapper coseSign1(@RequestBody @Valid RequestWrapper requestDto) { CoseSignResponseDto coseSignResponse = service.coseSign1(requestDto.getRequest()); ResponseWrapper response = new ResponseWrapper<>(); response.setResponse(coseSignResponse); diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignRequestDto.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignRequestDto.java index 4b1b082c..ef0c0557 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignRequestDto.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignRequestDto.java @@ -14,7 +14,7 @@ public class CoseSignRequestDto { @NotBlank - @ApiModelProperty(notes = "Base64 encoded Data to sign", example = "ewogICAiYW55S2V5IjogIlRlc3QgSnNvbiIKfQ", required = true) + @ApiModelProperty(notes = "Base64URL encoded Data to sign", example = "ewogICAiYW55S2V5IjogIlRlc3QgSnNvbiIKfQ", required = true) private String payload; /** @@ -46,4 +46,10 @@ public class CoseSignRequestDto { */ @ApiModelProperty(notes = "Algorithm to use for data signing", example = "PS256", required = false) private String algorithm; + + /** + * Include COSE Tag + */ + @ApiModelProperty(notes = "Include COSE Tag", example = "true", required = false) + private Boolean includeCOSETag; } diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignVerifyRequestDto.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignVerifyRequestDto.java index 66a5ab9d..9b42a01e 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignVerifyRequestDto.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/dto/CoseSignVerifyRequestDto.java @@ -40,6 +40,11 @@ public class CoseSignVerifyRequestDto { @ApiModelProperty(notes = "Certificate to be use in JWT Signature verification.", example = "", required = false) private String certificateData; + /** + * Flag to validate the COSE TAG. + */ + @ApiModelProperty(notes = "Flag to validate the COSE TAG.", example = "true", required = false) + private Boolean isCOSETagIncluded; /** * Flag to validate against trust store. */ diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/CoseSignatureService.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/CoseSignatureService.java index 01cf36f3..451c9560 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/CoseSignatureService.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/CoseSignatureService.java @@ -10,7 +10,7 @@ public interface CoseSignatureService { /** - * COSE Sign + * COSE Sign1 * * @param coseSignRequestDto the COSESignRequestDto * @return the COSESignResponseDto @@ -18,7 +18,7 @@ public interface CoseSignatureService { public CoseSignResponseDto coseSign1(CoseSignRequestDto coseSignRequestDto); /** - * COSE Verify + * COSE Verify1 * * @param coseSignVerifyRequestDto the COSESignVerifyRequestDto * @return the COSESignVerifyResponseDto diff --git a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/impl/CoseSignatureServiceImpl.java b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/impl/CoseSignatureServiceImpl.java index 94742534..80b8b5f5 100644 --- a/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/impl/CoseSignatureServiceImpl.java +++ b/kernel/kernel-keymanager-service/src/main/java/io/mosip/kernel/signature/service/impl/CoseSignatureServiceImpl.java @@ -36,7 +36,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigInteger; -import java.nio.charset.StandardCharsets; import java.security.*; import java.security.cert.Certificate; import java.security.cert.X509Certificate; @@ -114,7 +113,7 @@ public CoseSignResponseDto coseSign1(CoseSignRequestDto coseSignRequestDto) { SignatureErrorCode.INVALID_INPUT.getErrorMessage()); } - String payload = new String(CryptoUtil.decodeURLSafeBase64(base64Payload)); + byte[] payload = CryptoUtil.decodeURLSafeBase64(base64Payload); String timestamp = DateUtils.getUTCCurrentDateTimeString(); String applicationId = coseSignRequestDto.getApplicationId(); @@ -125,7 +124,7 @@ public CoseSignResponseDto coseSign1(CoseSignRequestDto coseSignRequestDto) { } SignatureCertificate certificateResponse = keymanagerService.getSignatureCertificate(applicationId, Optional.of(referenceId), timestamp); - String signedData = signCose1(payload.getBytes(StandardCharsets.UTF_8), certificateResponse, referenceId, coseSignRequestDto, false); + String signedData = signCose1(payload, certificateResponse, referenceId, coseSignRequestDto, false); CoseSignResponseDto responseDto = new CoseSignResponseDto(); responseDto.setSignedData(signedData); @@ -170,7 +169,8 @@ private String signCose1(byte[] cosePayload, SignatureCertificate certificateRes .signature(signature) .build(); - return bytesToHex(encodeTaggedCoseSign1(coseSign1, isCwt)); + boolean includeCoseTag = !Boolean.FALSE.equals(requestDto.getIncludeCOSETag()); + return bytesToHex(encodeTaggedCoseSign1(coseSign1, isCwt, includeCoseTag)); } catch (IOException e) { LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_SIGN, SignatureConstant.BLANK, "Error occurred while signing COSE data.", e); @@ -179,10 +179,14 @@ private String signCose1(byte[] cosePayload, SignatureCertificate certificateRes } } - private byte[] encodeTaggedCoseSign1(COSESign1 coseSign1, boolean isCwt) throws IOException { + private byte[] encodeTaggedCoseSign1(COSESign1 coseSign1, boolean isCwt, boolean includeCoseTag) throws IOException { byte[] coseBytes = coseSign1.encode(); CBORDecoder decoder = new CBORDecoder(coseBytes); CBORItem coseItem = decoder.next(); + + if (!includeCoseTag) + return coseItem.encode(); + CBORTaggedItem sign1Tagged = new CBORTaggedItem(SignatureConstant.COSE_SIGN1_TAG, coseItem); if (isCwt) { @@ -202,7 +206,7 @@ public CoseSignVerifyResponseDto coseVerify1(CoseSignVerifyRequestDto requestDto String coseHexdata = requestDto.getCoseSignedData(); if (!SignatureUtil.isDataValid(coseHexdata)) { LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, - "Provided COSE data is invalid."); + "Provided COSE Signed data is invalid."); throw new RequestException(SignatureErrorCode.INVALID_VERIFY_INPUT.getErrorCode(), SignatureErrorCode.INVALID_VERIFY_INPUT.getErrorMessage()); } @@ -217,15 +221,14 @@ public CoseSignVerifyResponseDto coseVerify1(CoseSignVerifyRequestDto requestDto byte[] coseData = signatureUtil.decodeHex(coseHexdata); CBORDecoder cborDecoder = new CBORDecoder(coseData); - CBORTaggedItem cborTaggedItem = (CBORTaggedItem) cborDecoder.next(); - if ((int)cborTaggedItem.getTagNumber() != SignatureConstant.COSE_SIGN1_TAG) { - LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, - "Provided CWT data does not have COSE Sign1 Array tag." + " CWT Tag Number: " + cborTaggedItem.getTagNumber()); - throw new RequestException(SignatureErrorCode.INVALID_COSE_SIGN1_INPUT.getErrorCode(), - SignatureErrorCode.INVALID_COSE_SIGN1_INPUT.getErrorMessage()); - } + boolean isIncludeCoseTag = !Boolean.FALSE.equals(requestDto.getIsCOSETagIncluded()); + + COSESign1 coseSign1; + if (isIncludeCoseTag) + coseSign1 = parseTaggedCoseSign1(cborDecoder); + else + coseSign1 = parseUntaggedCoseSign1(cborDecoder); - COSESign1 coseSign1 = (COSESign1) cborTaggedItem.getTagContent(); boolean signatureValid = verifyCoseSignature(coseSign1, reqCertData, applicationId, referenceId); LOGGER.info(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, "COSE Signature Verification Status: " + signatureValid); @@ -235,9 +238,9 @@ public CoseSignVerifyResponseDto coseVerify1(CoseSignVerifyRequestDto requestDto responseDto.setMessage(signatureValid ? SignatureConstant.VALIDATION_SUCCESSFUL : SignatureConstant.VALIDATION_FAILED); responseDto.setTrustValid(validateTrustForCose(applicationId, referenceId, coseSign1, reqCertData, requestDto)); return responseDto; - } catch (IOException e) { + } catch (Exception e) { LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, - "Error occurred while verifying COSE data.", e); + "COSE Verification failed due to error: {}", e.getMessage(), e); throw new SignatureFailureException(SignatureErrorCode.COSE_VERIFY_ERROR.getErrorCode(), SignatureErrorCode.COSE_VERIFY_ERROR.getErrorMessage(), e); } @@ -630,4 +633,39 @@ private void basicCWTChecks(Map payloadMap, CWTVerifyRequestDto } } } + + public static COSESign1 parseTaggedCoseSign1(CBORDecoder cborDecoder) { + LOGGER.info(SignatureConstant.SESSIONID, SignatureConstant.BLANK, SignatureConstant.BLANK, + "Parsing COSE Sign1 Tagged Content."); + CBORTaggedItem cborTaggedItem; + try { + cborTaggedItem = (CBORTaggedItem) cborDecoder.next(); + if ((int) cborTaggedItem.getTagNumber() != SignatureConstant.COSE_SIGN1_TAG) { + LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, + "Provided COSE data does not have COSE Sign1 Array tag." + " Tag Number: " + cborTaggedItem.getTagNumber()); + throw new RequestException(SignatureErrorCode.INVALID_COSE_SIGN1_INPUT.getErrorCode(), + SignatureErrorCode.INVALID_COSE_SIGN1_INPUT.getErrorMessage()); + } + } catch (IOException e) { + LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, + "Error occurred while parsing COSE Sign1 Tagged Content" + e); + throw new RequestException(SignatureErrorCode.TAGGED_COSE_SIGN1.getErrorCode(), + SignatureErrorCode.TAGGED_COSE_SIGN1.getErrorMessage()); + } + return (COSESign1) cborTaggedItem.getTagContent(); + } + + public static COSESign1 parseUntaggedCoseSign1(CBORDecoder cborDecoder) { + LOGGER.info(SignatureConstant.SESSIONID, SignatureConstant.BLANK, SignatureConstant.BLANK, + "Parsing COSE Sign1 Untagged Content."); + try { + CBORItem cborItem = cborDecoder.next(); + return COSESign1.build(cborItem); + } catch (IOException | COSEException e) { + LOGGER.error(SignatureConstant.SESSIONID, SignatureConstant.COSE_VERIFY, SignatureConstant.BLANK, + "Error occurred while parsing COSE Sign1 Untagged Content" + e); + throw new RequestException(SignatureErrorCode.UNTAGGED_COSE_SIGN1.getErrorCode(), + SignatureErrorCode.UNTAGGED_COSE_SIGN1.getErrorMessage()); + } + } } diff --git a/kernel/kernel-keymanager-service/src/test/java/io/mosip/kernel/signature/test/service/CoseSignatureServiceTest.java b/kernel/kernel-keymanager-service/src/test/java/io/mosip/kernel/signature/test/service/CoseSignatureServiceTest.java index 33be2f01..5f0a5854 100644 --- a/kernel/kernel-keymanager-service/src/test/java/io/mosip/kernel/signature/test/service/CoseSignatureServiceTest.java +++ b/kernel/kernel-keymanager-service/src/test/java/io/mosip/kernel/signature/test/service/CoseSignatureServiceTest.java @@ -1,9 +1,7 @@ package io.mosip.kernel.signature.test.service; import io.mosip.kernel.core.util.CryptoUtil; -import io.mosip.kernel.core.util.DateUtils; import io.mosip.kernel.keymanagerservice.dto.KeyPairGenerateRequestDto; -import io.mosip.kernel.keymanagerservice.exception.KeymanagerServiceException; import io.mosip.kernel.keymanagerservice.repository.KeyAliasRepository; import io.mosip.kernel.keymanagerservice.service.KeymanagerService; import io.mosip.kernel.keymanagerservice.test.KeymanagerTestBootApplication; @@ -12,7 +10,6 @@ import io.mosip.kernel.signature.exception.RequestException; import io.mosip.kernel.signature.exception.SignatureFailureException; import io.mosip.kernel.signature.service.CoseSignatureService; -import io.mosip.kernel.signature.service.impl.CoseSignatureServiceImpl; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -22,8 +19,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import java.io.IOError; -import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -67,7 +62,7 @@ public void testCoseSign1() { coseSignRequestDto.setReferenceId(""); coseSignRequestDto.setPayload(CryptoUtil.encodeToURLSafeBase64("test payload".getBytes())); coseSignRequestDto.setAlgorithm("RS256"); - + CoseSignResponseDto response = coseSignatureService.coseSign1(coseSignRequestDto); Assert.assertNotNull(response); Assert.assertNotNull(response.getSignedData()); @@ -175,7 +170,7 @@ public void testCoseSignRequestException() { public void testCoseSign1EmptyPayload() { CoseSignRequestDto coseSignRequestDto = new CoseSignRequestDto(); coseSignRequestDto.setPayload(""); - + RequestException exception = assertThrows(RequestException.class, () -> { coseSignatureService.coseSign1(coseSignRequestDto); }); @@ -194,14 +189,14 @@ public void testCoseVerify1() { coseSignRequestDto.setReferenceId(""); coseSignRequestDto.setPayload("eyAibW9kdWxlIjogImtleW1hbmFnZXIiLCAicHVycG9zZSI6ICJ0ZXN0IGNhc2UiIH0"); CoseSignResponseDto signResponse = coseSignatureService.coseSign1(coseSignRequestDto); - + // Then verify it CoseSignVerifyRequestDto coseSignVerifyRequestDto = new CoseSignVerifyRequestDto(); coseSignVerifyRequestDto.setApplicationId("TEST"); coseSignVerifyRequestDto.setReferenceId(""); coseSignVerifyRequestDto.setCoseSignedData(signResponse.getSignedData()); CoseSignVerifyResponseDto verifyResponse = coseSignatureService.coseVerify1(coseSignVerifyRequestDto); - + Assert.assertNotNull(verifyResponse); Assert.assertTrue(verifyResponse.isSignatureValid()); Assert.assertEquals("Validation Successful", verifyResponse.getMessage()); @@ -226,7 +221,7 @@ public void testCoseVerify1WithTrustValidation() { coseSignVerifyRequestDto.setCoseSignedData(signResponse.getSignedData()); coseSignVerifyRequestDto.setValidateTrust(true); coseSignVerifyRequestDto.setDomain("DEVICE"); - + CoseSignVerifyResponseDto verifyResponse = coseSignatureService.coseVerify1(coseSignVerifyRequestDto); Assert.assertNotNull(verifyResponse); } @@ -235,7 +230,7 @@ public void testCoseVerify1WithTrustValidation() { public void testCoseVerify1InvalidData() { CoseSignVerifyRequestDto coseSignVerifyRequestDto = new CoseSignVerifyRequestDto(); coseSignVerifyRequestDto.setCoseSignedData("invalid-hex-data"); - + SignatureFailureException exception = assertThrows(SignatureFailureException.class, () -> { coseSignatureService.coseVerify1(coseSignVerifyRequestDto); }); @@ -246,14 +241,14 @@ public void testCoseVerify1InvalidData() { public void testCoseVerify1EmptyData() { CoseSignVerifyRequestDto coseSignVerifyRequestDto = new CoseSignVerifyRequestDto(); coseSignVerifyRequestDto.setCoseSignedData(""); - - RequestException exception = assertThrows(RequestException.class, () -> { + + SignatureFailureException exception = assertThrows(SignatureFailureException.class, () -> { coseSignatureService.coseVerify1(coseSignVerifyRequestDto); }); Assert.assertNotNull(exception); } - @Test(expected = RequestException.class) + @Test(expected = SignatureFailureException.class) public void testCoseVerifyTag() { KeyPairGenerateRequestDto keyPairGenRequestDto = new KeyPairGenerateRequestDto(); keyPairGenRequestDto.setApplicationId("ID_REPO"); @@ -301,8 +296,9 @@ public void testCwtSignWithClaim169() { cwtSignRequestDto.setApplicationId("ID_REPO"); cwtSignRequestDto.setReferenceId("EC_SECP256R1_SIGN"); cwtSignRequestDto.setPayload(null); - cwtSignRequestDto.setClaim169Payload("D83DD28445A101390100A053A3041A69BE65DC051A68D117DC061A68D117DC584603104DA01E36460ABC0A408985D760EEACE7FFC445E46F221FB2DCC2DE29E9388D2384F4B9A2C8FF6369A3AA2A82EBE532C763C780F1B3C87FCAD58B01A93B4099D281BC327C"); - + cwtSignRequestDto.setClaim169Payload( + "D83DD28445A101390100A053A3041A69BE65DC051A68D117DC061A68D117DC584603104DA01E36460ABC0A408985D760EEACE7FFC445E46F221FB2DCC2DE29E9388D2384F4B9A2C8FF6369A3AA2A82EBE532C763C780F1B3C87FCAD58B01A93B4099D281BC327C"); + CoseSignResponseDto response = coseSignatureService.cwtSign(cwtSignRequestDto); Assert.assertNotNull(response); Assert.assertNotNull(response.getSignedData()); @@ -381,7 +377,7 @@ public void testCwtSignInvalidPayload() { cwtSignRequestDto.setReferenceId(""); cwtSignRequestDto.setPayload(""); cwtSignRequestDto.setClaim169Payload(""); - + RequestException exception = assertThrows(RequestException.class, () -> { coseSignatureService.cwtSign(cwtSignRequestDto); }); @@ -402,7 +398,7 @@ public void testCwtVerify() { cwtSignRequestDto.setIssuer("keymgr"); cwtSignRequestDto.setSubject("signature"); CoseSignResponseDto signResponse = coseSignatureService.cwtSign(cwtSignRequestDto); - + // Then verify it CWTVerifyRequestDto cwtVerifyRequestDto = new CWTVerifyRequestDto(); cwtVerifyRequestDto.setApplicationId("ID_REPO"); @@ -411,7 +407,7 @@ public void testCwtVerify() { cwtVerifyRequestDto.setIssuer("keymgr"); cwtVerifyRequestDto.setSubject("signature"); CoseSignVerifyResponseDto verifyResponse = coseSignatureService.cwtVerify(cwtVerifyRequestDto); - + Assert.assertNotNull(verifyResponse); Assert.assertTrue(verifyResponse.isSignatureValid()); Assert.assertEquals("Validation Successful", verifyResponse.getMessage()); @@ -421,7 +417,7 @@ public void testCwtVerify() { public void testCwtVerifyInvalidData() { CWTVerifyRequestDto cwtVerifyRequestDto = new CWTVerifyRequestDto(); cwtVerifyRequestDto.setCoseSignedData("invalid-hex-data"); - + SignatureFailureException exception = assertThrows(SignatureFailureException.class, () -> { coseSignatureService.cwtVerify(cwtVerifyRequestDto); }); @@ -432,7 +428,7 @@ public void testCwtVerifyInvalidData() { public void testCwtVerifyEmptyData() { CWTVerifyRequestDto cwtVerifyRequestDto = new CWTVerifyRequestDto(); cwtVerifyRequestDto.setCoseSignedData(""); - + RequestException exception = assertThrows(RequestException.class, () -> { coseSignatureService.cwtVerify(cwtVerifyRequestDto); }); @@ -458,7 +454,8 @@ public void testCwtVerifyTag() { cwtVerifyRequestDto.setCoseSignedData(response.getSignedData()); coseSignatureService.cwtVerify(cwtVerifyRequestDto); - cwtVerifyRequestDto.setCoseSignedData("D83DD38445A101390100A053A3041A69BE65DC051A68D117DC061A68D117DC584603104DA01E36460ABC0A408985D760EEACE7FFC445E46F221FB2DCC2DE29E9388D2384F4B9A2C8FF6369A3AA2A82EBE532C763C780F1B3C87FCAD58B01A93B4099D281BC327C"); + cwtVerifyRequestDto.setCoseSignedData( + "D83DD38445A101390100A053A3041A69BE65DC051A68D117DC061A68D117DC584603104DA01E36460ABC0A408985D760EEACE7FFC445E46F221FB2DCC2DE29E9388D2384F4B9A2C8FF6369A3AA2A82EBE532C763C780F1B3C87FCAD58B01A93B4099D281BC327C"); coseSignatureService.cwtVerify(cwtVerifyRequestDto); } @@ -517,7 +514,7 @@ public void testCoseSign1WithPS256Algorithm() { coseSignRequestDto.setReferenceId(""); coseSignRequestDto.setPayload("eyAibW9kdWxlIjogImtleW1hbmFnZXIiLCAicHVycG9zZSI6ICJ0ZXN0IGNhc2UiIH0"); coseSignRequestDto.setAlgorithm("PS256"); - + CoseSignResponseDto response = coseSignatureService.coseSign1(coseSignRequestDto); Assert.assertNotNull(response); Assert.assertNotNull(response.getSignedData()); @@ -535,7 +532,7 @@ public void testCoseSign1WithES256KAlgorithm() { coseSignRequestDto.setReferenceId("EC_SECP256K1_SIGN"); coseSignRequestDto.setAlgorithm("ES256K"); coseSignRequestDto.setPayload("eyAibW9kdWxlIjogImtleW1hbmFnZXIiLCAicHVycG9zZSI6ICJ0ZXN0IGNhc2UiIH0"); - + CoseSignResponseDto response = coseSignatureService.coseSign1(coseSignRequestDto); Assert.assertNotNull(response); Assert.assertNotNull(response.getSignedData()); @@ -571,7 +568,7 @@ public void testCwtVerifyChecksException() { cwtVerifyRequestDto.setIssuer("keymgr"); exception = assertThrows(RequestException.class, () -> { coseSignatureService.cwtVerify(cwtVerifyRequestDto); - }); + }); Assert.assertEquals(SignatureErrorCode.CLAIM_NOT_FOUND.getErrorCode(), exception.getErrorCode()); cwtSignRequestDto.setSubject("sign");