增加时间戳调用

main
LiJiaWen 1 week ago
parent 1e61286a4e
commit fa7c74dd21
  1. 18
      CA-Platform-Linker/Models/Coss/CossModels.cs
  2. 77
      CA-Platform-Linker/Services/ClientService.cs
  3. 10
      CA-Platform-Linker/Services/Interfaces/IClientService.cs

@ -75,4 +75,22 @@ namespace CA_Platform_Linker.Models.Coss
public string oriData { get; set; }
public string attachCert { get; set; }
}
/// <summary>
/// 验时间戳返回数据
/// </summary>
public class CossVerifyResultData
{
/// <summary>
/// 验签结果:1=通过,-1=时间戳验证不通过,-2=原文验证不通过,-3=不是所信任的根,-4=证书未生效,-5=查询不到此证书,-6=服务器证书过期
/// </summary>
public int verifyRes { get; set; }
public string verifyMsg { get; set; }
}
public class VerifyTssRequest : CossBaseRequest
{
public string oriData { get; set; }
public string tsResp { get; set; }
}
}

@ -90,10 +90,33 @@ namespace CA_Platform_Linker.Services
if (result.status == "200")
{
_ = Task.Run(() =>
_ = Task.Run(async () =>
{
string tsData = "";
try
{
// 1. 协同加盖时间戳
var createTssRes = await CreateTssAsync(clientType, base64Data);
if (createTssRes.status != "200" || string.IsNullOrEmpty(createTssRes.data?.tsResp))
{
string errMsg = $"加盖时间戳失败: {createTssRes.message ?? "tsResp为空"}";
LogHelper.Log.Error(errMsg);
return;
}
tsData = createTssRes.data.tsResp;
LogHelper.Log.Info($"加盖时间戳成功,SignDataId: {result.data.signDataId}");
// 2. 时间戳验签
var verifyTssRes = await VerifyTssAsync(clientType, base64Data, tsData);
if (verifyTssRes.status != "200" || verifyTssRes.data?.verifyRes != 1)
{
string errMsg = $"时间戳验签失败: {verifyTssRes.message ?? verifyTssRes.data?.verifyMsg ?? ""}";
LogHelper.Log.Error(errMsg);
return;
}
LogHelper.Log.Info($"时间戳验签通过,SignDataId: {result.data.signDataId}");
// 3. 验签通过,写入数据库
var clientConfig = ConfigHelper.GetCossClientConfig(clientType);
var (operCode, operName) = SqlHelper.GetOperatorInfo(userId);
var signInfo = new SignInfo
@ -106,10 +129,10 @@ namespace CA_Platform_Linker.Services
OperCode = operCode ?? "",
OperName = operName ?? "",
SignDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
CertID = "",
CertID = result.data.msspId ?? "",
OperCert = result.data.signCert,
SignData = result.data.signResult,
TSData = "",
TSData = tsData,
SignID = signID,
OperType = clientType + "自动签名",
SignWay = 1
@ -120,7 +143,7 @@ namespace CA_Platform_Linker.Services
}
catch (Exception ex)
{
LogHelper.Log.Error($"写入签名记录失败:{ex.Message}");
LogHelper.Log.Error($"签名后处理流程异常:{ex.Message}");
}
});
}
@ -156,5 +179,51 @@ namespace CA_Platform_Linker.Services
};
}
}
/// <summary>
/// 协同加盖时间戳(参考Demo: createAndGetTssInfo)
/// </summary>
public async Task<CossResponse<CossResultData>> CreateTssAsync(string clientType, string oriData)
{
try
{
Hashtable ht = CossHelper.BuildBaseHashtable(clientType);
ht.Add("oriData", oriData);
ht.Add("attachCert", "true");
return await CossHelper.PostAsync<CossResultData>("createAndGetTssInfo", ht, clientType);
}
catch (Exception ex)
{
LogHelper.Log.Error($"加盖时间戳失败: {ex.Message}");
return new CossResponse<CossResultData>
{
status = "500",
message = ex.Message
};
}
}
/// <summary>
/// 时间戳验签(参考Demo: verifyTS)
/// </summary>
public async Task<CossResponse<CossVerifyResultData>> VerifyTssAsync(string clientType, string oriData, string tsResp)
{
try
{
Hashtable ht = CossHelper.BuildBaseHashtable(clientType);
ht.Add("oriData", oriData);
ht.Add("tsResp", tsResp);
return await CossHelper.PostAsync<CossVerifyResultData>("verifyTS", ht, clientType);
}
catch (Exception ex)
{
LogHelper.Log.Error($"时间戳验签失败: {ex.Message}");
return new CossResponse<CossVerifyResultData>
{
status = "500",
message = ex.Message
};
}
}
}
}

@ -12,5 +12,15 @@ namespace CA_Platform_Linker.Services.Interfaces
Task<CossResponse<CossResultData>> AddSignJobAsync(string clientType, string title, string data, string userId = "", string algo = "SM3withSM2", string expiryDate = "1400");
Task<CossResponse<CossResultData>> AutoSignAsync(string clientType, string userId, string signToken, string data, string algo = "SM3withSM2", string expiryDate = "1400", int mzNum = 0, int zyNum = 0, string signID = "", int clientOper = 0);
Task<CossResponse<CossResultData>> GetSignResultAsync(string clientType, string signDataId);
/// <summary>
/// 协同加盖时间戳(参考Demo: createAndGetTssInfo)
/// </summary>
Task<CossResponse<CossResultData>> CreateTssAsync(string clientType, string oriData);
/// <summary>
/// 时间戳验签(参考Demo: verifyTS)
/// </summary>
Task<CossResponse<CossVerifyResultData>> VerifyTssAsync(string clientType, string oriData, string tsResp);
}
}
Loading…
Cancel
Save