主密钥状态查询
This commit is contained in:
parent
0eb857b6fa
commit
0c595eec42
@ -1,13 +1,13 @@
|
|||||||
package com.cisd.tms.modules.mk.controller;
|
package com.cisd.tms.modules.mk.controller;
|
||||||
|
|
||||||
import com.cisd.tms.common.api.ApiResponse;
|
import com.cisd.tms.common.api.ApiResponse;
|
||||||
import com.cisd.tms.integration.crypto.pcie.service.PcieCryptoService;
|
|
||||||
import com.cisd.tms.modules.mk.dto.LMK;
|
import com.cisd.tms.modules.mk.dto.LMK;
|
||||||
import com.cisd.tms.modules.mk.dto.MasterKeyRestoreDTO;
|
import com.cisd.tms.modules.mk.dto.MasterKeyRestoreDTO;
|
||||||
import com.cisd.tms.modules.mk.dto.RecoveryResult;
|
import com.cisd.tms.modules.mk.dto.RecoveryResult;
|
||||||
import com.cisd.tms.modules.mk.dto.UKeySignDTO;
|
import com.cisd.tms.modules.mk.dto.UKeySignDTO;
|
||||||
import com.cisd.tms.modules.mk.dto.UKeySignEntity;
|
import com.cisd.tms.modules.mk.dto.UKeySignEntity;
|
||||||
import com.cisd.tms.modules.mk.dto.UKeySignResult;
|
import com.cisd.tms.modules.mk.dto.UKeySignResult;
|
||||||
|
import com.cisd.tms.modules.mk.enums.MasterKeyStatus;
|
||||||
import com.cisd.tms.modules.mk.service.LmkService;
|
import com.cisd.tms.modules.mk.service.LmkService;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@ -32,8 +32,6 @@ import java.util.List;
|
|||||||
@RequestMapping("/api/v1")
|
@RequestMapping("/api/v1")
|
||||||
public class LmkController {
|
public class LmkController {
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PcieCryptoService pcieCryptoService;
|
|
||||||
@Resource
|
@Resource
|
||||||
private LmkService lmkService;
|
private LmkService lmkService;
|
||||||
@Resource
|
@Resource
|
||||||
@ -69,6 +67,11 @@ public class LmkController {
|
|||||||
return ApiResponse.success(UKeySignResult.builder().sign(signValue).extra(components).build());
|
return ApiResponse.success(UKeySignResult.builder().sign(signValue).extra(components).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/masterKeyStatus")
|
||||||
|
public ApiResponse<MasterKeyStatus.StatusDetail> getMasterKeyStatus() {
|
||||||
|
return ApiResponse.success(lmkService.getMasterKeyStatus());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复主密钥
|
* 恢复主密钥
|
||||||
* @param masterKeyRestoreDTO
|
* @param masterKeyRestoreDTO
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.cisd.tms.modules.mk.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RecoveryResult {
|
||||||
|
private boolean needNewUKey;
|
||||||
|
private String mac;
|
||||||
|
|
||||||
|
public static RecoveryResult getInstance(boolean needNewUKey, String mac) {
|
||||||
|
RecoveryResult result = new RecoveryResult();
|
||||||
|
result.needNewUKey = needNewUKey;
|
||||||
|
result.mac = mac;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.cisd.tms.modules.mk.enums;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
public enum MasterKeyStatus {
|
||||||
|
NORMAL(0, "已生成"),
|
||||||
|
ABNORMAL(1, "未生成");
|
||||||
|
|
||||||
|
MasterKeyStatus(int code, String desc) {
|
||||||
|
this.code = code;
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final int code;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
public StatusDetail getDetail() {
|
||||||
|
return new StatusDetail(this.code, this.desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StatusDetail getDetail(String ucSessionKey) {
|
||||||
|
return new StatusDetail(this.code, this.desc, ucSessionKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class StatusDetail {
|
||||||
|
private int code;
|
||||||
|
private String desc;
|
||||||
|
private String ucSessionKey;
|
||||||
|
|
||||||
|
public StatusDetail(int code, String desc) {
|
||||||
|
this.code = code;
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StatusDetail(int code, String desc, String ucSessionKey) {
|
||||||
|
this.code = code;
|
||||||
|
this.desc = desc;
|
||||||
|
this.ucSessionKey = ucSessionKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ import com.cisd.tms.modules.mk.dto.KeyComponent;
|
|||||||
import com.cisd.tms.modules.mk.dto.LMK;
|
import com.cisd.tms.modules.mk.dto.LMK;
|
||||||
import com.cisd.tms.modules.mk.dto.LMKAndIK;
|
import com.cisd.tms.modules.mk.dto.LMKAndIK;
|
||||||
import com.cisd.tms.modules.mk.enums.IKEnums;
|
import com.cisd.tms.modules.mk.enums.IKEnums;
|
||||||
|
import com.cisd.tms.modules.mk.enums.MasterKeyStatus;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bouncycastle.util.encoders.Hex;
|
import org.bouncycastle.util.encoders.Hex;
|
||||||
@ -207,4 +208,14 @@ public class LmkService {
|
|||||||
keyComponentList = null;
|
keyComponentList = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MasterKeyStatus.StatusDetail getMasterKeyStatus() {
|
||||||
|
boolean ok = pcieCryptoService.checkLmk();
|
||||||
|
MasterKeyStatus status = ok ? MasterKeyStatus.NORMAL : MasterKeyStatus.ABNORMAL;
|
||||||
|
if (ok) {
|
||||||
|
String mac = Hex.toHexString(pcieCryptoService.exportLmkSeedMac());
|
||||||
|
return status.getDetail(mac);
|
||||||
|
}
|
||||||
|
return status.getDetail();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user