Card |
---|
| Code Block |
---|
| int GRD_API GrdTRU_EncryptAnswerEx(
HANDLE hGrd,
DWORD dwAddr,
DWORD dwLng,
void *pData,
DWORD dwLngQuestion,
void *pQuestion,
DWORD dwAlgoNum_Encrypt,
DWORD dwAlgoNum_Hash,
void *pAnswer,
DWORD *pdwAnswerSize,
DWORD dwMode,
DWORD dwReserved,
void *pReserved
); |
Expand |
---|
| hGrd | хэндл, через который будет выполнена данная операция. В ключ, соответствующий этому хэндлу должен быть записан тот же секретный ключ, что и в удаленном ключе. Также ключ должен содержать алгоритмы GSII64 (AES128) и HASH64 (SHA256), в качестве определителей которых используется секретный ключ | dwAddr | стартовый адрес (в системе адресации SAM) в памяти удаленного ключа, по которому будет производиться запись данных | dwLng | длина буфера данных, которые должны быть записаны в удаленный ключ | pData | буфер, содержащий данные для записи в удаленный ключ | dwLngQuestion | размер присланного удаленным пользователем параметра число-вопрос | pQuestion | указатель на буфер, содержащий расшифрованное число-вопрос | dwAlgoNum_Encrypt | номер алгоритма типа GSII64(AES128), который будет использоваться для зашифрования ответа. Определителем алгоритма должен быть тот же секретный 128-битный ключ, что был записан операцией GrdTRU_SetKey в удаленный ключ | dwAlgoNum_Hash | номер алгоритма типа HASH64(SHA256), который будет использоваться для вычисления хэш-функции для проверки подлинности ответа. Определителем алгоритма должен быть тот же секретный 128-битный ключ, что был записан операцией GrdTRU_SetKey в удаленный ключ | pAnswer | указатель на буфер, в который будет помещен зашифрованный ответ. Под буфер рекомендуется выделять памяти не менее dwLng*3 + 128 байт | pdwAnswerSize | указатель на переменную типа DWORD, которая при вызове должна содержать значение длины буфера pAnswer. После вызова в нее будет записан размер буфера pAnswer, использованный для размещения ответа. Если изначально размер буфера был меньше необходимого, функция возвращает код ошибки GrdE_InvalidArg. В таком случае это значение необходимо использовать в качестве минимального размера при выделении нового буфера | dwMode | константа определяющая режим работы: GrdTRU_CryptMode_GSII64 | шифрование на базе GSII64 ( 8 байт), хеш на базе GSII64 (8 байт) | GrdTRU_CryptMode_AES128SHA256 | шифрование на базе AES128(16 байт), хеш на базе SHA256(32 байт) |
| dwReserved | не используется. Параметр должен быть равен 0. | pReserved | не используется. Параметр должен быть равен NULL. |
|
Expand |
---|
title | Возвращаемое значение функции |
---|
| Возможные ошибки GrdE_AlgoNotFound | Аппаратный алгоритм с заданным номером не существует | GrdE_CRCErrorFunc | Ошибка при вызове аппаратного алгоритма | GrdE_InactiveItem | Аппаратный алгоритм деактивирован, обращение к нему невозможно | GrdE_SystemDataCorrupted | Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует) | GrdE_NoQuestion | Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа | GrdE_InvalidData | Неверный формат данных для удаленного программирования | GrdE_QuestionOK | Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования | GrdE_UpdateNotComplete | Ошибка при записи данных удаленного программирования. Операция не была завершена | GrdE_InvalidHash | Неверное значение MAC (Message Authentication Code) | | Стандартный набор ошибок |
|
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdTRU_EncryptAnswerEx(Handle grdHandle, uint addr, byte[] data, byte[] question,
GrdAlgNum algNumEncrypt,GrdAlgNum algNumHash, out byte[] answer, GrdTRU truMode)
|
Expand |
---|
title | Возвращаемое значение метода |
---|
| |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdTRU_EncryptAnswerEx(Handle grdHandle, int addr, byte[] data, byte[] question, int algoNum_Encrypt,
int algoNum_Hash, byte[] answer, int[] answerSize, GrdTRU truMode) |
Expand |
---|
title | Возвращаемое значение метода |
---|
| |
|
|