274 lines
9.9 KiB
Plaintext
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;
|
|
}
|
|
}
|