AsymmetricAlgorithm Classe

Definição

Representa a classe base abstrata da qual todas as implementações de algoritmos assimétricos devem ser herdadas.

public abstract class AsymmetricAlgorithm : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class AsymmetricAlgorithm : IDisposable
Herança
AsymmetricAlgorithm
Derivado
Atributos
Implementações

Exemplos

O exemplo de código a seguir demonstra como implementar um algoritmo assimétrico personalizado herdado da AsymmetricAlgorithm classe . Uma classe adicional é fornecida para demonstrar como usar a classe personalizada.

using System;
using System.Xml;
using System.Text;
using System.Security.Cryptography;
using System.Reflection;

[assembly: AssemblyKeyFile("CustomCrypto.snk")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: CLSCompliant(true)]
namespace Contoso
{
    // Define a CustomCrypto class that inherits from the AsymmetricAlgorithm
    // class.
    public class CustomCrypto : 
        System.Security.Cryptography.AsymmetricAlgorithm
    {
        // Declare local member variables.
        private CspParameters cspParameters;
        private readonly KeySizes[] keySizes = {new KeySizes(8, 64, 8)};

        // Initialize a CustomCrypto with the default key size of 8.
        public CustomCrypto()
        {
            this.KeySize = 8;
        }

        // Initialize a CustomCrypto with the specified key size.
        public CustomCrypto(int keySize)
        {
            this.KeySize = keySize;
        }

        // Accessor function for keySizes member variable.
        public override KeySizes[] LegalKeySizes 
        { 
            get { return (KeySizes[])keySizes.Clone(); }
        }

        // Modify the KeySizeValue property inherited from the Asymmetric
        // class. Prior to setting the value, ensure it falls within the
        // range identified in the local keySizes member variable.
        public override int KeySize 
        {
            get { return KeySizeValue; }
            set
            {
                for (int i=0; i < keySizes.Length; i++)
                {
                    if (keySizes[i].SkipSize == 0) 
                    {
                        if (keySizes[i].MinSize == value)
                        {
                            KeySizeValue = value;
                            return;
                        }
                    }
                    else
                    {
                        for (int j = keySizes[i].MinSize;
                            j <= keySizes[i].MaxSize;
                            j += keySizes[i].SkipSize)
                        {
                            if (j == value)
                            {
                                KeySizeValue = value;
                                return;
                            }
                        }
                    }
                }

                // If the key does not fall within the range identified 
                // in the keySizes member variable, throw an exception.
                throw new CryptographicException("Invalid key size.");
            }
        }

        // Initialize the parameters with default values.
        public void InitializeParameters()
        {
            cspParameters = new CspParameters();
            cspParameters.ProviderName = "Contoso";
            cspParameters.KeyContainerName = "SecurityBin1";
            cspParameters.KeyNumber = 1;
            cspParameters.ProviderType = 2;
        }

        // Parse specified xmlString for values to populate the CspParams
        // Expected XML schema:
        //      <ProviderName></ProviderName>
        //      <KeyContainerName></KeyContainerName>
        //      <KeyNumber></KeyNumber>
        //      <ProviderType></ProviderType>
        public override void FromXmlString(string xmlString)
        {
            if (xmlString != null)
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xmlString);
                XmlNode firstNode = doc.FirstChild;
                XmlNodeList nodeList;

                // Assemble parameters from values in each XML element.
                cspParameters = new CspParameters();

                // KeyContainerName is optional.
                nodeList = doc.GetElementsByTagName("KeyContainerName");
                string keyName = nodeList.Item(0).InnerText;
                if (keyName != null) 
                {
                    cspParameters.KeyContainerName = keyName;
                }

                // KeyNumber is optional.
                nodeList = doc.GetElementsByTagName("KeyNumber");
                string keyNumber = nodeList.Item(0).InnerText;
                if (keyNumber != null) 
                {
                    cspParameters.KeyNumber = Int32.Parse(keyNumber);
                }

                // ProviderName is optional.
                nodeList = doc.GetElementsByTagName("ProviderName");
                string providerName = nodeList.Item(0).InnerText;
                if (providerName != null) 
                {
                    cspParameters.ProviderName = providerName;
                }

                // ProviderType is optional.
                nodeList = doc.GetElementsByTagName("ProviderType");
                string providerType = nodeList.Item(0).InnerText;
                if (providerType != null) 
                {
                    cspParameters.ProviderType = Int32.Parse(providerType);
                }
            }
            else
            {
                throw new ArgumentNullException("xmlString");
            }
        }

        // Create an XML string representation of the parameters in the
        // current customCrypto object.
        public override string ToXmlString(bool includePrivateParameters)
        {
            string keyContainerName = "";
            string keyNumber = "";
            string providerName = "";
            string providerType = "";

            if (cspParameters != null)
            {
                keyContainerName = cspParameters.KeyContainerName;
                keyNumber = cspParameters.KeyNumber.ToString();
                providerName = cspParameters.ProviderName;
                providerType = cspParameters.ProviderType.ToString();
            }

            StringBuilder sb = new StringBuilder();
            sb.Append("<CustomCryptoKeyValue>");

            sb.Append("<KeyContainerName>");
            sb.Append(keyContainerName);
            sb.Append("</KeyContainerName>");

            sb.Append("<KeyNumber>");
            sb.Append(keyNumber);
            sb.Append("</KeyNumber>");

            sb.Append("<ProviderName>");
            sb.Append(providerName);
            sb.Append("</ProviderName>");

            sb.Append("<ProviderType>");
            sb.Append(providerType);
            sb.Append("</ProviderType>");

            sb.Append("</CustomCryptoKeyValue>");
            return(sb.ToString());
        }

        // Return the name for the key exchange algorithm.
        public override string KeyExchangeAlgorithm
        {
            get {return "RSA-PKCS1-KeyEx";}
        }

        // Retrieves the name of the signature alogrithm.
        // This example uses the SHA1 algorithm.
        // Due to collision problems with SHA1, Microsoft recommends SHA256 or better.
        public override string SignatureAlgorithm 
        {
            get {return "http://www.w3.org/2000/09/xmldsig#rsa-sha1";}
        }

        // Required member for implementing the AsymmetricAlgorithm class.
        protected override void Dispose(bool disposing) {}

        // Call the Create method using the CustomCrypto assembly name.
        // The create function attempts to create a CustomCrypto object using
        // the assembly name. This functionality requires modification of the
        // machine.config file. Add the following section to the configuration
        // element and modify the values of the cryptoClass to reflect what is
        // installed in your machines GAC.
        //        <cryptoClass CustomCrypto="Contoso.CustomCrypto, 
        //          CustomCrypto, 
        //          Culture=neutral, 
        //          PublicKeyToken=fdb9f9c4851028bf, 
        //          Version=1.0.1448.27640" />
        //      <nameEntry name="Contoso.CustomCrypto" class="CustomCrypto" />
        //      <nameEntry name="CustomCrypto" class="CustomCrypto" />
        new static public CustomCrypto Create() 
        {
            return Create("CustomCrypto");
        }

        // Create a CustomCrypto object by calling CrytoConfig's
        // CreateFromName method and casting the type to CustomCrypto.
        // The create function attempts to create a CustomCrypto object using
        // the assembly name. This functionality requires modification of the
        // machine.config file. Add the following section to the configuration
        // element and modify the values of the cryptoClass to reflect what is
        // installed in your machines GAC.
        //       <cryptoClass CustomCrypto="Contoso.CustomCrypto, 
        //         CustomCrypto, 
        //         Culture=neutral, 
        //         PublicKeyToken=fdb9f9c4851028bf, 
        //         Version=1.0.1448.27640" />
        //     <nameEntry name="Contoso.CustomCrypto" class="CustomCrypto" />
        //     <nameEntry name="CustomCrypto" class="CustomCrypto" />
        new static public CustomCrypto Create(String algorithmName) 
        {
            return (CustomCrypto) CryptoConfig.CreateFromName(algorithmName);
        }
    }
    class CustomCryptoImpl
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Construct a CustomCrypto object and initialize its
            // CspParameters.
            CustomCrypto customCrypto = new CustomCrypto();
            customCrypto.InitializeParameters();

            // Display properties of the current customCrypto object.
            Console.WriteLine("*** CustomCrypto created with default " + 
                "parameters:");
            DisplayProperties(customCrypto);

            // Release all the resources used by this instance of 
            // CustomCrytpo.
            customCrypto.Clear();

            customCrypto = new CustomCrypto(64);
            // Create new parameters and set them by using the FromXmlString
            // method.
            string parameterXml = "<CustomCryptoKeyValue>";
            parameterXml += "<ProviderName>Contoso</ProviderName>";
            parameterXml += "<KeyContainerName>SecurityBin2";
            parameterXml += "</KeyContainerName>";
            parameterXml += "<KeyNumber>1</KeyNumber>";
            parameterXml += "<ProviderType>2</ProviderType>";
            parameterXml += "</CustomCryptoKeyValue>";
            customCrypto.FromXmlString(parameterXml);

            // Display the properties of a customCrypto object created with
            // custom parameters.
            Console.WriteLine("\n*** " + 
                "CustomCrypto created with custom parameters:");
            DisplayProperties(customCrypto);

            // Create an object by using the assembly name.
            try
            {
                CustomCrypto myCryptoA = CustomCrypto.Create("CustomCrypto");
                if (myCryptoA != null)
                {
                    Console.Write("\n*** " + 
                        "Successfully created CustomCrytpo from");
                    Console.WriteLine(" the Create method.");

                    DisplayProperties(myCryptoA);
                }
                else
                {
                    Console.Write("Unable to create CustomCrytpo from ");
                    Console.WriteLine(" the Create method.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            
            Console.WriteLine("This sample completed successfully; " +
                "press Enter to exit.");
            Console.ReadLine();
        }
        // Display the properties of the specified CustomCrypto object to the
        // console.
        public static void DisplayProperties(CustomCrypto customCrypto)
        {
            try
            {
                // Retrieve the class description for the customCrypto object.
                string classDescription = customCrypto.ToString();

                Console.WriteLine(classDescription);
                Console.Write("KeyExchangeAlgorithm: ");
                Console.WriteLine(customCrypto.KeyExchangeAlgorithm);
                Console.Write("SignatureAlgorithm: ");
                Console.WriteLine(customCrypto.SignatureAlgorithm);
                Console.WriteLine("KeySize: " + customCrypto.KeySize);
                Console.WriteLine("Parameters described in Xml format:");
                Console.WriteLine(customCrypto.ToXmlString(true));

                // Display the MinSize, MaxSize, and SkipSize properties of 
                // each KeySize item in the local keySizes member variable.
                KeySizes[] legalKeySizes = customCrypto.LegalKeySizes;
                if (legalKeySizes.Length > 0)
                {
                    for (int i=0; i < legalKeySizes.Length; i++)
                    {
                        Console.Write("Keysize" + i + " min, max, step: ");
                        Console.Write(legalKeySizes[i].MinSize + ", ");
                        Console.Write(legalKeySizes[i].MaxSize + ", ");
                        Console.WriteLine(legalKeySizes[i].SkipSize + ", ");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Caught unexpected exception: " + 
                    ex.ToString());
            }
        }
    }
}
//
// This sample produces the following output:
//
// *** CustomCrypto created with default parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 8
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin1</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// 
// *** CustomCrypto created with custom parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 64
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin2</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// Unable to create CustomCrytpo from  the Create method
// This sample completed successfully; press Exit to continue.

Aqui está uma classe adicional que demonstra como usar a classe personalizada.

    class CustomCryptoImpl
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Construct a CustomCrypto object and initialize its
            // CspParameters.
            CustomCrypto customCrypto = new CustomCrypto();
            customCrypto.InitializeParameters();

            // Display properties of the current customCrypto object.
            Console.WriteLine("*** CustomCrypto created with default " + 
                "parameters:");
            DisplayProperties(customCrypto);

            // Release all the resources used by this instance of 
            // CustomCrytpo.
            customCrypto.Clear();

            customCrypto = new CustomCrypto(64);
            // Create new parameters and set them by using the FromXmlString
            // method.
            string parameterXml = "<CustomCryptoKeyValue>";
            parameterXml += "<ProviderName>Contoso</ProviderName>";
            parameterXml += "<KeyContainerName>SecurityBin2";
            parameterXml += "</KeyContainerName>";
            parameterXml += "<KeyNumber>1</KeyNumber>";
            parameterXml += "<ProviderType>2</ProviderType>";
            parameterXml += "</CustomCryptoKeyValue>";
            customCrypto.FromXmlString(parameterXml);

            // Display the properties of a customCrypto object created with
            // custom parameters.
            Console.WriteLine("\n*** " + 
                "CustomCrypto created with custom parameters:");
            DisplayProperties(customCrypto);

            // Create an object by using the assembly name.
            try
            {
                CustomCrypto myCryptoA = CustomCrypto.Create("CustomCrypto");
                if (myCryptoA != null)
                {
                    Console.Write("\n*** " + 
                        "Successfully created CustomCrytpo from");
                    Console.WriteLine(" the Create method.");

                    DisplayProperties(myCryptoA);
                }
                else
                {
                    Console.Write("Unable to create CustomCrytpo from ");
                    Console.WriteLine(" the Create method.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            
            Console.WriteLine("This sample completed successfully; " +
                "press Enter to exit.");
            Console.ReadLine();
        }
        // Display the properties of the specified CustomCrypto object to the
        // console.
        public static void DisplayProperties(CustomCrypto customCrypto)
        {
            try
            {
                // Retrieve the class description for the customCrypto object.
                string classDescription = customCrypto.ToString();

                Console.WriteLine(classDescription);
                Console.Write("KeyExchangeAlgorithm: ");
                Console.WriteLine(customCrypto.KeyExchangeAlgorithm);
                Console.Write("SignatureAlgorithm: ");
                Console.WriteLine(customCrypto.SignatureAlgorithm);
                Console.WriteLine("KeySize: " + customCrypto.KeySize);
                Console.WriteLine("Parameters described in Xml format:");
                Console.WriteLine(customCrypto.ToXmlString(true));

                // Display the MinSize, MaxSize, and SkipSize properties of 
                // each KeySize item in the local keySizes member variable.
                KeySizes[] legalKeySizes = customCrypto.LegalKeySizes;
                if (legalKeySizes.Length > 0)
                {
                    for (int i=0; i < legalKeySizes.Length; i++)
                    {
                        Console.Write("Keysize" + i + " min, max, step: ");
                        Console.Write(legalKeySizes[i].MinSize + ", ");
                        Console.Write(legalKeySizes[i].MaxSize + ", ");
                        Console.WriteLine(legalKeySizes[i].SkipSize + ", ");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Caught unexpected exception: " + 
                    ex.ToString());
            }
        }
    }
}
//
// This sample produces the following output:
//
// *** CustomCrypto created with default parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 8
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin1</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// 
// *** CustomCrypto created with custom parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 64
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin2</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// Unable to create CustomCrytpo from  the Create method
// This sample completed successfully; press Exit to continue.

Comentários

Algoritmos criptográficos assimétricos, também conhecidos como algoritmos de chave pública, exigem que o remetente e o receptor mantenham um par de chaves relacionadas: uma chave privada e uma chave pública. Ambas as chaves são exclusivas da entidade. A chave pública pode ser disponibilizada para qualquer pessoa; essa chave é usada para codificar dados enviados para um receptor. A chave privada deve ser mantida privada pelo receptor; essa chave é usada para decodificar mensagens codificadas usando a chave pública do receptor. A RSACryptoServiceProvider classe é uma implementação de um algoritmo de chave pública. Para obter uma discussão detalhada sobre criptografia e algoritmos de chave pública, consulte a seção "Criptografia de chave pública" em Serviços criptográficos. Para obter informações sobre como usar a ferramenta nome forte (Sn.exe) para criar pares de chaves, consulte Como criar um par de chaves Public-Private.

Você pode usar sistemas de chave pública para formar assinaturas digitais. As assinaturas digitais são usadas para ajudar a proteger a integridade dos dados. Por exemplo, para usar um sistema de chave pública para assinar digitalmente uma mensagem, o remetente primeiro aplica uma função de hash à mensagem para criar um resumo da mensagem. Em seguida, o remetente criptografa o resumo da mensagem com a chave privada do remetente para criar a assinatura pessoal do remetente. Ao receber a mensagem e a assinatura, o receptor descriptografa a assinatura usando a chave pública do remetente para recuperar o resumo da mensagem e faz hashes da mensagem usando o mesmo algoritmo de hash usado pelo remetente. Se o resumo da mensagem que o receptor calcula corresponder ao resumo da mensagem recebido do remetente, o receptor poderá assumir que a mensagem não foi alterada durante o trânsito. Observe que qualquer pessoa pode verificar uma assinatura, pois a chave pública do remetente é de conhecimento comum. Essa técnica não mantém o sigilo da mensagem; para que a mensagem seja secreta, ela também deve ser criptografada.

O .NET Framework fornece as seguintes classes que implementam algoritmos de assinatura digital: DSACryptoServiceProvider, RSACryptoServiceProvider, ECDsa (classe base) e ECDsaCng.

O System.Security.Cryptography namespace fornece classes concretas apenas para RSA e DSA .

Para saber como usar o algoritmo RSA para criptografar e descriptografar dados XML e criar e verificar assinaturas digitais XML, consulte estes artigos:

Construtores

AsymmetricAlgorithm()

Inicializa uma nova instância da classe AsymmetricAlgorithm.

Campos

KeySizeValue

Representa o tamanho, em bits, do módulo chave usado pelo algoritmo assimétrico.

LegalKeySizesValue

Especifica os tamanhos de chave que são compatíveis com o algoritmo assimétrico.

Propriedades

KeyExchangeAlgorithm

Quando substituída em uma classe derivada, obtém o nome do algoritmo de troca de chaves. Caso contrário, gerará um NotImplementedException.

KeySize

Obtém ou define o tamanho, em bits, do módulo chave usado pelo algoritmo assimétrico.

LegalKeySizes

Obtém os tamanhos de chave que têm suporte pelo algoritmo assimétrico.

SignatureAlgorithm

Quando implementado em uma classe derivada, obtém o nome do algoritmo de assinatura. Caso contrário, sempre gerará um NotImplementedException.

Métodos

Clear()

Libera todos os recursos usados pela classe AsymmetricAlgorithm.

Create()
Obsoleto.
Obsoleto.

Cria um objeto criptográfico padrão usado para executar o algoritmo assimétrico.

Create(String)
Obsoleto.

Cria uma instância da implementação especificada de um algoritmo assimétrico.

Dispose()

Libera todos os recursos usados pela instância atual da classe AsymmetricAlgorithm.

Dispose(Boolean)

Libera os recursos não gerenciados usados pela classe AsymmetricAlgorithm e, opcionalmente, libera os recursos gerenciados.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Exporta a chave atual no formato EncryptedPrivateKeyInfo do PKCS nº 8 com uma senha baseada em bytes.

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

Exporta a chave atual no formato EncryptedPrivateKeyInfo do PKCS nº 8 com uma senha baseada em caracteres.

ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters)

Exporta a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo com uma senha baseada em bytes, codificada em PEM.

ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters)

Exporta a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo com uma senha baseada em char, codificada em PEM.

ExportPkcs8PrivateKey()

Exporta a chave atual no formato PrivateKeyInfo do PKCS nº 8.

ExportPkcs8PrivateKeyPem()

Exporta a chave atual no formato PrivateKeyInfo PKCS nº 8, codificado em PEM.

ExportSubjectPublicKeyInfo()

Exporta a parte pública da chave atual no formato SubjectPublicKeyInfo X.509.

ExportSubjectPublicKeyInfoPem()

Exporta a parte de chave pública da chave atual no formato SubjectPublicKeyInfo X.509, codificado em PEM.

FromXmlString(String)

Quando substituído em uma classe derivada, recria um objeto AsymmetricAlgorithm de uma cadeia de caracteres XML. Caso contrário, gerará um NotImplementedException.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o par de chaves pública/privada de uma estrutura de EncryptedPrivateKeyInfo do PKCS nº 8 após descriptografar com uma senha baseada em bytes, substituindo as chaves desse objeto.

ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o par de chaves pública/privada de uma estrutura de EncryptedPrivateKeyInfo do PKCS nº 8 após descriptografar com uma senha baseada em caracteres, substituindo as chaves desse objeto.

ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Byte>)

Quando substituído em uma classe derivada, importa uma chave criptografada no formato PEM conforme RFC 7468, substituindo as chaves do objeto.

ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Quando substituído em uma classe derivada, importa uma chave criptografada no formato PEM conforme RFC 7468, substituindo as chaves do objeto.

