Вычисляет подпись для заданного значения хэш.
Пространство имен:
CryptoPro.SharpeiСборка: CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)
Синтаксис
| Visual Basic |
|---|
Public Function SignHash ( _ hash As Byte() _ ) As Byte() |
| C# |
|---|
public byte[] SignHash( byte[] hash ) |
| Visual C++ |
|---|
public: array<unsigned char>^ SignHash( array<unsigned char>^ hash ) |
| JavaScript |
|---|
function signHash(hash); |
Параметры
- hash
- Type: array<System..::..Byte>[]()[][]
Подписываемое значение хэш.
Возвращаемое значение
Подпись хэша, выполненная по алгоритму ГОСТ Р 34.10.
Заметки
Функция тождественна CreateSignature(array<Byte>[]()[][]).
Примеры
Пример подписи и
проверки подписи хэш.
| Visual Basic | |
|---|---|
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
'
' Этот файл содержит информацию, являющуюся
' собственностью компании Крипто Про.
'
' Любая часть этого файла не может быть скопирована,
' исправлена, переведена на другие языки,
' локализована или модифицирована любым способом,
' откомпилирована, передана по сети с или на
' любую компьютерную систему без предварительного
' заключения соглашения с компанией Крипто Про.
'
' Программный код, содержащийся в этом файле, предназначен
' исключительно для целей обучения и не может быть использован
' для защиты информации.
'
' Компания Крипто-Про не несет никакой
' ответственности за функционирование этого кода.
' Пример подписи и проверки подписи значения хэш.
'
' Данный пример:
' 1.Подписывает произвольное значение хэш (полученное по алгоритму
' ГОСТ 34.11, т. е. длиной 32 байта) на алгоритме ГОСТ Р 34.10-2001.
' 2.Проверяет полученную подпись и выводит результат.
Imports System
Imports System.Security.Cryptography
Imports CryptoPro.Sharpei
Class SignHash
Shared Sub Main()
Try
' Объект, реализующий алгоритм ГОСТ 3410.
Dim Gost As New Gost3410CryptoServiceProvider()
' Хэш, который требуется подписать.
Dim Hash As Byte() = {59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135}
' Получаем OID алгоритма хэширования его по имени.
Dim OID As String = CryptoConfig.MapNameToOID("Gost3411")
' Вычисляем подпись.
Dim SignedHashValue As Byte() = Gost.SignHash(Hash, OID)
' Проверяем правильность подписи и выводим результат.
Dim b As Boolean = Gost.VerifyHash(Hash, OID, SignedHashValue)
If b Then
Console.WriteLine("Подпись верна.")
Else
Console.WriteLine("Подпись не верна.")
End If
Catch e As ArgumentNullException
Console.WriteLine(e.Message)
End Try
End Sub
End Class
| |
| C# | |
|---|---|
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
//
// Этот файл содержит информацию, являющуюся
// собственностью компании Крипто-Про.
//
// Любая часть этого файла не может быть скопирована,
// исправлена, переведена на другие языки,
// локализована или модифицирована любым способом,
// откомпилирована, передана по сети с или на
// любую компьютерную систему без предварительного
// заключения соглашения с компанией Крипто-Про.
//
// Программный код, содержащийся в этом файле, предназначен
// исключительно для целей обучения и не может быть использован
// для защиты информации.
//
// Компания Крипто-Про не несет никакой
// ответственности за функционирование этого кода.
// Пример подписи и проверки подписи значения хэш.
//
// Данный пример:
// 1.Подписывает произвольное значение хэш (полученное по алгоритму
// ГОСТ 34.11, т. е. длиной 32 байта) на алгоритме ГОСТ Р 34.10-2001.
// 2.Проверяет полученную подпись и выводит результат.
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using CryptoPro.Sharpei;
namespace Samples
{
class SignHash
{
[STAThread]
static void Main()
{
try
{
// Объект, реализующий алгоритм ГОСТ 3410.
Gost3410CryptoServiceProvider Gost = new Gost3410CryptoServiceProvider();
// Хэш, который требуется подписать.
byte[] Hash = { 0xE4, 0x2C, 0x17, 0xAA, 0x76, 0x5F, 0xA7, 0xEC,
0xEC, 0x80, 0x35, 0x6D, 0x67, 0x42, 0x5E, 0x5D,
0xD7, 0xFA, 0x3E, 0x03, 0x05, 0x2D, 0xFD, 0x53,
0xF8, 0x36, 0xAB, 0x55, 0x24, 0x00, 0xBD, 0x1B};
// Подписываем значение хэш.
byte[] SignedHash = Gost.SignHash(Hash);
// Проверяем правильность подписи и выводим результат:
bool b = Gost.VerifyHash(Hash, SignedHash);
if (b)
{
Console.WriteLine("Подпись верна.");
}
else
{
Console.WriteLine("Подпись не верна.");
}
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.Message);
}
}
}
}
| |
Разрешения
| Разрешение | Описание |
|---|---|
| KeyContainerPermission | Для открытия существующего контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности: Demand . |
| KeyContainerPermission | Для создания контейнера с заданным (не случайным именем). Связанные перечисления: Create. Действия по обеспечению безопасности: Demand . |
| KeyContainerPermission | Для подписи на не случайном контейнере. Связанные перечисления: Sign. Действия по обеспечению безопасности: Demand . |
Исключения
| Исключение | Условие |
|---|---|
| System..::..ArgumentNullException | Значение параметра hash равно nullNothingnullptrссылка null (Nothing в Visual Basic). |
| CryptographicException | Объект не содержит секретного ключа или хэш имееет неправильный размер. |
Версии CSP:
КриптоПро CSP 2.0, КриптоПро CSP 3.0, КриптоПро CSP 3.6