< 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{
 110    private static readonly IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction> DefaultActionMa
 111        new ReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction>(
 112            new Dictionary<SignatureVerificationCategory, VerificationPolicyAction>
 113            {
 114                [SignatureVerificationCategory.Valid] = VerificationPolicyAction.Allow,
 115                [SignatureVerificationCategory.InvalidSignature] = VerificationPolicyAction.Deny,
 116                [SignatureVerificationCategory.HashMismatch] = VerificationPolicyAction.Deny,
 117                [SignatureVerificationCategory.MissingSignature] = VerificationPolicyAction.RequireAcknowledgment,
 118                [SignatureVerificationCategory.UnknownKeyVersion] = VerificationPolicyAction.Escalate,
 119                [SignatureVerificationCategory.RevokedKey] = VerificationPolicyAction.Deny,
 120                [SignatureVerificationCategory.ProviderUnavailable] = VerificationPolicyAction.Defer,
 121                [SignatureVerificationCategory.CanonicalizationMismatch] = VerificationPolicyAction.Escalate,
 122                [SignatureVerificationCategory.UnsupportedAlgorithm] = VerificationPolicyAction.Deny,
 123                [SignatureVerificationCategory.Failed] = VerificationPolicyAction.Escalate
 124            });
 25
 426    private VerificationPolicyOptions(IReadOnlyDictionary<SignatureVerificationCategory, VerificationPolicyAction> actio
 27    {
 428        Actions = actions;
 429    }
 30
 31    /// <summary>
 32    /// Gets the default verification policy action map.
 33    /// </summary>
 3434    public static VerificationPolicyOptions Default { get; } = new(DefaultActionMap);
 35
 36    /// <summary>
 37    /// Gets the configured verification category to host action map.
 38    /// </summary>
 3739    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    {
 547        Dictionary<SignatureVerificationCategory, VerificationPolicyAction> actions = new(DefaultActionMap);
 48
 549        if (actionOverrides is not null)
 50        {
 2051            foreach (KeyValuePair<SignatureVerificationCategory, VerificationPolicyAction> item in actionOverrides)
 52            {
 653                if (!Enum.IsDefined(item.Key))
 54                {
 155                    throw new ArgumentOutOfRangeException(nameof(actionOverrides), item.Key, "Verification category must
 56                }
 57
 558                if (!Enum.IsDefined(item.Value))
 59                {
 160                    throw new ArgumentOutOfRangeException(nameof(actionOverrides), item.Value, "Verification policy acti
 61                }
 62
 463                actions[item.Key] = item.Value;
 64            }
 65        }
 66
 367        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    {
 3875        return !Enum.IsDefined(category)
 3876            ? throw new ArgumentOutOfRangeException(nameof(category), category, "Verification category must be defined."
 3877            : Actions.TryGetValue(category, out VerificationPolicyAction action)
 3878            ? action
 3879            : VerificationPolicyAction.Escalate;
 80    }
 81}