c899cb162c
Renames the 13 SCADALINK_* runtime env vars → SCADABRIDGE_*, the ScadaLink__ .NET config keys → ScadaBridge__, the stale ScadaLink.Host.exe assembly name → ZB.MOM.WW.ScadaBridge.Host.exe, the scadalink_app SQL login → scadabridge_app, and residual identifiers/comments/docs. Migration records (prior rename tooling/design, DB-rename helper, this scrub script) carved out. Adds tools/scrub-scadalink-refs.sh.
60 lines
2.7 KiB
C#
60 lines
2.7 KiB
C#
using System.Security.Cryptography;
|
|
using ZB.MOM.WW.ScadaBridge.Commons.Types.Transport;
|
|
|
|
namespace ZB.MOM.WW.ScadaBridge.Transport.Serialization;
|
|
|
|
/// <summary>
|
|
/// Builds a <see cref="BundleManifest"/> for a freshly serialized bundle.
|
|
/// Stamps the current format/schema version, captures the SHA-256 hash of the
|
|
/// raw (post-encryption) content bytes, and copies through the supplied summary
|
|
/// and content entries verbatim.
|
|
/// </summary>
|
|
public sealed class ManifestBuilder
|
|
{
|
|
public const int CurrentBundleFormatVersion = 1;
|
|
public const string CurrentSchemaVersion = "1.0";
|
|
|
|
/// <summary>
|
|
/// Builds a <see cref="BundleManifest"/> with the current format version, a SHA-256 content hash,
|
|
/// and all supplied metadata.
|
|
/// </summary>
|
|
/// <param name="sourceEnvironment">Environment label identifying where the bundle was exported from.</param>
|
|
/// <param name="exportedBy">Username of the operator who performed the export.</param>
|
|
/// <param name="scadaBridgeVersion">ScadaBridge version string stamped in the manifest.</param>
|
|
/// <param name="encryption">Encryption metadata when the content is encrypted; null for plain bundles.</param>
|
|
/// <param name="summary">High-level summary of artifact counts.</param>
|
|
/// <param name="contents">Per-entry content table describing each artifact in the bundle.</param>
|
|
/// <param name="contentBytes">Raw content bytes whose SHA-256 hash is computed and stamped.</param>
|
|
/// <returns>A fully populated <see cref="BundleManifest"/>.</returns>
|
|
public BundleManifest Build(
|
|
string sourceEnvironment,
|
|
string exportedBy,
|
|
string scadaBridgeVersion,
|
|
EncryptionMetadata? encryption,
|
|
BundleSummary summary,
|
|
IReadOnlyList<ManifestContentEntry> contents,
|
|
byte[] contentBytes)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(sourceEnvironment);
|
|
ArgumentNullException.ThrowIfNull(exportedBy);
|
|
ArgumentNullException.ThrowIfNull(scadaBridgeVersion);
|
|
ArgumentNullException.ThrowIfNull(summary);
|
|
ArgumentNullException.ThrowIfNull(contents);
|
|
ArgumentNullException.ThrowIfNull(contentBytes);
|
|
|
|
var contentHash = "sha256:" + Convert.ToHexString(SHA256.HashData(contentBytes)).ToLowerInvariant();
|
|
|
|
return new BundleManifest(
|
|
BundleFormatVersion: CurrentBundleFormatVersion,
|
|
SchemaVersion: CurrentSchemaVersion,
|
|
CreatedAtUtc: DateTimeOffset.UtcNow,
|
|
SourceEnvironment: sourceEnvironment,
|
|
ExportedBy: exportedBy,
|
|
ScadaBridgeVersion: scadaBridgeVersion,
|
|
ContentHash: contentHash,
|
|
Encryption: encryption,
|
|
Summary: summary,
|
|
Contents: contents);
|
|
}
|
|
}
|