- Implemented TelemetryClient to handle event queuing and flushing to the telemetry endpoint. - Created TtfsTelemetryService for emitting specific telemetry events related to TTFS. - Added tests for TelemetryClient to ensure event queuing and flushing functionality. - Introduced models for reachability drift detection, including DriftResult and DriftedSink. - Developed DriftApiService for interacting with the drift detection API. - Updated FirstSignalCardComponent to emit telemetry events on signal appearance. - Enhanced localization support for first signal component with i18n strings.
62 lines
2.2 KiB
C#
62 lines
2.2 KiB
C#
namespace StellaOps.Scanner.Emit.Native;
|
|
|
|
/// <summary>
|
|
/// Metadata for a native binary component.
|
|
/// </summary>
|
|
public sealed record NativeBinaryMetadata
|
|
{
|
|
/// <summary>Binary format (elf, pe, macho)</summary>
|
|
public required string Format { get; init; }
|
|
|
|
/// <summary>Build-ID with prefix (gnu-build-id:..., pe-cv:..., macho-uuid:...)</summary>
|
|
public string? BuildId { get; init; }
|
|
|
|
/// <summary>CPU architecture (x86_64, aarch64, arm, i686, etc.)</summary>
|
|
public string? Architecture { get; init; }
|
|
|
|
/// <summary>Whether this is a 64-bit binary</summary>
|
|
public bool Is64Bit { get; init; }
|
|
|
|
/// <summary>Operating system or platform</summary>
|
|
public string? Platform { get; init; }
|
|
|
|
/// <summary>File path within the container layer</summary>
|
|
public required string FilePath { get; init; }
|
|
|
|
/// <summary>SHA-256 digest of the file</summary>
|
|
public string? FileDigest { get; init; }
|
|
|
|
/// <summary>File size in bytes</summary>
|
|
public long FileSize { get; init; }
|
|
|
|
/// <summary>Container layer digest where this binary was introduced</summary>
|
|
public string? LayerDigest { get; init; }
|
|
|
|
/// <summary>Layer index (0-based)</summary>
|
|
public int LayerIndex { get; init; }
|
|
|
|
/// <summary>Product version from PE version resource</summary>
|
|
public string? ProductVersion { get; init; }
|
|
|
|
/// <summary>File version from PE version resource</summary>
|
|
public string? FileVersion { get; init; }
|
|
|
|
/// <summary>Company name from PE version resource</summary>
|
|
public string? CompanyName { get; init; }
|
|
|
|
/// <summary>Hardening flags (PIE, RELRO, NX, etc.)</summary>
|
|
public IReadOnlyDictionary<string, string>? HardeningFlags { get; init; }
|
|
|
|
/// <summary>Whether the binary is signed</summary>
|
|
public bool IsSigned { get; init; }
|
|
|
|
/// <summary>Signature details (Authenticode, codesign, etc.)</summary>
|
|
public string? SignatureDetails { get; init; }
|
|
|
|
/// <summary>Imported libraries (DLL names for PE, SO names for ELF, dylib names for Mach-O)</summary>
|
|
public IReadOnlyList<string>? Imports { get; init; }
|
|
|
|
/// <summary>Exported symbols (for dependency analysis)</summary>
|
|
public IReadOnlyList<string>? Exports { get; init; }
|
|
}
|