File: System\Security\Cryptography\SignatureDescription.cs
Web Access
Project: src\src\libraries\System.Security.Cryptography\src\System.Security.Cryptography.csproj (System.Security.Cryptography)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics.CodeAnalysis;
 
namespace System.Security.Cryptography
{
    public class SignatureDescription
    {
        public string? KeyAlgorithm { get; set; }
        public string? DigestAlgorithm { get; set; }
        public string? FormatterAlgorithm { get; set; }
        public string? DeformatterAlgorithm { get; set; }
 
        public SignatureDescription()
        {
        }
 
        public SignatureDescription(SecurityElement el)
        {
            ArgumentNullException.ThrowIfNull(el);
 
            KeyAlgorithm = el.SearchForTextOfTag("Key");
            DigestAlgorithm = el.SearchForTextOfTag("Digest");
            FormatterAlgorithm = el.SearchForTextOfTag("Formatter");
            DeformatterAlgorithm = el.SearchForTextOfTag("Deformatter");
        }
 
        [RequiresUnreferencedCode("CreateDeformatter is not trim compatible because the algorithm implementation referenced by DeformatterAlgorithm might be removed.")]
        public virtual AsymmetricSignatureDeformatter CreateDeformatter(AsymmetricAlgorithm key)
        {
            AsymmetricSignatureDeformatter? item = (AsymmetricSignatureDeformatter?)CryptoConfig.CreateFromName(DeformatterAlgorithm!);
            item!.SetKey(key);
            return item;
        }
 
        [RequiresUnreferencedCode("CreateFormatter is not trim compatible because the algorithm implementation referenced by FormatterAlgorithm might be removed.")]
        public virtual AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key)
        {
            AsymmetricSignatureFormatter? item = (AsymmetricSignatureFormatter?)CryptoConfig.CreateFromName(FormatterAlgorithm!);
            item!.SetKey(key);
            return item;
        }
 
        [RequiresUnreferencedCode("CreateDigest is not trim compatible because the algorithm implementation referenced by DigestAlgorithm might be removed.")]
        public virtual HashAlgorithm? CreateDigest()
        {
            return (HashAlgorithm?)CryptoConfig.CreateFromName(DigestAlgorithm!);
        }
    }
}