Проверка подписи для указанных данных.
Пространство имен:
CryptoPro.SharpeiСборка: CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)
Синтаксис
| Visual Basic |
|---|
Public Function VerifyData ( _ inputStream As Stream, _ hashAlg As Object, _ signature As Byte() _ ) As Boolean |
| C# |
|---|
public bool VerifyData( Stream inputStream, Object hashAlg, byte[] signature ) |
| Visual C++ |
|---|
public: bool VerifyData( Stream^ inputStream, Object^ hashAlg, array<unsigned char>^ signature ) |
| JavaScript |
|---|
function verifyData(inputStream, hashAlg, signature); |
Параметры
- inputStream
- Type: Stream
Данные, для которых проверяется подпись.
- hashAlg
- Type: System..::..Object
Объект, реализующий алгоритм вычисления хэш по ГОСТ Р 34.11.
- signature
- Type: array<System..::..Byte>[]()[][]
Подпись, подлинность которой необходимо проверить.
Возвращаемое значение
trueTruetruetrue (True в Visual Basic), если продпись подлинна, falseFalsefalsefalse (False в Visual Basic) - иначе.
Примеры
Пример подписи и
проверки подписи данных.
| Visual Basic | |
|---|---|
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
'
' Этот файл содержит информацию, являющуюся
' собственностью компании Крипто Про.
'
' Любая часть этого файла не может быть скопирована,
' исправлена, переведена на другие языки,
' локализована или модифицирована любым способом,
' откомпилирована, передана по сети с или на
' любую компьютерную систему без предварительного
' заключения соглашения с компанией Крипто Про.
'
' Программный код, содержащийся в этом файле, предназначен
' исключительно для целей обучения и не может быть использован
' для защиты информации.
'
' Компания Крипто-Про не несет никакой
' ответственности за функционирование этого кода.
' Пример подписи и проверки подписи текстовой строки.
'
' Данный пример
' 1. Подписывает текстовую строку (в виде потока данных)
' на алгоритме ГОСТ Р 34.10-2001.
' 2. Проверяет правильность подписи и выводит результат.
Imports System
Imports System.IO
Imports System.Text
Imports CryptoPro.Sharpei
Class SignData2
Shared Sub Main()
Try
Dim ByteConverter As ASCIIEncoding = New ASCIIEncoding()
' Данные для подписи: переводим строку в байтовый массив
Dim dataBytes As Byte() = ByteConverter.GetBytes("Подписать эту строку.")
Dim buffer As Byte() = New Byte(dataBytes.Length) {}
' Создаем поток:
Dim mStream As MemoryStream = New MemoryStream(buffer)
' Отправляем данные в поток:
mStream.Write(dataBytes, 0, dataBytes.Length)
mStream.Flush()
' Создаем объект, реализующий алгоритм ГОСТ 3410 через CSP.
Dim Gost As Gost3410CryptoServiceProvider = New Gost3410CryptoServiceProvider()
mStream.Position = 0
' Создаем объект, реализующий алгоритм хэширования ГОСТ 3411
Dim GostHash As Gost3411CryptoServiceProvider = New Gost3411CryptoServiceProvider()
' Подписываем данные из потока.
Dim SignedData As Byte() = Gost.SignData(mStream, GostHash)
' Проверяем правильность подписи и выводим результат:
If (Gost.VerifyData(dataBytes, GostHash, SignedData)) Then
Console.WriteLine("Подпись верна.")
Else
Console.WriteLine("Подпись не верна.")
End If
'Закрываем поток.
mStream.Close()
Catch e As ArgumentNullException
Console.WriteLine(e.Message)
End Try
End Sub
End Class
| |
| C# | |
|---|---|
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
//
// Этот файл содержит информацию, являющуюся
// собственностью компании Крипто-Про.
//
// Любая часть этого файла не может быть скопирована,
// исправлена, переведена на другие языки,
// локализована или модифицирована любым способом,
// откомпилирована, передана по сети с или на
// любую компьютерную систему без предварительного
// заключения соглашения с компанией Крипто-Про.
//
// Программный код, содержащийся в этом файле, предназначен
// исключительно для целей обучения и не может быть использован
// для защиты информации.
//
// Компания Крипто-Про не несет никакой
// ответственности за функционирование этого кода.
// Пример подписи и проверки подписи текстовой строки.
//
// Данный пример
// 1. Подписывает текстовую строку (в виде потока данных)
// на алгоритме ГОСТ Р 34.10-2001.
// 2. Проверяет правильность подписи и выводит результат.
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using CryptoPro.Sharpei;
namespace Samples
{
class SignData2
{
[STAThread]
static void Main()
{
try
{
ASCIIEncoding ByteConverter = new ASCIIEncoding();
// Данные для подписи: переводим строку в байтовый массив
byte[] dataBytes = ByteConverter.GetBytes("Подписать эту строку.");
byte[] buffer = new byte[dataBytes.Length];
// Создаем поток:
MemoryStream mStream = new MemoryStream(buffer);
// Отправляем данные в поток:
mStream.Write(dataBytes, 0, dataBytes.Length);
mStream.Flush();
// Создаем объект, реализующий алгоритм ГОСТ 3410 через CSP.
Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider();
mStream.Position = 0;
// Создаем объект, реализующий алгоритм хэширования ГОСТ 3411
Gost3411CryptoServiceProvider GostHash = new Gost3411CryptoServiceProvider();
// Подписываем данные из потока.
byte[] SignedData = Gost.SignData(mStream, GostHash);
// Проверяем правильность подписи и выводим результат:
if (Gost.VerifyData(dataBytes, GostHash, SignedData))
{
Console.WriteLine("Подпись вычислена верно.");
}
else
{
Console.WriteLine("Подпись вычислена не верно.");
}
// Закрываем поток.
mStream.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.Message);
}
}
}
}
| |
Разрешения
| Разрешение | Описание |
|---|---|
| KeyContainerPermission | Для открытия существующего контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности: Demand . |
| KeyContainerPermission | Для создания контейнера с заданным (не случаыным именем). Связанные перечисления: Create. Действия по обеспечению безопасности: Demand . |
Исключения
| Исключение | Условие |
|---|---|
| CryptographicException | halg не является алгоритмом хэширования по ГОСТ Р 34.11. |
Версии CSP:
КриптоПро CSP 2.0, КриптоПро CSP 3.0, КриптоПро CSP 3.6