ImportFromPem(ReadOnlySpan<Char>)

Quando substituído em uma classe derivada, importa uma chave codificada textualmente conforme RFC 7468, substituindo as chaves do objeto.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o par de chaves pública/privada de uma estrutura de PrivateKeyInfo do PKCS nº 8 após a descriptografia, substituindo as chaves desse objeto.

ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa a chave pública de uma estrutura de SubjectPublicKeyInfo X.509 após a descriptografia, substituindo as chaves desse objeto.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
ToXmlString(Boolean)

Quando substituído em uma classe derivada, cria e retorna uma representação de cadeia de caracteres XML do objeto AsymmetricAlgorithm atual. Caso contrário, gerará um NotImplementedException.

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato EncryptedPrivateKeyInfo do PKCS nº 8 para um buffer fornecido, usando uma senha baseada em bytes.

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato EncryptedPrivateKeyInfo do PKCS nº 8 para um buffer fornecido, usando uma senha baseada em caracteres.

TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters, Span<Char>, Int32)

Tenta exportar a chave atual no formato EncryptedPrivateKeyInfo do PKCS nº 8 com uma senha baseada em bytes, codificada em PEM.

TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters, Span<Char>, Int32)

Exporta a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo com uma senha baseada em char, codificada em PEM.

TryExportPkcs8PrivateKey(Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato PrivateKeyInfo do PKCS nº 8 para um buffer fornecido.

TryExportPkcs8PrivateKeyPem(Span<Char>, Int32)

Tenta exportar a chave atual no formato PrivateKeyInfo PKCS nº 8 codificado em PEM para um buffer fornecido.

TryExportSubjectPublicKeyInfo(Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato SubjectPublicKeyInfo do X.509 para um buffer fornecido.

TryExportSubjectPublicKeyInfoPem(Span<Char>, Int32)

Tenta exportar a chave atual no formato SubjectPublicKeyInfo X.509 codificado em PEM para um buffer fornecido.

Implantações explícitas de interface

IDisposable.Dispose()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Para obter uma descrição desse membro, confira Dispose().

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

Confira também