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