Card |
---|
| Code Block |
---|
| int GRD_API GrdTRU_EncryptAnswerEx(
HANDLE hGrd,
DWORD DWORD dwAddr,
DWORD DWORD dwLng,
void void *pData,
DWORD DWORD dwLngQuestion,
void void *pQuestion,
DWORD DWORD dwAlgoNum_Encrypt,
DWORD DWORD dwAlgoNum_Hash,
void void *pAnswer,
DWORD DWORD *pdwAnswerSize,
DWORD DWORD dwMode,
DWORD DWORD dwReserved,
void 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 | Возвращаемое значение функции |
---|
| Возможные ошибки |
Expand |
---|
| Функция GrdTRU_EncryptAnswerEx предназначена для подготовки данных (ответа) при использовании технологии Trusted Remote Update. При подготовке ответа функция GrdTRU_EncryptAnswerEx генерирует зашифрованный ответ. Этот ответ представляет собой последовательность команд и набор данных. Расшифрование Расшифровка ответа, проверка его подлинности, последующее выполнение команд и запись данных pData по адресу dwAddr производится непосредственно микропрограммой внутри удаленного электронного ключа. Поскольку кроме данных pData, которые должны быть записаны в память удаленного ключа, ответ содержит команды и другую служебную информацию, длина ответа pdwAnswerSize получается больше, чем длина данных dwLng. Соответственно для размещения ответа pAnswer необходимо зарезервировать памяти больше, чем dwLng. Функция проверяет, достаточно ли памяти выделено для ответа, и если размер буфера недостаточен, возвращается код ошибки GrdE_InvalidArg. При этом в переменную pdwAnswerSize записывается минимальный размер буфера для генерации ответа. Это значение необходимо учитывать при повторном выделении памяти для буфера. Зашифрование Шифрование ответа производится аппаратным алгоритмом типа GSII64 с номером dwAlgoNum_Encrypt. На момент зашифрования шифрования этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных или из соответствующей маски электронного ключа. Для последующей проверки подлинности ответа производится вычисление хеш-функции аппаратным алгоритмом типа Hash64 с номером задаваемым через параметр dwAlgoNum_Hash. На момент вычисления этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_Encrypt и dwAlgoNum_Hash. |
|
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 |
---|
| grdHandle [in] Тип: Handle Нэндл, через который будет выполнена данная операция. addr [in] Тип: uint Стартовый адрес (в системе адресации SAM) в памяти удаленного ключа, по которому будет производиться запись данных. data [in] Тип: byte [ ] Буфер, в котором содержатся данные для записи в удаленный ключ question [in] Тип: byte [ ] Указатель на буфер, содержащий расшифрованное число-вопрос. algNumEncrypt [in] Тип: GrdAlgNum Номер алгоритма типа GSII64(AES128), который будет использоваться для шифрования ответа. algNumHash [in] Тип: GrdAlgNum Номер алгоритма типа HASH64(SHA256), который будет использоваться для вычисления хэш-функции для проверки подлинности ответа. answer [out] byte [ ] Указатель на буфер, в который будет помещен зашифрованный ответ. truMode [in] Тип:GrdTRU Константа, которая определяет режим работы. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| Возможные ошибки
|
Expand |
---|
| Функция Метод GrdTRU_EncryptAnswerEx предназначена предназначен для подготовки данных (ответа) при использовании технологии Trusted Remote Update. При подготовке ответа функция метод GrdTRU_EncryptAnswerEx генерирует зашифрованный ответ. Этот ответ представляет собой последовательность команд и набор данных. Расшифрование Расшифровка ответа, проверка его подлинности, последующее выполнение команд и запись данных pData data по адресу dwAddr addr производится непосредственно микропрограммой внутри удаленного электронного ключа. Поскольку кроме данных pData data, которые должны быть записаны в память удаленного ключа, ответ содержит команды и другую служебную информацию, длина ответа pdwAnswerSize answer получается больше, чем длина данных dwLng. Соответственно для размещения ответа pAnswer необходимо зарезервировать памяти больше, чем dwLngразмер данных. Функция Метод проверяет, достаточно ли памяти выделено для ответа, и если размер буфера недостаточен, возвращается код ошибки ошибки GrdE_.InvalidArg. При этом в переменную pdwAnswerSize записывается минимальный размер буфера для генерации ответа. Это значение необходимо учитывать при повторном выделении памяти для буфера. Шифрование Зашифрование ответа производится аппаратным алгоритмом типа GSII64 с номером dwAlgoNum_номером GrdAN.Encrypt. На момент зашифрования шифрования этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией методом GrdTRU_SetKey для ключа с ID, равным dwID id. При использовании GRDUTIL этот ключ берется из базы данных или из соответствующей маски электронного ключа. Для последующей проверки подлинности ответа производится вычисление хеш-функции аппаратным алгоритмом типа Hash64 с номером задаваемым через параметр dwAlgoNum_ GrdAN.Hash. На момент вычисления этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией методом GrdTRU_SetKey для ключа с ID равным dwID id. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией методом GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_ GrdAN.Encrypt и dwAlgoNum_ GrdAN.Hash. |
|
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 |
---|
| grdHandle [in] Тип: Handle Нэндл, через который будет выполнена данная операция. addr [in] Тип: int Стартовый адрес (в системе адресации SAM) в памяти удаленного ключа, по которому будет производиться запись данных. data [in] Тип: byte [ ] Буфер, в котором содержатся данные для записи в удаленный ключ question [in] Тип: byte [ ] Указатель на буфер, содержащий расшифрованное число-вопрос. algoNum_Encrypt [in] Тип: int Номер алгоритма типа GSII64(AES128), который будет использоваться для шифрования ответа. algoNum_Hash [in] Тип: int Номер алгоритма типа HASH64(SHA256), который будет использоваться для вычисления хэш-функции для проверки подлинности ответа. answer [out] byte [ ] Указатель на буфер, в который будет помещен зашифрованный ответ. answerSize [in,out] Тип: int [ ] Указатель на переменную, которая при вызове должна содержать значение длины буфера answer. После вызова в нее будет записан размер буфера answer, использованный для размещения ответа. truMode [in] Тип:GrdTRU Константа, которая определяет режим работы. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| Возможные ошибки |
Expand |
---|
| Функция Метод GrdTRU_EncryptAnswerEx предназначена предназначен для подготовки данных (ответа) при использовании технологии Trusted Remote Update. При подготовке ответа функция метод GrdTRU_EncryptAnswerEx генерирует зашифрованный ответ. Этот ответ представляет собой последовательность команд и набор данных. Расшифрование Расшифровка ответа, проверка его подлинности, последующее выполнение команд и запись данных pData data по адресу dwAddr addr производится непосредственно микропрограммой внутри удаленного электронного ключа. Поскольку кроме данных pData data, которые должны быть записаны в память удаленного ключа, ответ содержит команды и другую служебную информацию, длина ответа pdwAnswerSize answer получается больше, чем длина данных dwLng. Соответственно для размещения ответа pAnswer необходимо зарезервировать памяти больше, чем dwLngразмер данных. Функция Метод проверяет, достаточно ли памяти выделено для ответа, и если размер буфера недостаточен, возвращается код ошибки ошибки GrdE_.InvalidArg.При этом в переменную pdwAnswerSize answerSize записывается минимальный размер буфера для генерации ответа. Это значение необходимо учитывать при повторном выделении памяти для буфера. Зашифрование Шифрование ответа производится аппаратным алгоритмом типа GSII64 с номером dwAlgoNum_номером GrdAN.Encrypt. На момент зашифрования шифрования этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией методом GrdTRU_SetKey для ключа с ID, равным dwID id. При использовании GRDUTIL этот ключ берется из базы данных или из соответствующей маски электронного ключа. Для последующей проверки подлинности ответа производится вычисление хеш-функции аппаратным алгоритмом типа Hash64 с номером задаваемым через параметр dwAlgoNum_ GrdAN.Hash. На момент вычисления этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией методом GrdTRU_SetKey для ключа с ID равным dwID id. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией методом GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_ GrdAN.Encrypt и dwAlgoNum_ GrdAN.Hash. |
|
|