namespace StellaOps.Feedser.BinaryAnalysis;
using StellaOps.Feedser.BinaryAnalysis.Models;
///
/// Interface for extracting binary fingerprints from compiled artifacts.
///
public interface IBinaryFingerprinter
{
///
/// Fingerprinting method this implementation provides.
///
FingerprintMethod Method { get; }
///
/// Extract fingerprint from binary file.
///
/// Path to binary file.
/// Associated CVE ID.
/// Optional function name to fingerprint.
/// Cancellation token.
/// Binary fingerprint.
Task ExtractAsync(
string binaryPath,
string? cveId,
string? targetFunction = null,
CancellationToken cancellationToken = default);
///
/// Extract fingerprint from binary bytes.
///
/// Binary data.
/// Binary name for identification.
/// Associated CVE ID.
/// Optional function name to fingerprint.
/// Cancellation token.
/// Binary fingerprint.
Task ExtractAsync(
ReadOnlyMemory binaryData,
string binaryName,
string? cveId,
string? targetFunction = null,
CancellationToken cancellationToken = default);
///
/// Match candidate binary against known fingerprint.
///
/// Path to candidate binary.
/// Known fingerprint to match against.
/// Cancellation token.
/// Match result.
Task MatchAsync(
string candidatePath,
BinaryFingerprint knownFingerprint,
CancellationToken cancellationToken = default);
///
/// Match candidate binary bytes against known fingerprint.
///
/// Candidate binary data.
/// Known fingerprint to match against.
/// Cancellation token.
/// Match result.
Task MatchAsync(
ReadOnlyMemory candidateData,
BinaryFingerprint knownFingerprint,
CancellationToken cancellationToken = default);
}