# ECDsaCng Clase

## Definición

Proporciona una implementación de CNG (Cryptography Next Generation) del algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm).

``public ref class ECDsaCng sealed : System::Security::Cryptography::ECDsa``
``public sealed class ECDsaCng : System.Security.Cryptography.ECDsa``
``````type ECDsaCng = class
inherit ECDsa``````
``````Public NotInheritable Class ECDsaCng
Inherits ECDsa``````
Herencia
Herencia

## Ejemplos

En el ejemplo siguiente se muestra cómo usar la ECDsaCng clase para firmar un mensaje y cómo usar la firma para comprobar que el mensaje no se ha modificado.

``````using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

class Alice
{
public static void Main(string[] args)
{
Bob bob = new Bob();
using (ECDsaCng dsa = new ECDsaCng())
{
dsa.HashAlgorithm = CngAlgorithm.Sha256;
bob.key = dsa.Key.Export(CngKeyBlobFormat.EccPublicBlob);

byte[] data = new byte[] { 21, 5, 8, 12, 207 };

byte[] signature = dsa.SignData(data);

}
}
}
public class Bob
{
public byte[] key;

public void Receive(byte[] data, byte[] signature)
{
using (ECDsaCng ecsdKey = new ECDsaCng(CngKey.Import(key, CngKeyBlobFormat.EccPublicBlob)))
{
if (ecsdKey.VerifyData(data, signature))
Console.WriteLine("Data is good");
else
}
}
}
``````
``````Imports System.IO
Imports System.Security.Cryptography
Imports System.Text

Class Alice

Public Shared Sub Main(ByVal args() As String)
Dim bob As New Bob()
If (True) Then
Using dsa As New ECDsaCng()
dsa.HashAlgorithm = CngAlgorithm.Sha256
bob.key = dsa.Key.Export(CngKeyBlobFormat.EccPublicBlob)
Dim data() As Byte = {21, 5, 8, 12, 207}
Dim signature As Byte() = dsa.SignData(data)
End Using
End If

End Sub
End Class

Public Class Bob
Public key() As Byte

Public Sub Receive(ByVal data() As Byte, ByVal signature() As Byte)
Using ecsdKey As New ECDsaCng(CngKey.Import(key, CngKeyBlobFormat.EccPublicBlob))
If ecsdKey.VerifyData(data, signature) Then
Console.WriteLine("Data is good")
Else
End If
End Using

End Sub
End Class
``````

## Comentarios

Esta clase solo se debe usar directamente al realizar la interoperabilidad de la plataforma con la biblioteca CNG de Windows. Cuando no se necesita la interoperabilidad de la plataforma, debe usar los ECDsa.Create métodos de fábrica en lugar de una implementación derivada específica.

## Constructores

 Inicializa una nueva instancia de la clase ECDsaCng con un par de claves aleatorio. Inicializa una nueva instancia de la clase ECDsaCng mediante el objeto CngKey especificado. Inicializa una nueva instancia de la clase ECDsaCng cuyo par de claves pública-privada se genera sobre la curva especificada. Inicializa una nueva instancia de la clase ECDsaCng con un tamaño de clave de destino especificado.

## Campos

 Representa el tamaño, en bits, del módulo de claves que usa el algoritmo asimétrico. (Heredado de AsymmetricAlgorithm) Especifica los tamaños de clave admitidos por el algoritmo asimétrico. (Heredado de AsymmetricAlgorithm)