公钥格式确认
This commit is contained in:
parent
90ed811c1d
commit
caf29a3084
@ -2,10 +2,11 @@ package com.cisd.tms.modules.openapi.service.impl;
|
||||
|
||||
import com.cisd.tms.common.enums.ErrorCode;
|
||||
import com.cisd.tms.common.exception.BizException;
|
||||
import com.cisd.tms.integration.crypto.pcie.Gm0018AlgorithmIds;
|
||||
import com.cisd.tms.integration.crypto.pcie.PcieSessionTemplate;
|
||||
import com.cisd.tms.integration.crypto.pcie.model.BackupDataResult;
|
||||
import com.cisd.tms.integration.crypto.pcie.model.EccExternalVerifyRequest;
|
||||
import com.cisd.tms.integration.crypto.pcie.model.UserKeySm2SignRequest;
|
||||
import com.cisd.tms.integration.crypto.pcie.model.UserKeySm2VerifyRequest;
|
||||
import com.cisd.tms.integration.crypto.pcie.service.JnaPcieCryptoService;
|
||||
import com.cisd.tms.modules.cert.entity.KeyEntity;
|
||||
import com.cisd.tms.modules.cert.service.CertificateService;
|
||||
@ -14,7 +15,6 @@ import com.cisd.tms.modules.openapi.service.IOpenApiService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.cert.X509Certificate;
|
||||
@ -96,7 +96,7 @@ public class OpenApiService implements IOpenApiService {
|
||||
|
||||
@Override
|
||||
public boolean rawVerify(byte[] origBytes, String signature, String dn) {
|
||||
log.info("===== 开始执行 SM2 验签 =====");
|
||||
log.info("===== 开始执行 SM2 外部公钥验签 =====");
|
||||
|
||||
// 入参检查
|
||||
if (origBytes == null || origBytes.length == 0) {
|
||||
@ -125,21 +125,26 @@ public class OpenApiService implements IOpenApiService {
|
||||
|
||||
log.info("找到证书: {}", cert.getSubjectDN());
|
||||
|
||||
// 获取证书中的公钥
|
||||
byte[] publicKeyBytes = cert.getPublicKey().getEncoded();
|
||||
log.info("公钥数据长度: {} bytes", publicKeyBytes.length);
|
||||
|
||||
// 解码签名
|
||||
byte[] sign = java.util.Base64.getDecoder().decode(signature);
|
||||
log.info("签名数据长度: {} bytes", sign.length);
|
||||
|
||||
// 验签
|
||||
UserKeySm2VerifyRequest request = new UserKeySm2VerifyRequest();
|
||||
request.setSignature(sign);
|
||||
// 使用外部公钥验签
|
||||
EccExternalVerifyRequest request = new EccExternalVerifyRequest();
|
||||
request.setAlgId(Gm0018AlgorithmIds.SM2_SIGN);
|
||||
request.setPublicKeyBlob(publicKeyBytes);
|
||||
request.setData(origBytes);
|
||||
request.setUserId(DEFAULT_SM2_USER_ID);
|
||||
|
||||
log.info("调用密码卡 SM2 验签接口...");
|
||||
sdf.userKeyVerifyWithSm2Sm3(request);
|
||||
request.setSignature(sign);
|
||||
|
||||
log.info("调用密码卡 SM2 外部公钥验签接口...");
|
||||
sdf.eccExternalVerify(request);
|
||||
|
||||
log.info("验签成功");
|
||||
log.info("===== SM2 验签完成 =====");
|
||||
log.info("===== SM2 外部公钥验签完成 =====");
|
||||
return true;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user