Функция(метод) GrdSign вычисляет электронную электронно-цифровую подпись блока байт входного сообщения при помощи аппаратного аппаратно-реализованного криптографического алгоритма ECC160.
Синтаксис
Deck of Cards |
---|
|
Wiki Markup |
---|
{dojo-tabs:theme=tundra|id=1}
{dojo-tab:title=C|selected=true}
*C*
GrdSign(
HANDLE hGrd,
DWORD dwAlgoNum,
DWORD dwDataLng,
void |
| *pData,
DWORD dwSignResultLng,
void |
|
{dojo-tab}
{dojo-tab:title=C#|selected=true}
*C#*
{dojo-tab}
{dojo-tab:title=Visual Basic (Declaration)}
*Visual Basic*
{dojo-tab}
{dojo-tab:title=Visual C++}
*Visual C++*
{dojo-tab}
{dojo-tabs} | Входные параметры | hGrd [in] | хэндл, через который будет выполнена данная операция | dwAlgoNum |
|
|
| числовое имя аппаратного алгоритма типа ECC Algorithm | [in] | номер дескриптора алгоритма электронно-цифровой подписи ECC160 | dwDataLng [in] | длина входного сообщения (20 байт |
|
|
dwDataLng | длина массива данных (20 байтов для ECC160) | pData [in] | указатель |
|
|
на массив данныхна входное сообщение | dwSignResultLng [in] | длина |
|
|
массива выходного буфера для электронно-цифровой подписи (40 |
|
|
байтов байт для ECC160) | pSignResult [out] | указатель на |
|
|
массив цифровой подписивыходной буфер, в который будет сохранена электронно-цифровая подпись | pReserved | зарезервировано |
|
|
Выходные параметрыВозвращаемое значение функции |
| |
|
|
GrdE_NeedInitialization | требуется инициализация API (вызов GrdStartup) |
GrdE_InvalidHandle | недействительный хэндл |
Expand |
---|
| Функция GrdSign позволяет вычислить электронно-цифровую подпись (ЭЦП) входного сообщения с помощью аппаратного алгоритма ЭЦП. Микропрограмма внутри электронного ключа считывает дескриптор алгоритма с заданным числовым именем, проверяет отсутствие в нём блокировок и только после этого переходит к выполнению операции. Дескриптор алгоритма с заданным в параметре dwAlgoNum номером должен присутствовать в памяти ключа, в противном случае функция возвращает ошибку GrdE_AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE_GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE_InactiveItem. При попытке вызвать функцию для моделей ключей Stealth II или Stealth III, возвращается ошибка GrdE_NoService. Длина входного сообщения задаётся параметром dwDataLng. Сообщение для подписи должно находиться по адресу, указанному в параметре pData. Буфер для ЭЦП должен быть зарезервирован заранее, а его длина передана функции через параметр dwSignResultLng. Функция проверяет входные указатели и длины на нулевые значение и возвращает GrdE_InvalidArg, если любое из значений окажется нулевым. В случае успешного выполнения, по адресу pSignResult будет находится вычисленная ЭЦП от входного сообщения, при этом функция возвращает GrdE_OK. Для алгоритма ECC160 длина входного сообщения и длина возвращаемой электронно-цифровой подписи должны быть GrdECC160_MESSAGE_SIZE и GrdECC160_DIGEST_SIZE соответственно. |
|
Card |
---|
|
Code Block |
---|
| public static GrdE GrdSign(Handle grdHandle, GrdAlgNum algNum, byte[] data, out byte[] digestSign)
|
Expand |
---|
| grdHandle [in] Тип: Handle Хэндл, через который будет выполнена данная операция. algNum [in] Тип: GrdAlgNum Номер дескриптора алгоритма электронно-цифровой подписи ECC160. data [in] Тип: byte [ ] Входное сообщение для подписи. digestSign [out] Тип: byte [ ] Выходной буфер, в который будет сохранена электронно-цифровая подпись. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| |
|
GrdE____CRCErrorFuncошибка CRC при выполнении функции | GrdE_.GPis0 | счетчик алгоритма достиг нулевого значения |
|
|
Функция вычислять цифровую подпись массива данных при помощи аппаратного алгоритма типа ECC. Вычисление цифровой подписи производится алгоритмом с числовым именем, заданным в параметре dwAlgoNum. Этот алгоритм предварительно должен быть создан.Если в дескрипторе алгоритма установлен флаг nsafl_GP_dec (уменьшение счетчика), вычитание счетчика GP происходит при каждом вызове GrdSign.
Длина массива данных (в байтах) pData задается параметром dwDataLng и зависит от типа алгоритма.
Длина возвращаемой цифровой подписи (в байтах) pSignResult также зависит от типа алгоритма и задаётся параметром dwSignResultLng.
Для алгоритма ECC160 длина массива данных и длина возвращаемой цифровой подписи должны быть GrdECC160_MESSAGE_SIZE (20 байт) и GrdECC160_DIGEST_SIZE (40 байт) соответственно.
Expand |
---|
|
Пример для используемого средства разработки см. в директории:
"\%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\x86\Win32\General Guardant API\"
или
"\%Program Files%\Guardant\Guardant 6\%Public Code%\Samples\x64\Win64\General Guardant API\"вычислить электронно-цифровую подпись (ЭЦП) входного сообщения с помощью аппаратного алгоритма ЭЦП. Микропрограмма внутри электронного ключа считывает дескриптор алгоритма с заданным числовым именем, проверяет отсутствие в нём блокировок и только после этого переходит к выполнению операции. Дескриптор алгоритма с заданным в параметре dwAlgoNum номером должен присутствовать в памяти ключа, в противном случае метод возвращает ошибку GrdE.AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE.GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE.InactiveItem. При попытке вызвать метод для моделей ключей Stealth II или Stealth III, возвращается ошибка GrdE.NoService. Сообщение для подписи должно находиться в массиве data. Буфер для ЭЦП должен быть зарезервирован заранее и передан методу через параметр digestSign. Если длина любого из массивов окажется нулевой, метод возвращает GrdE.InvalidArg. В случае успешного выполнения, в массиве digestSign будет находится вычисленная ЭЦП от входного сообщения, при этом метод возвращает GrdE.OK. Для алгоритма ECC160 длина входного сообщения и длина возвращаемой электронно-цифровой подписи должны быть GrdECC160.MESSAGE_SIZE и GrdECC160.DIGEST_SIZE соответственно. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdSign(Handle grdHandle, int algNum, byte[] data, byte[] sign) |
Expand |
---|
| grdHandle [in] Тип: Handle хэндл, через который будет выполнена данная операция. algNum [in] Тип: int Номер дескриптора алгоритма электронно-цифровой подписи ECC160. data [in] Тип: byte [ ] Входное сообщение для подписи. sign [out] Тип: byte [ ] Выходной буфер, в который будет сохранена электронно-цифровая подпись. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| |
Expand |
---|
| Метод GrdSign позволяет вычислить электронно-цифровую подпись (ЭЦП) входного сообщения с помощью аппаратного алгоритма ЭЦП. Микропрограмма внутри электронного ключа считывает дескриптор алгоритма с заданным числовым именем, проверяет отсутствие в нём блокировок и только после этого переходит к выполнению операции. Дескриптор алгоритма с заданным в параметре dwAlgoNum номером должен присутствовать в памяти ключа, в противном случае метод возвращает ошибку GrdE.AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE.GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE.InactiveItem. При попытке вызвать метод для моделей ключей Stealth II или Stealth III, возвращается ошибка GrdE.NoService. Сообщение для подписи должно находиться в массиве data. Буфер для ЭЦП должен быть зарезервирован заранее и передан методу через параметр sign. Если длина любого из массивов окажется нулевой, метод возвращает GrdE.InvalidArg. В случае успешного выполнения, в массиве sign будет находится вычисленная ЭЦП от входного сообщения, при этом метод возвращает GrdE.OK. Для алгоритма ECC160 длина входного сообщения и длина возвращаемой электронно-цифровой подписи должны быть GrdECC160.MESSAGE_SIZE и GrdECC160.DIGEST_SIZE соответственно. |
|
|