< Summary

Information
Class: AsiBackbone.Core.Signing.SignatureVerificationResult
Assembly: AsiBackbone.Core
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Signing/SignatureVerificationResult.cs
Line coverage
100%
Covered lines: 29
Uncovered lines: 0
Coverable lines: 29
Total lines: 106
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
.ctor(...)100%11100%
Verified()100%11100%
Failed(...)100%11100%
Failed(...)100%44100%
MissingSignature(...)100%11100%
NormalizeOptional(...)100%22100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Signing/SignatureVerificationResult.cs

#LineLine coverage
 1namespace AsiBackbone.Core.Signing;
 2
 3/// <summary>
 4/// Represents the provider-neutral result of a signature verification operation.
 5/// </summary>
 6public sealed class SignatureVerificationResult
 7{
 8    private SignatureVerificationResult(
 9        bool isValid,
 10        string status,
 11        string? failureCode,
 12        string? failureMessage)
 4813        : this(isValid, status, failureCode, failureMessage, category: null)
 14    {
 4815    }
 16
 13917    private SignatureVerificationResult(
 13918        bool isValid,
 13919        string status,
 13920        string? failureCode,
 13921        string? failureMessage,
 13922        SignatureVerificationCategory? category)
 23    {
 13924        ArgumentException.ThrowIfNullOrWhiteSpace(status);
 25
 13926        IsValid = isValid;
 13927        Status = status.Trim();
 13928        FailureCode = NormalizeOptional(failureCode);
 13929        FailureMessage = NormalizeOptional(failureMessage);
 13930        Category = category;
 13931    }
 32
 33    /// <summary>
 34    /// Gets a value indicating whether the signature was verified successfully.
 35    /// </summary>
 36    public bool IsValid { get; }
 37
 38    /// <summary>
 39    /// Gets a provider-neutral verification status.
 40    /// </summary>
 41    public string Status { get; }
 42
 43    /// <summary>
 44    /// Gets a provider-neutral failure code when verification did not succeed.
 45    /// </summary>
 46    public string? FailureCode { get; }
 47
 48    /// <summary>
 49    /// Gets a provider-neutral failure message when verification did not succeed.
 50    /// </summary>
 51    public string? FailureMessage { get; }
 52
 53    /// <summary>
 54    /// Gets the explicit provider-neutral category, when the result producer supplied one.
 55    /// </summary>
 56    public SignatureVerificationCategory? Category { get; }
 57
 58    /// <summary>
 59    /// Creates a successful verification result.
 60    /// </summary>
 61    public static SignatureVerificationResult Verified()
 62    {
 4963        return new SignatureVerificationResult(true, "Verified", null, null, SignatureVerificationCategory.Valid);
 64    }
 65
 66    /// <summary>
 67    /// Creates a failed verification result.
 68    /// </summary>
 69    public static SignatureVerificationResult Failed(string failureCode, string? failureMessage = null)
 70    {
 4671        return new SignatureVerificationResult(false, "Failed", failureCode, failureMessage);
 72    }
 73
 74    /// <summary>
 75    /// Creates a failed verification result with an explicit provider-neutral category.
 76    /// </summary>
 77    public static SignatureVerificationResult Failed(
 78        string failureCode,
 79        SignatureVerificationCategory category,
 80        string? failureMessage = null)
 81    {
 3882        return !Enum.IsDefined(category) || category is SignatureVerificationCategory.Valid
 3883            ? throw new ArgumentOutOfRangeException(nameof(category), category, "A failed verification result requires a
 3884            : new SignatureVerificationResult(false, "Failed", failureCode, failureMessage, category);
 85    }
 86
 87    /// <summary>
 88    /// Creates a result indicating that no signature metadata was available to verify.
 89    /// </summary>
 90    public static SignatureVerificationResult MissingSignature(string? failureMessage = null)
 91    {
 592        return new SignatureVerificationResult(
 593            false,
 594            "MissingSignature",
 595            "signature.missing",
 596            failureMessage,
 597            SignatureVerificationCategory.MissingSignature);
 98    }
 99
 100    private static string? NormalizeOptional(string? value)
 101    {
 278102        return string.IsNullOrWhiteSpace(value)
 278103            ? null
 278104            : value.Trim();
 105    }
 106}