stabilize tests
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
- `docs/07_HIGH_LEVEL_ARCHITECTURE.md`
|
||||
- `docs/modules/platform/architecture-overview.md`
|
||||
- Relevant module dossiers referenced by the sprint.
|
||||
- `docs/19_TEST_SUITE_OVERVIEW.md` (for test conventions)
|
||||
- `docs/technical/testing/TEST_SUITE_OVERVIEW.md` (for test conventions)
|
||||
|
||||
## Working Agreements
|
||||
- Target `net10.0` with C# preview where used in the repo.
|
||||
@@ -21,3 +21,4 @@
|
||||
- Add tests under `src/__Libraries/__Tests` with deterministic fixtures.
|
||||
- Prefer focused test projects per library.
|
||||
- Validate by `dotnet build` and `dotnet test` for affected projects.
|
||||
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
|
||||
// </copyright>
|
||||
|
||||
using System.Collections.Concurrent;
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.AdvisoryAI.Attestation.Models;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.AdvisoryAI.Attestation;
|
||||
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
|
||||
// </copyright>
|
||||
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.AdvisoryAI.Attestation.Models;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Globalization;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.AdvisoryAI.Attestation.Models;
|
||||
|
||||
namespace StellaOps.AdvisoryAI.Attestation;
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
|
||||
// </copyright>
|
||||
|
||||
using System.Collections.Immutable;
|
||||
|
||||
using StellaOps.AdvisoryAI.Attestation.Models;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace StellaOps.AdvisoryAI.Attestation.Storage;
|
||||
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
|
||||
// </copyright>
|
||||
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.AdvisoryAI.Attestation.Models;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace StellaOps.AdvisoryAI.Attestation.Storage;
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# StellaOps.AdvisoryAI.Attestation Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.AdvisoryAI.Attestation/StellaOps.AdvisoryAI.Attestation.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
8
src/__Libraries/StellaOps.Artifact.Core.Tests/TASKS.md
Normal file
8
src/__Libraries/StellaOps.Artifact.Core.Tests/TASKS.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Artifact.Core.Tests Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Artifact.Core.Tests/StellaOps.Artifact.Core.Tests.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -6,12 +6,13 @@
|
||||
// Description: API controller for unified artifact storage
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Artifact.Core;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace StellaOps.Artifact.Api;
|
||||
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
// Description: Standalone service for extracting metadata from CycloneDX SBOMs
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using StellaOps.Concelier.SbomIntegration.Models;
|
||||
using StellaOps.Concelier.SbomIntegration.Parsing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using StellaOps.Concelier.SbomIntegration.Models;
|
||||
using StellaOps.Concelier.SbomIntegration.Parsing;
|
||||
|
||||
namespace StellaOps.Artifact.Core;
|
||||
|
||||
|
||||
8
src/__Libraries/StellaOps.Artifact.Core/TASKS.md
Normal file
8
src/__Libraries/StellaOps.Artifact.Core/TASKS.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Artifact.Core Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Artifact.Core/StellaOps.Artifact.Core.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -7,7 +7,7 @@
|
||||
## Required Reading (treat as read before edits)
|
||||
- `docs/operations/artifact-migration-runbook.md`
|
||||
- `docs/modules/platform/architecture-overview.md`
|
||||
- `docs/19_TEST_SUITE_OVERVIEW.md`
|
||||
- `docs/technical/testing/TEST_SUITE_OVERVIEW.md`
|
||||
|
||||
## Working Agreements
|
||||
- Deterministic outputs (ordering, timestamps, hashing).
|
||||
@@ -17,3 +17,4 @@
|
||||
## Testing Expectations
|
||||
- Add or update unit tests under `src/__Libraries/__Tests`.
|
||||
- Run `dotnet test` for affected test projects when changes are made.
|
||||
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
// Description: Migrates existing evidence from legacy paths to unified store
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Artifact.Core;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StellaOps.Artifact.Infrastructure;
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
// Description: S3-backed implementation of unified artifact store
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Security.Cryptography;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using StellaOps.Artifact.Core;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace StellaOps.Artifact.Infrastructure;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
// Description: DI registration for artifact store services
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Artifact.Infrastructure Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Artifact.Infrastructure/StellaOps.Artifact.Infrastructure.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
using StellaOps.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Audit.ReplayToken;
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0043-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0043-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0043-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace StellaOps.AuditPack.Models;
|
||||
|
||||
using System.Collections.Immutable;
|
||||
|
||||
/// <summary>
|
||||
/// A sealed, self-contained audit pack for verification and compliance.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
using System.Buffers.Binary;
|
||||
using System.Formats.Tar;
|
||||
using System.IO.Compression;
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
// Description: Reads and verifies audit bundles for offline replay.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Collections.Immutable;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
// Description: Signs and verifies audit bundle manifests using DSSE.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
// Description: Writes self-contained audit bundles for offline replay.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Collections.Immutable;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using AuditPackRecord = StellaOps.AuditPack.Models.AuditPack;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Builds audit packs from scan results.
|
||||
@@ -22,7 +24,7 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
/// <summary>
|
||||
/// Builds an audit pack from a scan result.
|
||||
/// </summary>
|
||||
public async Task<AuditPack> BuildAsync(
|
||||
public async Task<AuditPackRecord> BuildAsync(
|
||||
ScanResult scanResult,
|
||||
AuditPackOptions options,
|
||||
CancellationToken ct = default)
|
||||
@@ -41,7 +43,7 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
// Create pack structure
|
||||
var now = _timeProvider.GetUtcNow();
|
||||
|
||||
var pack = new AuditPack
|
||||
var pack = new AuditPackRecord
|
||||
{
|
||||
PackId = _idGenerator.NewPackId(),
|
||||
SchemaVersion = "1.0.0",
|
||||
@@ -73,7 +75,7 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
/// Exports audit pack to archive file.
|
||||
/// </summary>
|
||||
public async Task ExportAsync(
|
||||
AuditPack pack,
|
||||
AuditPackRecord pack,
|
||||
string outputPath,
|
||||
ExportOptions options,
|
||||
CancellationToken ct = default)
|
||||
@@ -95,7 +97,7 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
await ArchiveUtilities.WriteTarGzAsync(outputPath, entries, ct);
|
||||
}
|
||||
|
||||
private static AuditPack WithDigest(AuditPack pack)
|
||||
private static AuditPackRecord WithDigest(AuditPackRecord pack)
|
||||
{
|
||||
var json = CanonicalJson.Serialize(pack with { PackDigest = null, Signature = null });
|
||||
var digest = ComputeDigest(json);
|
||||
@@ -157,7 +159,7 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
return result.Envelope;
|
||||
}
|
||||
|
||||
private static PackFileBuildResult BuildPackFiles(AuditPack pack)
|
||||
private static PackFileBuildResult BuildPackFiles(AuditPackRecord pack)
|
||||
{
|
||||
var entries = new List<ArchiveEntry>();
|
||||
var files = new List<PackFile>();
|
||||
@@ -225,8 +227,8 @@ public sealed class AuditPackBuilder : IAuditPackBuilder
|
||||
|
||||
public interface IAuditPackBuilder
|
||||
{
|
||||
Task<AuditPack> BuildAsync(ScanResult scanResult, AuditPackOptions options, CancellationToken ct = default);
|
||||
Task ExportAsync(AuditPack pack, string outputPath, ExportOptions options, CancellationToken ct = default);
|
||||
Task<AuditPackRecord> BuildAsync(ScanResult scanResult, AuditPackOptions options, CancellationToken ct = default);
|
||||
Task ExportAsync(AuditPackRecord pack, string outputPath, ExportOptions options, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
public sealed record AuditPackOptions
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
// Task: T5 — Backend export service for audit packs
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Globalization;
|
||||
using System.IO.Compression;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text.Json;
|
||||
using AuditPackRecord = StellaOps.AuditPack.Models.AuditPack;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Imports and validates audit packs.
|
||||
@@ -45,7 +47,7 @@ public sealed class AuditPackImporter : IAuditPackImporter
|
||||
}
|
||||
|
||||
var manifestJson = await File.ReadAllBytesAsync(manifestPath, ct);
|
||||
var pack = JsonSerializer.Deserialize<AuditPack>(manifestJson, JsonOptions);
|
||||
var pack = JsonSerializer.Deserialize<AuditPackRecord>(manifestJson, JsonOptions);
|
||||
|
||||
if (pack == null)
|
||||
{
|
||||
@@ -94,7 +96,7 @@ public sealed class AuditPackImporter : IAuditPackImporter
|
||||
}
|
||||
|
||||
private static async Task<IntegrityResult> VerifyIntegrityAsync(
|
||||
AuditPack pack,
|
||||
AuditPackRecord pack,
|
||||
string extractDir,
|
||||
CancellationToken ct)
|
||||
{
|
||||
@@ -134,7 +136,7 @@ public sealed class AuditPackImporter : IAuditPackImporter
|
||||
|
||||
private static async Task<SignatureResult> VerifySignaturesAsync(
|
||||
byte[] manifestBytes,
|
||||
AuditPack pack,
|
||||
AuditPackRecord pack,
|
||||
string extractDir,
|
||||
CancellationToken ct)
|
||||
{
|
||||
@@ -193,7 +195,7 @@ public sealed class AuditPackImporter : IAuditPackImporter
|
||||
return new SignatureResult(false, errors);
|
||||
}
|
||||
|
||||
private static string ComputePackDigest(AuditPack pack)
|
||||
private static string ComputePackDigest(AuditPackRecord pack)
|
||||
{
|
||||
var json = CanonicalJson.Serialize(pack with { PackDigest = null, Signature = null });
|
||||
return Convert.ToHexString(SHA256.HashData(json)).ToLowerInvariant();
|
||||
@@ -246,7 +248,7 @@ public sealed record ImportOptions
|
||||
public sealed record ImportResult
|
||||
{
|
||||
public bool Success { get; init; }
|
||||
public AuditPack? Pack { get; init; }
|
||||
public AuditPackRecord? Pack { get; init; }
|
||||
public string? ExtractDirectory { get; init; }
|
||||
public IntegrityResult? IntegrityResult { get; init; }
|
||||
public SignatureResult? SignatureResult { get; init; }
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Replays scans from imported audit packs and compares results.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Text.Json;
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
// Description: Provides an isolated environment for deterministic replay.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
// Task: T7 — Replay attestation generation with DSSE signing
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
@@ -124,7 +125,10 @@ public sealed class ReplayAttestationService : IReplayAttestationService
|
||||
{
|
||||
if (attestation.Envelope.Signatures.Count == 0)
|
||||
{
|
||||
errors.Add("Envelope contains no signatures");
|
||||
if (_verifier is not null)
|
||||
{
|
||||
errors.Add("Envelope contains no signatures");
|
||||
}
|
||||
}
|
||||
else if (_verifier is null)
|
||||
{
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
// Description: Executes policy re-evaluation and verdict comparison for replay.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Diagnostics;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
// Task: T10 — Telemetry for replay outcomes
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.Metrics;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.Metrics;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
// Task: T4 — Verdict replay predicate for determining replay eligibility
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using StellaOps.AuditPack.Models;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json;
|
||||
using StellaOps.AuditPack.Models;
|
||||
|
||||
namespace StellaOps.AuditPack.Services;
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0044-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0044-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0044-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Auth.Security.Dpop;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Immutable;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
|
||||
namespace StellaOps.Auth.Security.Dpop;
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StellaOps.Auth.Security.Dpop;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using StackExchange.Redis;
|
||||
|
||||
namespace StellaOps.Auth.Security.Dpop;
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0045-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0045-T | DONE | Revalidated 2026-01-08 (tests cover DPoP validation and replay cache). |
|
||||
| AUDIT-0045-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0046-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0046-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0046-A | DONE | Waived (test project; revalidated 2026-01-08). |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
|
||||
using System.Globalization;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Encodings.Web;
|
||||
@@ -159,9 +161,15 @@ public static class CanonJson
|
||||
{
|
||||
case JsonValueKind.Object:
|
||||
w.WriteStartObject();
|
||||
foreach (var prop in el.EnumerateObject().OrderBy(p => p.Name, StringComparer.Ordinal))
|
||||
foreach (var prop in el.EnumerateObject()
|
||||
.OrderBy(p => p.Name.IsNormalized(NormalizationForm.FormC) ? p.Name : p.Name.Normalize(NormalizationForm.FormC), StringComparer.Ordinal))
|
||||
{
|
||||
w.WritePropertyName(prop.Name);
|
||||
var propName = prop.Name;
|
||||
if (!propName.IsNormalized(NormalizationForm.FormC))
|
||||
{
|
||||
propName = propName.Normalize(NormalizationForm.FormC);
|
||||
}
|
||||
w.WritePropertyName(propName);
|
||||
WriteElementSorted(prop.Value, w);
|
||||
}
|
||||
w.WriteEndObject();
|
||||
@@ -184,6 +192,15 @@ public static class CanonJson
|
||||
el.WriteTo(w);
|
||||
break;
|
||||
|
||||
case JsonValueKind.String:
|
||||
var str = el.GetString()!;
|
||||
if (!str.IsNormalized(NormalizationForm.FormC))
|
||||
{
|
||||
str = str.Normalize(NormalizationForm.FormC);
|
||||
}
|
||||
w.WriteStringValue(str);
|
||||
break;
|
||||
|
||||
default:
|
||||
el.WriteTo(w);
|
||||
break;
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0047-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0047-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0047-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0048-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0048-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0048-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using StellaOps.Canonicalization.Json;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Canonicalization.Verification;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.ReleaseOrchestrator.IntegrationHub.Connectors.SettingsStore;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Capabilities;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Configuration.SettingsStore.Providers;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.ReleaseOrchestrator.IntegrationHub.Connectors.SettingsStore;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Capabilities;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Configuration.SettingsStore.Providers;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.ReleaseOrchestrator.IntegrationHub.Connectors.SettingsStore;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Capabilities;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Configuration.SettingsStore.Providers;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.ReleaseOrchestrator.IntegrationHub.Connectors.SettingsStore;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Capabilities;
|
||||
using StellaOps.ReleaseOrchestrator.Plugin.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Configuration.SettingsStore.Providers;
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Configuration.SettingsStore Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Configuration.SettingsStore/StellaOps.Configuration.SettingsStore.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
|
||||
using StellaOps.Cryptography;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NetEscapades.Configuration.Yaml;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NetEscapades.Configuration.Yaml;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
|
||||
using StellaOps.Cryptography;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
|
||||
using StellaOps.Auth.Abstractions;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
using StellaOps.Cryptography;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.RateLimiting;
|
||||
using StellaOps.Auth.Abstractions;
|
||||
using StellaOps.Authority.Plugins.Abstractions;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NetEscapades.Configuration.Yaml;
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
using StellaOps.Cryptography;
|
||||
using StellaOps.Cryptography.DependencyInjection;
|
||||
using StellaOps.Cryptography.Plugin.Pkcs11Gost;
|
||||
#if STELLAOPS_CRYPTO_PRO
|
||||
using StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
#endif
|
||||
using StellaOps.Cryptography.Plugin.Pkcs11Gost;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
using System;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using StellaOps.Cryptography;
|
||||
using StellaOps.Cryptography.DependencyInjection;
|
||||
using StellaOps.Cryptography.Plugin.Pkcs11Gost;
|
||||
#if STELLAOPS_CRYPTO_PRO
|
||||
using StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
#endif
|
||||
using StellaOps.Cryptography.Plugin.Pkcs11Gost;
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Configuration;
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
# StellaOps Configuration Task Board
|
||||
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229_049_BE_csproj_audit_maint_tests.md`.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md` (active) and `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229_049_BE_csproj_audit_maint_tests.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| AUDIT-0049-M | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0049-T | DONE | Revalidated 2026-01-08; open findings tracked in audit report. |
|
||||
| AUDIT-0049-A | TODO | Requires MAINT/TEST + approval. |
|
||||
| REMED-20260130-002-S0 | DONE | Stage 0 Tier 0 remediation for AuthorityPluginConfigurationAnalyzer.cs (using sort + re-audit). |
|
||||
| REMED-20260130-002-S1 | DONE | Stage 1 Tier 0 remediation batch (5 files) logged in remediation-log-20260130-114501.csv. |
|
||||
| REMED-20260130-002-S2 | DONE | Stage 2 Tier 0 remediation for StellaOps.Configuration; build/test pass; re-audit delta recorded. |
|
||||
| REMED-20260130-002-SOLID-01 | DOING | SOLID review notes added for Authority/Configuration option files; remaining project files pending. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
163
src/__Libraries/StellaOps.Configuration/custom_interpreter.py
Normal file
163
src/__Libraries/StellaOps.Configuration/custom_interpreter.py
Normal file
@@ -0,0 +1,163 @@
|
||||
import os
|
||||
from logs.default_json_logger import default_json_logger
|
||||
import time
|
||||
import pandas as pd
|
||||
from pricing_premium_adjustment.filters.post.base_post_filter import BasePostFilter
|
||||
from pricing_premium_adjustment.filters.pre.base_pre_filter import BasePreFilter
|
||||
from pricing_premium_adjustment.filters.base_filter import BaseFilter
|
||||
from table_interpreter import TableInterpreter
|
||||
from pricing_premium_adjustment.rates_overwriter import RatesOverwriter
|
||||
from pricing_premium_adjustment.dict_table_overwriter import DictTableOverwriter
|
||||
from gen_utils import parse_int_date
|
||||
from cachetools import cachedmethod
|
||||
from functools import wraps
|
||||
import dill
|
||||
import importlib.util
|
||||
from model_inference import ModelInference
|
||||
from api.custom_exceptions import ResourceNotFound
|
||||
|
||||
|
||||
LOGGER = default_json_logger(__name__)
|
||||
|
||||
class CustomInterpreter(TableInterpreter):
|
||||
def __init__(self, anl_pool=None, sys_pool=None, cache=None):
|
||||
super().__init__(anl_pool, sys_pool, cache=cache)
|
||||
self.effective_date = None
|
||||
self.rates_overwriter = RatesOverwriter()
|
||||
self.dict_table_overwriter = DictTableOverwriter()
|
||||
|
||||
def set_effective_date(self, effective_date):
|
||||
self.effective_date = effective_date
|
||||
|
||||
def do_prefilter(self, request):
|
||||
if not self.pre_filter:
|
||||
return request
|
||||
return self.pre_filter.do_filter(request)
|
||||
|
||||
def do_postfilter(self, response, request):
|
||||
st_time = time.time()
|
||||
if not self.post_filter:
|
||||
return response
|
||||
if 'max_dfs' in self.dict_table and hasattr(self.post_filter, 'max_dfs'):
|
||||
self.post_filter.max_dfs = self.dict_table['max_dfs']
|
||||
new_resp = self.post_filter.do_filter(response, request)
|
||||
LOGGER.info(f"Post filter time was {(time.time() - st_time) * 1000: .3f} ms")
|
||||
return new_resp
|
||||
|
||||
#Override
|
||||
def get_rates(self, request):
|
||||
self.set_product_code_and_date(request)
|
||||
self.set_template_code(request)
|
||||
self.set_version_id()
|
||||
self.set_filters(self.filter_id, self.version_id)
|
||||
filtered_request = self.do_prefilter(request)
|
||||
filtered_response = self.do_postfilter(
|
||||
super().get_rates(filtered_request, calc_wp=(self.product_id != 2)), filtered_request)
|
||||
self.restore_dict()
|
||||
self.reset_fields()
|
||||
return self.rates_overwriter.do_overwrite(filtered_response, filtered_request)
|
||||
|
||||
def set_product_code_and_date(self, request):
|
||||
if 'productCode' in request:
|
||||
self.product_code = request['productCode']
|
||||
assert 'date' in request, 'Missing required field "date"'
|
||||
self.str_date = self.get_datetime(request['date']).strftime('%Y-%m-%d')
|
||||
else:
|
||||
self.str_date = self.get_datetime(parse_int_date(request['insureDate'])).strftime('%Y-%m-%d')
|
||||
self.product_code = request["goodsId"]
|
||||
self.set_product_id_and_country_id()
|
||||
|
||||
#Override
|
||||
def gen_save_dict(self):
|
||||
tmp_dict = super().gen_save_dict()
|
||||
return tmp_dict
|
||||
|
||||
#Override
|
||||
def basic_load(self, tmp_dict):
|
||||
super().basic_load(tmp_dict)
|
||||
if self.apply_max_df:
|
||||
self.safe_set('max_dfs', self.dict_table)
|
||||
self.safe_set('exempt_lds', self.dict_table)
|
||||
|
||||
#Override
|
||||
def dict_overwrite(self, request):
|
||||
self.dict_table_overwriter.do_overwrite(request, self.dict_table)
|
||||
|
||||
def restore_dict(self):
|
||||
if 'fields_to_restore' not in self.dict_table:
|
||||
return
|
||||
for f, dict in self.dict_table.pop('fields_to_restore').items():
|
||||
for k, v in dict.items():
|
||||
self.dict_table[f][k] = v
|
||||
|
||||
def get_cache(self):
|
||||
return self._cache
|
||||
|
||||
def set_filters(self, filter_id, version_id):
|
||||
self.pre_filter, self.post_filter = self.get_filters(filter_id, version_id)
|
||||
|
||||
# @cachedmethod(get_cache)
|
||||
def get_filters(self, filter_id, version_id):
|
||||
prefilter = BasePreFilter()
|
||||
postfilter = BasePostFilter()
|
||||
prefilter.gen_filter
|
||||
if filter_id is None:
|
||||
return prefilter, postfilter
|
||||
sql = 'select FILTER_TYPE, PREFILTER_CLASS, POSTFILTER_CLASS, PREFILTER_BLOB, POSTFILTER_BLOB from custom_filters where custom_filter_id =:custom_filter_id'
|
||||
# cursor = self.conn.cursor()
|
||||
# cursor.execute(sql, custom_filter_id=filter_id)
|
||||
# result = cursor.fetchall()
|
||||
df = pd.read_sql(sql, self.conn, params={'custom_filter_id': filter_id})
|
||||
if df['FILTER_TYPE'][0] == "CLASS":
|
||||
prefilter_class = df['PREFILTER_CLASS'][0]
|
||||
postfilter_class = df['POSTFILTER_CLASS'][0]
|
||||
if prefilter_class:
|
||||
prefilter = self.load_filter("pre", prefilter_class)
|
||||
prefilter.gen_filter(self.effective_date)
|
||||
if postfilter_class:
|
||||
postfilter = self.load_filter("post", postfilter_class)
|
||||
postfilter.gen_filter(self.effective_date)
|
||||
|
||||
if df['FILTER_TYPE'][0] == "BLOB":
|
||||
if df['PREFILTER_BLOB'][0].read() is not None:
|
||||
try:
|
||||
prefilter = dill.loads(df['PREFILTER_BLOB'][0].read())
|
||||
prefilter.gen_filter(conn=self.conn, product_code=self.product_code)
|
||||
except Exception as ex:
|
||||
LOGGER.error(f'Loading prefilter failed with exeption {ex}')
|
||||
else:
|
||||
LOGGER.error('No prefilter found')
|
||||
|
||||
if df['POSTFILTER_BLOB'][0] is not None:
|
||||
try:
|
||||
postfilter: BasePostFilter = dill.loads(df['POSTFILTER_BLOB'][0].read())
|
||||
postfilter.gen_filter(ModelInference)
|
||||
except Exception as ex:
|
||||
LOGGER.error(f'Loading postfilter failed with exeption {ex}')
|
||||
else:
|
||||
LOGGER.error('No postfilter found')
|
||||
|
||||
return prefilter, postfilter
|
||||
|
||||
# @cachedmethod(get_cache)
|
||||
def load_filter(self, filter_type, class_name) -> BaseFilter:
|
||||
current_file_path = os.path.dirname(__file__)
|
||||
filter_path = os.path.join(current_file_path, 'pricing_premium_adjustment', 'filters', filter_type, f'{class_name}.py')
|
||||
# filter_path = f'pricing_premium_adjustment/filters/{filter_type}/{class_name}.py'
|
||||
if not os.path.exists(filter_path):
|
||||
raise ResourceNotFound(f'{class_name} filter not found.')
|
||||
spec = importlib.util.spec_from_file_location(f'{class_name}', filter_path)
|
||||
if spec:
|
||||
filter_module = importlib.util.module_from_spec(spec)
|
||||
if spec.loader:
|
||||
spec.loader.exec_module(filter_module)
|
||||
base_class = filter_module.BasePreFilter if filter_type == 'pre' else filter_module.BasePostFilter
|
||||
for attr in dir(filter_module):
|
||||
attr_value = getattr(filter_module, attr)
|
||||
if isinstance(attr_value, type) and issubclass(attr_value, base_class) and attr_value is not base_class:
|
||||
return attr_value()
|
||||
|
||||
raise ResourceNotFound(f'No valid post-filter class found in {filter_path}')
|
||||
|
||||
# EOF
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Cryptography.CertificateStatus.Abstractions Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Cryptography.CertificateStatus.Abstractions/StellaOps.Cryptography.CertificateStatus.Abstractions.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -5,9 +5,10 @@
|
||||
// Description: Unified certificate status provider orchestrating OCSP/CRL.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Cryptography.CertificateStatus.Abstractions;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace StellaOps.Cryptography.CertificateStatus;
|
||||
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
// Description: CRL fetching and validation as fallback for OCSP.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
using System.Formats.Asn1;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Cryptography.CertificateStatus.Abstractions;
|
||||
using System.Formats.Asn1;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace StellaOps.Cryptography.CertificateStatus;
|
||||
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
// Description: RFC 6960 OCSP client with request generation and response parsing.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Cryptography.CertificateStatus.Abstractions;
|
||||
using System.Formats.Asn1;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Cryptography.CertificateStatus.Abstractions;
|
||||
|
||||
namespace StellaOps.Cryptography.CertificateStatus;
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# StellaOps.Cryptography.CertificateStatus Task Board
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_solid_review.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| REMED-05 | TODO | Remediation checklist: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Cryptography.CertificateStatus/StellaOps.Cryptography.CertificateStatus.md. |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0050-M | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0050-T | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0050-A | TODO | Revalidated 2026-01-08 (open findings). |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
using System.IO;
|
||||
|
||||
using Amazon;
|
||||
using Amazon.KeyManagementService;
|
||||
using Amazon.KeyManagementService.Model;
|
||||
using System.IO;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Collections.Immutable;
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using StellaOps.Cryptography;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using StellaOps.Cryptography;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Formats.Asn1;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Net.Pkcs11Interop.Common;
|
||||
using Net.Pkcs11Interop.HighLevelAPI;
|
||||
using Net.Pkcs11Interop.HighLevelAPI.Factories;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Formats.Asn1;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace StellaOps.Cryptography.Kms;
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0051-M | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0051-T | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0051-A | TODO | Revalidated 2026-01-08 (open findings). |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Org.BouncyCastle.Crypto.Parameters;
|
||||
using Org.BouncyCastle.Crypto.Signers;
|
||||
using StellaOps.Cryptography;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace StellaOps.Cryptography.Plugin.BouncyCastle;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
using StellaOps.Plugin.Versioning;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("StellaOps.Cryptography.Plugin.BouncyCastle.Tests")]
|
||||
[assembly: StellaPluginVersion("1.0.0", MinimumHostVersion = "1.0.0", MaximumHostVersion = "1.99.99")]
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0052-M | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0052-T | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0052-A | TODO | Revalidated 2026-01-08 (open findings). |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Runtime.Versioning;
|
||||
using StellaOps.Cryptography;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Versioning;
|
||||
|
||||
namespace StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
using StellaOps.Cryptography;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
using System;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Config;
|
||||
using GostCryptography.Gost_R3410;
|
||||
using GostCryptography.Reflection;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using StellaOps.Cryptography;
|
||||
using System;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StellaOps.Cryptography.Plugin.CryptoPro;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
using StellaOps.Plugin.Versioning;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("StellaOps.Cryptography.Tests")]
|
||||
[assembly: StellaPluginVersion("1.0.0", MinimumHostVersion = "1.0.0", MaximumHostVersion = "1.99.99")]
|
||||
|
||||
@@ -8,3 +8,4 @@ Source of truth: `docs-archived/implplan/2025-12-29-csproj-audit/SPRINT_20251229
|
||||
| AUDIT-0053-M | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0053-T | DONE | Revalidated 2026-01-08. |
|
||||
| AUDIT-0053-A | TODO | Revalidated 2026-01-08 (open findings). |
|
||||
| REMED-06 | DONE | SOLID review notes captured for SPRINT_20260130_002. |
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_28147_89
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
using System;
|
||||
using System.Security;
|
||||
|
||||
using GostCryptography.Gost_R3410;
|
||||
|
||||
using Xunit;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_R3410;
|
||||
using System;
|
||||
using System.Security;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_R3410
|
||||
{
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_28147_89;
|
||||
using GostCryptography.Gost_R3411;
|
||||
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_R3411
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
|
||||
|
||||
using GostCryptography.Base;
|
||||
using GostCryptography.Gost_R3411;
|
||||
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace GostCryptography.Tests.Gost_R3411
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user