DSASignatureDeformatter::SetHashAlgorithm Method (String^)

 

Specifies the hash algorithm for the Digital Signature Algorithm (DSA) signature deformatter.

Namespace:   System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

public:
virtual void SetHashAlgorithm(
	String^ strName
) override

Parameters

strName
Type: System::String^

The name of the hash algorithm to use for the signature deformatter.

Exception Condition
CryptographicUnexpectedOperationException

The strName parameter does not map to the SHA1 hash algorithm.

Notes to Implementers:

This method is not used. The DSA algorithm requires the SHA1 hash algorithm.

#using <System.dll>

using namespace System;
using namespace System::Security::Cryptography;
int main()
{
   try
   {

      //Create a new instance of DSACryptoServiceProvider.
      DSACryptoServiceProvider^ DSA = gcnew DSACryptoServiceProvider;

      //The hash to sign.
      array<Byte>^Hash = {59,4,248,102,77,97,142,201,210,12,224,93,25,41,100,197,213,134,130,135};

      //Create an DSASignatureFormatter object and pass it the 
      //DSACryptoServiceProvider to transfer the key information.
      DSASignatureFormatter^ DSAFormatter = gcnew DSASignatureFormatter( DSA );

      //Set the hash algorithm to SHA1.
      DSAFormatter->SetHashAlgorithm( "SHA1" );

      //Create a signature for HashValue and return it.
      array<Byte>^SignedHash = DSAFormatter->CreateSignature( Hash );

      //Create an DSASignatureDeformatter object and pass it the 
      //DSACryptoServiceProvider to transfer the key information.
      DSASignatureDeformatter^ DSADeformatter = gcnew DSASignatureDeformatter( DSA );

      //Verify the hash and display the results to the console.
      if ( DSADeformatter->VerifySignature( Hash, SignedHash ) )
      {
         Console::WriteLine( "The signature was verified." );
      }
      else
      {
         Console::WriteLine( "The signature was not verified." );
      }
   }
   catch ( CryptographicException^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

.NET Framework
Available since 1.1
Return to top
Show: