Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Component Class Registries to the Provisioner #892

Merged
merged 2 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion HIRS_Provisioner.NET/hirs/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@
<Target Name="CopyFiles" AfterTargets="DeletePDB">
<ItemGroup>
<PaccorScriptsDll Include="$(OUTDIR)paccor_scripts.dll"/>
<PaccorPcieDll Include="$(OUTDIR)Pcie.dll"/>
<PaccorSmbiosDll Include="$(OUTDIR)Smbios.dll"/>
<PaccorStorageDll Include="$(OUTDIR)Storage.dll"/>
</ItemGroup>
<Copy
SourceFiles="@(PaccorScriptsDll)"
SourceFiles="@(PaccorScriptsDll);@(PaccorPcieDll);@(PaccorSmbiosDll);@(PaccorStorageDll)"
DestinationFolder="$(PublishDir)plugins"
/>
</Target>
Expand Down
22 changes: 13 additions & 9 deletions HIRS_Provisioner.NET/hirs/HIRS_Provisioner.NET.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
<RuntimeIdentifiers>linux-x64;win-x64</RuntimeIdentifiers>
<StartupObject>hirs.Program</StartupObject>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageVersion>3.0.1</PackageVersion>
<PackageVersion>3.0.5</PackageVersion>
<Release></Release>
</PropertyGroup>

Expand All @@ -24,26 +25,29 @@

<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Google.Protobuf" Version="3.20.1" />
<PackageReference Include="Google.Protobuf.Tools" Version="3.20.1">
<PackageReference Include="Google.Protobuf" Version="3.28.3" />
<PackageReference Include="Google.Protobuf.Tools" Version="3.28.3">
<PrivateAssets>all</PrivateAssets> <!-- These assets will be consumed but won't flow to the parent project -->
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Microsoft.TSS" Version="2.1.1" />
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="paccor.HardwareManifestPlugin" Version="1.0.0" />
<PackageReference Include="paccor.HardwareManifestPluginManager" Version="1.0.0" />
<PackageReference Include="paccor.paccor_scripts" Version="1.0.1" />
<PackageReference Include="paccor.HardwareManifestPlugin" Version="2.0.5" />
<PackageReference Include="paccor.HardwareManifestPluginManager" Version="2.0.5" />
<PackageReference Include="paccor.paccor_scripts" Version="2.0.5" />
<PackageReference Include="paccor.pcie" Version="0.5.0" />
<PackageReference Include="paccor.smbios" Version="0.5.0" />
<PackageReference Include="paccor.storage" Version="0.5.0" />
<PackageReference Include="Packaging.Targets" Version="0.1.226">
<PrivateAssets>all</PrivateAssets> <!-- These assets will be consumed but won't flow to the parent project -->
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Serilog" Version="2.11.0" />
<PackageReference Include="Serilog" Version="4.1.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="System.Management" Version="6.0.0" />
<PackageReference Include="System.Management" Version="8.0.0" />
<PackageReference Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageReference Include="WiX" Version="3.14.1">
<PrivateAssets>all</PrivateAssets> <!-- These assets will be consumed but won't flow to the parent project -->
Expand Down Expand Up @@ -81,7 +85,7 @@
<Exec Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))'" Command="for /f %%i in ('dir /s /b $(FOLDER_PROTO)\*.proto') do ( $(protoc) -I=$(FOLDER_PROTO) --csharp_out=$(FOLDER_OUT) %%i )" />
<Exec Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))'" Command="for file in `ls -1R $(FOLDER_PROTO)/*.proto` ; do $(protoc) -I=$(FOLDER_PROTO) --csharp_out=$(FOLDER_OUT) $file; done " />
</Target>
<Import Project="$(NuGetPackageRoot)paccor.paccor_scripts/1.0.1/contentFiles/any/net6.0/resources/paccor.paccor_scripts.targets" Condition="Exists('$(NuGetPackageRoot)paccor.paccor_scripts/1.0.1/contentFiles/any/net6.0/resources/paccor.paccor_scripts.targets')" />
<Import Project="$(NuGetPackageRoot)paccor.paccor_scripts/2.0.5/contentFiles/any/net8.0/resources/paccor.paccor_scripts.targets" Condition="Exists('$(NuGetPackageRoot)paccor.paccor_scripts/2.0.5/contentFiles/any/net8.0/resources/paccor.paccor_scripts.targets')" />
<Target Name="ImportPaccorScripts" BeforeTargets="PreBuildEvent">
<ItemGroup>
<PaccorScriptsLinux Include="$(dotnet_paccor_scripts_directory)/*" />
Expand Down
2 changes: 1 addition & 1 deletion HIRS_Provisioner.NET/hirs/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"certificate_output_directory": "",
"paccor_output_file": "",
"event_log_file": "",
"hardware_manifest_collectors": "paccor_scripts",
"hardware_manifest_collectors": "paccor_scripts,paccor.pcie,paccor.smbios,paccor.storage",

"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
Expand Down
24 changes: 11 additions & 13 deletions HIRS_Provisioner.NET/hirs/src/config/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public virtual string linux_product_serial {
public virtual string certificate_output_directory {
get; private set;
}
private List<IHardwareManifest> hardwareManifests = new();
private List<IHardwareManifestPlugin> hardwareManifests = new();
private Dictionary<string, string> hardware_manifest_collectors_with_args = new();
private bool hardware_manifest_collection_swid_enforced = false;

Expand Down Expand Up @@ -163,7 +163,7 @@ private void ConfigureHardwareManifestManagement() {
List<string> names = hardware_manifest_collectors_with_args.Keys.ToList();
if (!string.IsNullOrWhiteSpace(configFromSettingsFile[Options.hardware_manifest_collection_swid_enforced.ToString()])) {
string hardware_manifest_collection_swid_enforced_str = $"{ configFromSettingsFile[Options.hardware_manifest_collection_swid_enforced.ToString()] }";
hardware_manifest_collection_swid_enforced = Boolean.Parse(hardware_manifest_collection_swid_enforced_str);
hardware_manifest_collection_swid_enforced = bool.Parse(hardware_manifest_collection_swid_enforced_str);
Log.Debug("SWID enforcement of Hardware Manifest Plugins are " + (hardware_manifest_collection_swid_enforced ? "en" : "dis") + "abled in settings.");
}
hardwareManifests = HardwareManifestPluginManagerUtils.LoadPlugins(names, hardware_manifest_collection_swid_enforced);
Expand Down Expand Up @@ -196,23 +196,21 @@ private void CleanHardwareManifestCollectors() {

public virtual string RunHardwareManifestCollectors() {
Log.Debug("Gathering data from loaded hardware manifest collectors.");
string manifestJson = "";
foreach (IHardwareManifest manifest in hardwareManifests) {
HardwareManifestProto.ManifestV2 manifestJson = new();
foreach (IHardwareManifestPlugin manifest in hardwareManifests) {
try {
Log.Debug(" Configuring " + manifest.Name);
if (hardware_manifest_collectors_with_args.ContainsKey(manifest.Name)) {
manifest.Configure(CLI.SplitArgs(hardware_manifest_collectors_with_args[manifest.Name]));
}
// TODO: Combine JSON Better
// OR Return proto objects
Log.Debug(" Gathering from " + manifest.Name);
manifestJson = string.Join(manifestJson, manifest.GatherHardwareManifestAsJsonString());
if (manifest.GatherHardwareIdentifiers()) {
manifestJson.MergeFrom(manifest.ManifestV2);
}
} catch (Exception e) {
Log.Debug($"Problem retrieving hardware manifest from {manifest.Name}.", e.InnerException);
}
}
//TODO: Verify JSON?
return manifestJson;

string manifestString = manifestJson.ToString();
return manifestString;
}
#endregion

Expand Down Expand Up @@ -262,7 +260,7 @@ private void CheckAutoDetectTpm() {
Log.Debug("Checking Auto Detect TPM setting.");
string auto_detect_tpm_str = $"{ configFromSettingsFile[Options.auto_detect_tpm.ToString()] }";
try {
auto_detect_tpm = Boolean.Parse(auto_detect_tpm_str);
auto_detect_tpm = bool.Parse(auto_detect_tpm_str);
Log.Debug(" Auto Detect TPM is " + (auto_detect_tpm ? "en" : "dis") + "abled.");
} catch (FormatException) {
auto_detect_tpm = false;
Expand Down
1 change: 1 addition & 0 deletions HIRS_Provisioner.NET/hirs/src/provisioner/Provisioner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Serilog;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
Expand Down
4 changes: 2 additions & 2 deletions HIRS_Provisioner.NET/hirs/src/tpm/CommandTpm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ public enum Devices {

private readonly Tpm2 tpm;

private readonly Boolean simulator;
private readonly bool simulator;

private List<AuthSession> sessionTracking = new List<AuthSession>();

/**
* For TCP TpmDevices
*/
public CommandTpm(Boolean sim, string ip, int port) {
public CommandTpm(bool sim, string ip, int port) {
simulator = sim;
Tpm2Device tpmDevice = new TcpTpmDevice(ip, port);
tpm = TpmSetupByType(tpmDevice);
Expand Down
Loading