- Created by Dyakov Alexey, last modified by Guardant on Dec 01, 2014
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 23 Next »
Функция(метод) GrdSign вычисляет электронную цифровую подпись входного сообщения при помощи аппаратного алгоритма ECC160.
int GRD_API GrdSign( HANDLE hGrd, DWORD dwAlgoNum, DWORD dwDataLng, void *pData, DWORD dwSignResultLng, void *pSignResult, void *pReserved );
hGrd [in] |
хэндл, через который будет выполнена данная операция |
dwAlgoNum [in] |
числовое имя аппаратного алгоритма электронной цифровой подписи |
dwDataLng [in] |
длина входного сообщения (20 байт для ECC160) |
pData [in] |
указатель на подписываемое входное сообщение |
dwSignResultLng [in] |
длина выходного буфера для электронной цифровой подписи (40 байт для ECC160) |
pSignResult [out] |
указатель на выходной буфер, в который будет сохранена электронная цифровая подпись |
pReserved |
зарезервировано |
нет ошибок |
|
недопустимый параметр при вызове функции |
|
для алгоритма/ячейки сервис не предусмотрен |
|
алгоритма с указанным числовым именем не существует |
|
счетчик алгоритма достиг нулевого значения |
Функция GrdSign позволяет вычислить электронно-цифровую подпись (ЭЦП) входного сообщения при помощи аппаратного алгоритма ЭЦП. Вычисление выполняется алгоритмом с числовым именем, заданным в параметре dwAlgoNum. Этот алгоритм предварительно должен быть создан, в противном случае возвращается ошибка GrdE_AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE_GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE_InactiveItem. При попытке вызвать функцию для моделей ключей Stealth II или Stealth III, возвращается ошибка GrdE_NoService.
Длина входного сообщения задаётся параметром dwDataLng. Сообщение для подписи должно находиться по адресу, указанному в параметре pData. Буфер для ЭЦП должен быть зарезервирован заранее, а его длина передана функции через параметр dwSignResultLng. Если один из указателей равен NULL, а также неверно заданы длины входного сообщения или выходного буфера ЭЦП, функция возвращает GrdE_InvalidArg. В случае успешного выполнения, по адресу pSignResult будет находится вычисленная ЭЦП от входного сообщения, при этом функция возвращает GrdE_OK. Для алгоритма ECC160 длина входного сообщения и длина возвращаемой электронной цифровой подписи должны быть GrdECC160_MESSAGE_SIZE и GrdECC160_DIGEST_SIZE соответственно.
public static GrdE GrdSign(Handle grdHandle, GrdAlgNum algNum, byte[] data, out byte[] digestSign)
нет ошибок |
|
требуется инициализация API (вызов GrdStartup) |
|
недействительный хэндл |
|
недопустимый параметр при вызове функции |
|
ключ не поддерживает данную функцию |
|
алгоритма с указанным числовым именем не существует |
|
ошибка CRC при выполнении функции |
|
счетчик алгоритма достиг нулевого значения |
Метод GrdSign позволяет вычислять цифровую подпись массива данных при помощи аппаратного алгоритма типа ECC. Вычисление цифровой подписи выполняется алгоритмом с числовым именем, заданным в параметре algNum. Этот алгоритм предварительно должен быть создан, в противном случае возвращается ошибка GrdE.AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE.GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE.InactiveItem. Ссылка на массив данных указана в параметре data. Возвращаемая цифровая подпись находится в массиве digestSign. Для алгоритма ECC160 длина массива данных и длина возвращаемой цифровой подписи должны быть GrdECC160.MESSAGE_SIZE (20 байт) и GrdECC160_DIGEST_SIZE (40 байт) соответственно.
public static GrdE GrdSign(Handle grdHandle, int algNum, byte[] data, byte[] sign)
grdHandle [in]
Тип: Handle
хэндл, через который будет выполнена данная операция.
algNum [in]
Тип: int
Числовое имя аппаратного алгоритма.
data [in]
Тип: byte [ ]
Указатель на массив данных.
sign [out]
Тип: byte [ ]
Указатель на массив цифровой подписи.
нет ошибок |
|
требуется инициализация API (вызов GrdStartup) |
|
недействительный хэндл |
|
недопустимый параметр при вызове функции |
|
ключ не поддерживает данную функцию |
|
алгоритма с указанным числовым именем не существует |
|
ошибка CRC при выполнении функции |
|
счетчик алгоритма достиг нулевого значения |
Метод GrdSign позволяет вычислять цифровую подпись массива данных при помощи аппаратного алгоритма типа ECC. Вычисление цифровой подписи выполняется алгоритмом с числовым именем, заданным в параметре algNum. Этот алгоритм предварительно должен быть создан, в противном случае возвращается ошибка GrdE.AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE.GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE.InactiveItem. Ссылка на массив данных указана в параметре data. Возвращаемая цифровая подпись находится в массиве sign. Для алгоритма ECC160 длина массива данных и длина возвращаемой цифровой подписи должны быть GrdECC160.MESSAGE_SIZE (20 байт) и GrdECC160.DIGEST_SIZE (40 байт) соответственно.
- No labels