< Summary

Information
Class: AsiBackbone.Core.Signing.VerificationPolicyOptions
Assembly: AsiBackbone.Core
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Core/Signing/VerificationPolicyOptions.cs
Line coverage
100%
Covered lines: 34
Uncovered lines: 0
Coverable lines: 34
Total lines: 81
Line coverage: 100%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
.ctor(...)100%11100%
get_Default()100%11100%
get_Actions()100%11100%
Create(...)100%88100%
GetAction(...)75%44100%

File(s)

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

#LineLine coverage
 1using System.Collections.ObjectModel;
 2
 3namespace AsiBackbone.Core.Signing;
 4
 5/// <summary>
 6/// Maps signature verification categories to host-facing verification policy actions.
 7/// </summary>
 8public sealed class VerificationPolicyOptions
 9{
 210    private static readonly IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction> DefaultActionMa
 211        new ReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction>(
 212            new Dictionary<SignatureVerificationCategory, VerificationPolicyAction>
 213            {
 214                [SignatureVerificationCategory.Valid] = VerificationPolicyAction.Allow,
 215                [SignatureVerificationCategory.InvalidSignature] = VerificationPolicyAction.Deny,
 216                [SignatureVerificationCategory.HashMismatch] = VerificationPolicyAction.Deny,
 217                [SignatureVerificationCategory.MissingSignature] = VerificationPolicyAction.RequireAcknowledgment,
 218                [SignatureVerificationCategory.UnknownKeyVersion] = VerificationPolicyAction.Escalate,
 219                [SignatureVerificationCategory.RevokedKey] = VerificationPolicyAction.Deny,
 220                [SignatureVerificationCategory.ProviderUnavailable] = VerificationPolicyAction.Defer,
 221                [SignatureVerificationCategory.CanonicalizationMismatch] = VerificationPolicyAction.Escalate,
 222                [SignatureVerificationCategory.UnsupportedAlgorithm] = VerificationPolicyAction.Deny,
 223                [SignatureVerificationCategory.Failed] = VerificationPolicyAction.Escalate
 224            });
 25
 826    private VerificationPolicyOptions(IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction> actio
 27    {
 828        Actions = actions;
 829    }
 30
 31    /// <summary>
 32    /// Gets the default verification policy action map.
 33    /// </summary>
 7634    public static VerificationPolicyOptions Default { get; } = new(DefaultActionMap);
 35
 36    /// <summary>
 37    /// Gets the configured verification category to host action map.
 38    /// </summary>
 8239    public IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction> Actions { get; }
 40
 41    /// <summary>
 42    /// Creates verification policy options with optional host overrides.
 43    /// </summary>
 44    public static VerificationPolicyOptions Create(
 45        IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction>? actionOverrides = null)
 46    {
 1047        Dictionary<SignatureVerificationCategory, VerificationPolicyAction> actions = new(DefaultActionMap);
 48
 1049        if (actionOverrides is not null)
 50        {
 4051            foreach (KeyValuePair<SignatureVerificationCategory, VerificationPolicyAction> item in actionOverrides)
 52            {
 1253                if (!Enum.IsDefined(item.Key))
 54                {
 255                    throw new ArgumentOutOfRangeException(nameof(actionOverrides), item.Key, "Verification category must
 56                }
 57
 1058                if (!Enum.IsDefined(item.Value))
 59                {
 260                    throw new ArgumentOutOfRangeException(nameof(actionOverrides), item.Value, "Verification policy acti
 61                }
 62
 863                actions[item.Key] = item.Value;
 64            }
 65        }
 66
 667        return new VerificationPolicyOptions(new ReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAct
 68    }
 69
 70    /// <summary>
 71    /// Gets the action configured for the supplied verification category.
 72    /// </summary>
 73    public VerificationPolicyAction GetAction(SignatureVerificationCategory category)
 74    {
 8475        return !Enum.IsDefined(category)
 8476            ? throw new ArgumentOutOfRangeException(nameof(category), category, "Verification category must be defined."
 8477            : Actions.TryGetValue(category, out VerificationPolicyAction action)
 8478            ? action
 8479            : VerificationPolicyAction.Escalate;
 80    }
 81}