完善代码
This commit is contained in:
parent
b071c133ae
commit
dc126e5812
@ -1,10 +1,15 @@
|
||||
package com.cisd.tms.modules.openapi.service.controller;
|
||||
|
||||
import com.cisd.tms.common.api.ApiResponse;
|
||||
import com.cisd.tms.modules.cert.dto.ImportCertificateResponse;
|
||||
import com.cisd.tms.modules.cert.service.CertificateService;
|
||||
import com.cisd.tms.modules.openapi.service.dto.DettachedSignRequest;
|
||||
import com.cisd.tms.modules.openapi.service.dto.DettachedVerifyRequest;
|
||||
import com.cisd.tms.modules.openapi.service.dto.RawSignRequest;
|
||||
import com.cisd.tms.modules.openapi.service.dto.RawSignResponse;
|
||||
import com.cisd.tms.modules.openapi.service.dto.RawVerifyRequest;
|
||||
import com.cisd.tms.modules.openapi.service.dto.RawVerifyResponse;
|
||||
import com.cisd.tms.modules.openapi.service.dto.UploadCertRequest;
|
||||
import com.cisd.tms.modules.openapi.service.impl.OpenApiService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -28,12 +33,13 @@ public class OpenApiController {
|
||||
private static final Logger log = LoggerFactory.getLogger(OpenApiController.class);
|
||||
|
||||
private final OpenApiService openApiService;
|
||||
private final CertificateService certificateService;
|
||||
|
||||
|
||||
@PostMapping("/rawSign")
|
||||
@Operation(summary = "裸签名", description = "基于 SM3 SM2 算法进行签名,返回 Base64 编码的签名值")
|
||||
public ApiResponse<RawSignResponse> rawSign(@Valid @RequestBody RawSignRequest request) {
|
||||
log.info("收到裸签名请求, DN: {}", request.getDn());
|
||||
log.info("收到裸签名请求, DN: {}, sessionId: {}", request.getDn(), request.getSessionId());
|
||||
|
||||
// 入参检查
|
||||
if (request.getOrigBytes() == null || request.getOrigBytes().trim().isEmpty()) {
|
||||
@ -67,7 +73,7 @@ public class OpenApiController {
|
||||
@PostMapping("/rawVerify")
|
||||
@Operation(summary = "裸验签", description = "基于 SM3 SM2 算法进行验签,验证签名的有效性")
|
||||
public ApiResponse<RawVerifyResponse> rawVerify(@Valid @RequestBody RawVerifyRequest request) {
|
||||
log.info("收到裸验签请求, DN: {}", request.getDn());
|
||||
log.info("收到裸验签请求, DN: {}, sessionId: {}", request.getDn(), request.getSessionId());
|
||||
|
||||
// 入参检查
|
||||
if (request.getOrigBytes() == null || request.getOrigBytes().trim().isEmpty()) {
|
||||
@ -108,7 +114,72 @@ public class OpenApiController {
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/dettachedSign")
|
||||
@Operation(summary = "分离签名", description = "基于 SM3 SM2 算法进行分离签名,返回 Base64 编码的签名值")
|
||||
public ApiResponse<RawSignResponse> dettachedSign(@Valid @RequestBody DettachedSignRequest request) {
|
||||
log.info("收到分离签名请求, DN: {}, sessionId: {}", request.getDn(), request.getSessionId());
|
||||
|
||||
RawSignRequest rawSignRequest = new RawSignRequest();
|
||||
rawSignRequest.setDn(request.getDn());
|
||||
rawSignRequest.setOrigBytes(request.getOrigBytes());
|
||||
rawSignRequest.setSessionId(request.getSessionId());
|
||||
|
||||
return rawSign(rawSignRequest);
|
||||
}
|
||||
|
||||
@PostMapping("/dettachedVerify")
|
||||
@Operation(summary = "分离验签", description = "基于 SM3 SM2 算法进行分离验签,验证签名的有效性")
|
||||
public ApiResponse<RawVerifyResponse> dettachedVerify(@Valid @RequestBody DettachedVerifyRequest request) {
|
||||
log.info("收到分离验签请求, DN: {}, sessionId: {}", request.getDn(), request.getSessionId());
|
||||
|
||||
RawVerifyRequest rawVerifyRequest = new RawVerifyRequest();
|
||||
rawVerifyRequest.setDn(request.getDn());
|
||||
rawVerifyRequest.setOrigBytes(request.getOrigBytes());
|
||||
rawVerifyRequest.setSignature(request.getSignature());
|
||||
rawVerifyRequest.setSessionId(request.getSessionId());
|
||||
|
||||
return rawVerify(rawVerifyRequest);
|
||||
}
|
||||
|
||||
@PostMapping("/dettachedVerifySimple")
|
||||
@Operation(summary = "分离验签(简化版)", description = "基于 SM3 SM2 算法进行分离验签,验证签名的有效性(简化版)")
|
||||
public ApiResponse<RawVerifyResponse> dettachedVerifySimple(@Valid @RequestBody DettachedVerifyRequest request) {
|
||||
log.info("收到分离验签(简化版)请求, DN: {}, sessionId: {}", request.getDn(), request.getSessionId());
|
||||
|
||||
RawVerifyRequest rawVerifyRequest = new RawVerifyRequest();
|
||||
rawVerifyRequest.setDn(request.getDn());
|
||||
rawVerifyRequest.setOrigBytes(request.getOrigBytes());
|
||||
rawVerifyRequest.setSignature(request.getSignature());
|
||||
rawVerifyRequest.setSessionId(request.getSessionId());
|
||||
|
||||
return rawVerify(rawVerifyRequest);
|
||||
}
|
||||
|
||||
@PostMapping("/uploadCert")
|
||||
@Operation(summary = "上传证书", description = "上传并导入证书")
|
||||
public ApiResponse<ImportCertificateResponse> uploadCert(@Valid @RequestBody UploadCertRequest request) {
|
||||
log.info("收到上传证书请求, sessionId: {}", request.getSessionId());
|
||||
|
||||
if (request.getCertData() == null || request.getCertData().trim().isEmpty()) {
|
||||
log.error("上传证书请求失败:证书数据为空");
|
||||
return ApiResponse.fail(400, "证书数据不能为空", null);
|
||||
}
|
||||
|
||||
try {
|
||||
byte[] certBytes = Base64.getDecoder().decode(request.getCertData());
|
||||
log.info("证书数据长度: {} bytes", certBytes.length);
|
||||
|
||||
ImportCertificateResponse response = certificateService.importCertificate(certBytes);
|
||||
|
||||
log.info("证书上传成功, certId: {}, subjectDn: {}", response.getCertId(), response.getSubjectDn());
|
||||
return ApiResponse.success(response);
|
||||
} catch (IllegalArgumentException e) {
|
||||
log.error("上传证书请求参数错误: {}", e.getMessage());
|
||||
return ApiResponse.fail(400, e.getMessage(), null);
|
||||
} catch (Exception e) {
|
||||
log.error("证书上传失败: {}", e.getMessage(), e);
|
||||
return ApiResponse.fail(500, "证书上传失败: " + e.getMessage(), null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package com.cisd.tms.modules.openapi.service.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "分离签名请求")
|
||||
public class DettachedSignRequest {
|
||||
@NotBlank(message = "证书DN不能为空")
|
||||
@Schema(description = "证书DN", example = "CN=Initial Entity,OU=Initial OU,O=Initial Org,L=Beijing,ST=Beijing,C=CN")
|
||||
private String dn;
|
||||
|
||||
@NotBlank(message = "待签名原文不能为空")
|
||||
@Schema(description = "待签名原文的Base64编码", example = "dGVzdCBtZXNzYWdl")
|
||||
private String origBytes;
|
||||
|
||||
@Schema(description = "会话ID", example = "session-12345")
|
||||
private String sessionId;
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.cisd.tms.modules.openapi.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DettachedVerifyRequest {
|
||||
private String dn;
|
||||
private String origBytes;
|
||||
private String sessionId;
|
||||
private String signature;
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.cisd.tms.modules.openapi.service.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "上传证书请求")
|
||||
public class UploadCertRequest {
|
||||
@NotBlank(message = "证书数据不能为空")
|
||||
@Schema(description = "证书文件的Base64编码", example = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...")
|
||||
private String certData;
|
||||
|
||||
@Schema(description = "会话ID", example = "session-12345")
|
||||
private String sessionId;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user