Files
SystemX.Web/Projects/VPKI/VPKI/VPKI.Web.Client/Components/Pages/VPKIApi.razor

274 lines
9.9 KiB
Plaintext

@page "/Vpki/Api"
@using Newtonsoft.Json
@using Org.BouncyCastle.Crypto
@using VPKI.Library.Packet
@using VPKI.Library.Services
@inject CertificateService csrSrvice;
@inject ApiService ApiService;
<h3>VPKI API</h3>
<AuthorizeView Roles="@($"{UserRole.Admin.ToString()},{UserRole.SuperUser.ToString()}")">
<Authorized>
<RadzenFieldset Style="margin-bottom: 10px;" Text="Server Info">
<div style="margin-bottom: 10px;">
<RadzenLabel Style="width: 130px;" Text="Server Address"></RadzenLabel>
<RadzenTextBox Style="margin-right: 10px;" @bind-Value="@ServerAddress"></RadzenTextBox>
<RadzenLabel Style="width: 130px;" Text="Auto Test"></RadzenLabel>
<RadzenCheckBox Style="margin-right: 10px;" @bind-Value="@isAutoRun"></RadzenCheckBox>
</div>
</RadzenFieldset>
<RadzenTabs>
<Tabs>
@foreach (var vpkiType in Enum.GetValues(typeof(VpkiType)))
{
if (DicTbscsrContainer.TryGetValue((VpkiType)vpkiType, out var outTbscsr) == true &&
DicCertificateContainer.TryGetValue((VpkiType)vpkiType, out var outCertificate) == true &&
DicVerifyResultContainer.TryGetValue((VpkiType)vpkiType, out var outVeryfiResult) == true)
{
<RadzenTabsItem Text="@vpkiType.ToString()">
<div @key=@vpkiType>
<!--CSR-->
<VPKIApiTbscsr @ref="@refVPKIApiTbscsr" @bind-TbscsrContainer=@outTbscsr ServerAddress="@ServerAddress"
TbscsrCallback="@TbscsrCallback"/>
<br />
<!--certificate-->
<VPKIApiCertificate @ref="@refVPKIApiCertificate" @bind-CertificateContainer=@outCertificate ServerAddress="@ServerAddress" TbscsrContainer="@outTbscsr" />
<br />
<!--certificate-->
<VPKIApiVerifyResult @bind-VerifyResultContainer=@outVeryfiResult ServerAddress="@ServerAddress" TbscsrContainer="@outTbscsr" />
</div>
</RadzenTabsItem>
}
}
</Tabs>
</RadzenTabs>
<br />
</Authorized>
<NotAuthorized>
<RadzenLabel Text="Not Authorized"></RadzenLabel>
</NotAuthorized>
</AuthorizeView>
@code {
private string ServerAddress = "127.0.0.1:8080";
private bool isAutoRun = false;
Dictionary<VpkiType, TbscsrContainer> DicTbscsrContainer = new Dictionary<VpkiType, TbscsrContainer>();
Dictionary<VpkiType, CertificateContainer> DicCertificateContainer = new Dictionary<VpkiType, CertificateContainer>();
Dictionary<VpkiType, VerifyResultContainer> DicVerifyResultContainer = new Dictionary<VpkiType, VerifyResultContainer>();
VPKIApiTbscsr? refVPKIApiTbscsr;
VPKIApiCertificate? refVPKIApiCertificate;
protected override void OnInitialized()
{
int cnt = 0;
SetDefaultValue();
Task.Run(async() => {
await Task.Delay(3000);
while (true)
{
//tbscsr
await Task.Delay(10000);
if (isAutoRun == false)
continue;
await InvokeAsync(async() => await refVPKIApiTbscsr.OnClickRandomMacaddresss());
await Task.Delay(300);
await InvokeAsync(async() => await refVPKIApiTbscsr.OnClickGenerateKey());
await Task.Delay(300);
await InvokeAsync(async() => await refVPKIApiTbscsr.OnClickGenerateTbscsr());
await Task.Delay(300);
await InvokeAsync(async () => await refVPKIApiTbscsr.OnClickSendTbscsr());
await Task.Delay(10000);
//certificate
await InvokeAsync(async() => await refVPKIApiCertificate.OnClickSignedHash());
await Task.Delay(300);
await InvokeAsync(async() => await refVPKIApiCertificate.OnClickGenerateCertificate());
await Task.Delay(300);
await InvokeAsync(async () => await refVPKIApiCertificate.OnClickSendCertificate());
cnt += 1;
if (cnt >= 10000)
{
break;
}
}
});
}
private void SetDefaultValue()
{
//tbscsr
DicTbscsrContainer.Add(VpkiType.prov_v1, new TbscsrContainer
{
RequestTbscsr = new Request_Tbscsr
{
iftid = "ift_1",
certInfo = new Request_Tbscsr.CertInfo
{
tierCode = "P002",
unitCode = "C001",
dc = "OEM"
},
cnInfo = new Request_Tbscsr.CnInfo
{
idType = "P",
supplierId = "2",
wmi = "KM8",
macaddr = ""
}
},
VpkiType = VpkiType.prov_v1,
ISOType = VpkiIsoType.ISO15118_02
});
DicTbscsrContainer.Add(VpkiType.prov_cert, new TbscsrContainer
{
RequestTbscsr = new Request_Tbscsr
{
iftid = "ift_2",
certInfo = new Request_Tbscsr.CertInfo
{
tierCode = "P002",
unitCode = "C001",
dc = "OEM20"
},
cnInfo = new Request_Tbscsr.CnInfo
{
idType = "P",
supplierId = "2",
wmi = "KM7",
macaddr = ""
},
certType = $"{VpkiType.prov_cert}"
},
VpkiType = VpkiType.prov_cert,
ISOType = VpkiIsoType.ISO15118_20
});
DicTbscsrContainer.Add(VpkiType.vehicle_cert, new TbscsrContainer
{
RequestTbscsr = new Request_Tbscsr
{
iftid = "ift_3",
certInfo = new Request_Tbscsr.CertInfo
{
tierCode = "P002",
unitCode = "C001",
dc = "EV"
},
cnInfo = new Request_Tbscsr.CnInfo
{
idType = "V",
supplierId = "2",
wmi = "KM7",
macaddr = ""
},
certType = $"{VpkiType.vehicle_cert}"
},
VpkiType = VpkiType.vehicle_cert,
ISOType = VpkiIsoType.ISO15118_20
});
//certificate
DicCertificateContainer.Add(VpkiType.prov_v1, new CertificateContainer
{
RequestCertificate = new Request_Certificate
{
iftid = "ift_1",
csrsignature = string.Empty,
tierCode = "P002",
unitCode = "C001",
vehicleCode = "MV EV",
localCode = "EU",
brandCode = "KMC"
}
});
DicCertificateContainer.Add(VpkiType.prov_cert, new CertificateContainer
{
RequestCertificate = new Request_Certificate
{
iftid = "ift_2",
csrsignature = string.Empty,
tierCode = "P002",
unitCode = "C001",
vehicleCode = "MV EV",
localCode = "EU",
brandCode = "KMC"
}
});
DicCertificateContainer.Add(VpkiType.vehicle_cert, new CertificateContainer
{
RequestCertificate = new Request_Certificate
{
iftid = "ift_3",
csrsignature = string.Empty,
tierCode = "P002",
unitCode = "C001",
vehicleCode = "MV EV",
localCode = "EU",
brandCode = "KMC"
}
});
DicVerifyResultContainer.Add(VpkiType.prov_v1, new VerifyResultContainer
{
RequestVerifyresult = new Request_Verifyresult
{
iftid = "ift_1",
pcid = "",
result = "success"
}
});
DicVerifyResultContainer.Add(VpkiType.prov_cert, new VerifyResultContainer
{
RequestVerifyresult = new Request_Verifyresult
{
iftid = "ift_2",
pcid = "",
result = "success"
}
});
DicVerifyResultContainer.Add(VpkiType.vehicle_cert, new VerifyResultContainer
{
RequestVerifyresult = new Request_Verifyresult
{
iftid = "ift_3",
pcid = "",
result = "success"
}
});
}
private async Task TbscsrCallback(TbscsrContainer args)
{
if (DicCertificateContainer.TryGetValue(args.VpkiType, out var outCertificate) == true)
{
outCertificate.RequestCertificate.iftid = args.RequestTbscsr.iftid;
outCertificate.RequestCertificate.tierCode = args.RequestTbscsr.certInfo.tierCode;
outCertificate.RequestCertificate.unitCode = args.RequestTbscsr.certInfo.unitCode;
outCertificate.RequestCertificate.csrsignature = args.ResponseTbscsr.data.hashedtbscsr;
}
if (DicVerifyResultContainer.TryGetValue(args.VpkiType, out var outVerifyResult) == true)
{
outVerifyResult.RequestVerifyresult.iftid = args.RequestTbscsr.iftid;
outVerifyResult.RequestVerifyresult.pcid = args.ResponseTbscsr.data.pcid;
}
await Task.CompletedTask;
}
}