// -----------------------------------------------------------------------------
// ValidationServiceCollectionExtensions.cs
// Sprint: SPRINT_20260118_031_LIB_input_pinning_trusted_vex_keys
// Task: TASK-031-006 - Implement Adversarial Input Validation
// Description: DI registration for adversarial validation services
// -----------------------------------------------------------------------------
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace StellaOps.DeltaVerdict.Validation;
///
/// Extension methods for registering adversarial validation services.
///
public static class ValidationServiceCollectionExtensions
{
///
/// Adds adversarial input validation to the service collection.
///
/// The service collection.
/// Optional configuration.
/// The service collection for chaining.
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
IConfiguration? configuration = null)
{
if (configuration != null)
{
services.Configure(
configuration.GetSection(AdversarialValidationPolicy.SectionName));
}
services.AddSingleton();
return services;
}
///
/// Adds adversarial input validation with custom policy.
///
/// The service collection.
/// Policy configuration delegate.
/// The service collection for chaining.
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
Action configurePolicy)
{
services.Configure(configurePolicy);
services.AddSingleton();
return services;
}
///
/// Adds adversarial input validation with a predefined policy.
///
/// The service collection.
/// The validation policy to use.
/// The service collection for chaining.
public static IServiceCollection AddAdversarialInputValidation(
this IServiceCollection services,
AdversarialValidationPolicy policy)
{
services.AddSingleton(Microsoft.Extensions.Options.Options.Create(policy));
services.AddSingleton();
return services;
}
}