Функция GrdSign позволяет вычислять вычислить электронно-цифровую подпись (ЭЦП) входного сообщения при помощи аппаратного алгоритма электронной цифровой подписиалгоритма ЭЦП. Вычисление цифровой подписи выполняется алгоритмом с числовым именем, заданным в параметре dwAlgoNum. Этот алгоритм предварительно должен быть создан, в противном случае возвращается ошибка GrdE_AlgoNotFound. Если в дескрипторе алгоритма установлен флаг "уменьшение счетчика", то вычитание счетчика алгоритма происходит при каждом вызове GrdSign. При достижении счетчиком нулевого значения, возвращается ошибка GrdE_GPis0. Если при создании алгоритма или в процессе работы он был переведен в неактивное состояние, возвращается ошибка GrdE_InactiveItem. При попытке вызвать функцию для моделей ключей Stealth II или Stealth III, возвращается ошибка GrdE_NoService. Длина входного сообщения задаётся параметром dwDataLng. Сообщение для подписи должно находиться по адресу, указанному в параметре pData. Возвращаемая цифровая подпись находится по адресу pSignResult и имеет длину dwSignResultLng. Буфер для ЭЦП должен быть зарезервирован заранее, а длина передана функции через параметр dwSignResultLng. В случае успешного выполнения, по адресу pSignResult будет находится вычисленная ЭЦП, при этом функция возвращает GrdE_OK. Для алгоритма ECC160 длина массива данных и длина возвращаемой входного сообщения и длина возвращаемой электронной цифровой подписи должны быть GrdECC160_MESSAGE_SIZE (20 байт) и GrdECC160_DIGEST_SIZE (40 байт) соответственно. |