Вычисляет подпись для заданного значения хэш.
Пространство имен:
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 | Copy Code |
---|---|
' 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# | Copy Code |
---|---|
// 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