new advisories work and features gaps work
This commit is contained in:
@@ -20,6 +20,8 @@ public sealed class EvidenceBundleAdapter : EvidenceAdapterBase, IEvidenceAdapte
|
||||
public const string CallStack = "callstack/v1";
|
||||
public const string Diff = "diff/v1";
|
||||
public const string GraphRevision = "graph-revision/v1";
|
||||
// Sprint: SPRINT_20260112_008_LB_binary_diff_evidence_models (BINDIFF-LB-003)
|
||||
public const string BinaryDiff = "binary-diff/v1";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -76,6 +78,13 @@ public sealed class EvidenceBundleAdapter : EvidenceAdapterBase, IEvidenceAdapte
|
||||
results.Add(ConvertGraphRevision(bundle.GraphRevision, subjectNodeId, provenance));
|
||||
}
|
||||
|
||||
// Sprint: SPRINT_20260112_008_LB_binary_diff_evidence_models (BINDIFF-LB-003)
|
||||
// Convert binary diff evidence
|
||||
if (bundle.BinaryDiff is { Status: EvidenceStatus.Available })
|
||||
{
|
||||
results.Add(ConvertBinaryDiff(bundle.BinaryDiff, subjectNodeId, provenance));
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
@@ -215,6 +224,32 @@ public sealed class EvidenceBundleAdapter : EvidenceAdapterBase, IEvidenceAdapte
|
||||
return CreateEvidence(subjectNodeId, EvidenceType.Dependency, payload, provenance, SchemaVersions.GraphRevision);
|
||||
}
|
||||
|
||||
// Sprint: SPRINT_20260112_008_LB_binary_diff_evidence_models (BINDIFF-LB-003)
|
||||
private static IEvidence ConvertBinaryDiff(
|
||||
BinaryDiffEvidence binaryDiff,
|
||||
string subjectNodeId,
|
||||
EvidenceProvenance provenance)
|
||||
{
|
||||
var payload = new BinaryDiffPayload
|
||||
{
|
||||
Hash = binaryDiff.Hash,
|
||||
DiffType = binaryDiff.DiffType.ToString(),
|
||||
PreviousBinaryDigest = binaryDiff.PreviousBinaryDigest,
|
||||
CurrentBinaryDigest = binaryDiff.CurrentBinaryDigest,
|
||||
BinaryFormat = binaryDiff.BinaryFormat,
|
||||
ToolVersion = binaryDiff.ToolVersion,
|
||||
SimilarityScore = binaryDiff.SimilarityScore,
|
||||
FunctionChangeCount = binaryDiff.FunctionChanges.Length,
|
||||
SymbolChangeCount = binaryDiff.SymbolChanges.Length,
|
||||
SectionChangeCount = binaryDiff.SectionChanges.Length,
|
||||
SecurityChangeCount = binaryDiff.SecurityChanges.Length,
|
||||
HasSemanticDiff = binaryDiff.SemanticDiff is not null,
|
||||
SemanticSimilarity = binaryDiff.SemanticDiff?.Similarity
|
||||
};
|
||||
|
||||
return CreateEvidence(subjectNodeId, EvidenceType.Artifact, payload, provenance, SchemaVersions.BinaryDiff);
|
||||
}
|
||||
|
||||
#region Payload Records
|
||||
|
||||
internal sealed record ReachabilityPayload
|
||||
@@ -313,5 +348,23 @@ public sealed class EvidenceBundleAdapter : EvidenceAdapterBase, IEvidenceAdapte
|
||||
public int? EdgeCount { get; init; }
|
||||
}
|
||||
|
||||
// Sprint: SPRINT_20260112_008_LB_binary_diff_evidence_models (BINDIFF-LB-003)
|
||||
internal sealed record BinaryDiffPayload
|
||||
{
|
||||
public string? Hash { get; init; }
|
||||
public string? DiffType { get; init; }
|
||||
public string? PreviousBinaryDigest { get; init; }
|
||||
public string? CurrentBinaryDigest { get; init; }
|
||||
public string? BinaryFormat { get; init; }
|
||||
public string? ToolVersion { get; init; }
|
||||
public double? SimilarityScore { get; init; }
|
||||
public int FunctionChangeCount { get; init; }
|
||||
public int SymbolChangeCount { get; init; }
|
||||
public int SectionChangeCount { get; init; }
|
||||
public int SecurityChangeCount { get; init; }
|
||||
public bool HasSemanticDiff { get; init; }
|
||||
public double? SemanticSimilarity { get; init; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user