|
|
|
@ -90,10 +90,33 @@ namespace CA_Platform_Linker.Services |
|
|
|
|
|
|
|
|
|
|
|
if (result.status == "200") |
|
|
|
if (result.status == "200") |
|
|
|
{ |
|
|
|
{ |
|
|
|
_ = Task.Run(() => |
|
|
|
_ = Task.Run(async () => |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
string tsData = ""; |
|
|
|
try |
|
|
|
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 clientConfig = ConfigHelper.GetCossClientConfig(clientType); |
|
|
|
var (operCode, operName) = SqlHelper.GetOperatorInfo(userId); |
|
|
|
var (operCode, operName) = SqlHelper.GetOperatorInfo(userId); |
|
|
|
var signInfo = new SignInfo |
|
|
|
var signInfo = new SignInfo |
|
|
|
@ -106,10 +129,10 @@ namespace CA_Platform_Linker.Services |
|
|
|
OperCode = operCode ?? "", |
|
|
|
OperCode = operCode ?? "", |
|
|
|
OperName = operName ?? "", |
|
|
|
OperName = operName ?? "", |
|
|
|
SignDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
|
|
|
SignDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
|
|
|
CertID = "", |
|
|
|
CertID = result.data.msspId ?? "", |
|
|
|
OperCert = result.data.signCert, |
|
|
|
OperCert = result.data.signCert, |
|
|
|
SignData = result.data.signResult, |
|
|
|
SignData = result.data.signResult, |
|
|
|
TSData = "", |
|
|
|
TSData = tsData, |
|
|
|
SignID = signID, |
|
|
|
SignID = signID, |
|
|
|
OperType = clientType + "自动签名", |
|
|
|
OperType = clientType + "自动签名", |
|
|
|
SignWay = 1 |
|
|
|
SignWay = 1 |
|
|
|
@ -120,7 +143,7 @@ namespace CA_Platform_Linker.Services |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
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 |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |