{dojo-tabs:theme=tundra|id=1}
{dojo-tab:title=C|selected=true}
*C*
int GRD_API GrdTRU_DecryptQuestionEx(
HANDLE |
| DWORDDWORDDWORDvoid DWORDDWORDDWORDvoid DWORDDWORDvoid
{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 | хэндл, через который будет выполнена данная операция. | dwAlgoNum_Decrypt | номер аппаратного алгоритма, который будет использоваться для расшифровывания числа-вопроса. | dwAlgoNum_Hash | номер аппаратного алгоритма, который будет использоваться для проверки подлинности числа-вопроса на основании MAC | dwLngQuestion | размер присланного удаленным пользователем параметра число-вопрос | pQuestion | буфер, содержащий присланное удаленным пользователем число-вопрос. | dwID | ID ключа удаленного пользователя, для которого будет произведена операция | dwPublic | численное значение Public Code ключа удаленного пользователя, для которого будет произведена операция | dwLngHash | длина данных в буфере, содержащий MAC, вычисленный на ключе удаленного пользователя. | pHash | буфер, содержащий MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт | dwMode | константа определяющая режим работы: GrdTRU_CryptMode_GSII64 | шифрование на базе GSII64 ( 8 байт), хеш на базе GSII64 (8 байт) | GrdTRU_CryptMode_AES128SHA256 | шифрование на базе AES128(16 байт), хеш на базе SHA256(32 байт) |
| dwReserved | не используется. Параметр должен быть равен 0. | pReserved | не используется. Параметр должен быть равен NULL. |
|
|
| Выходные параметрыВозвращаемое значение функции |
| pQuestion | после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. |
Возможные ошибки GrdE_SystemDataCorrupted | Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует) | GrdE_NoQuestion | Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа | GrdE_InvalidData | Неверный формат данных для удаленного программирования | GrdE_QuestionOK | Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования | GrdE_UpdateNotComplete | Ошибка при записи данных удаленного программирования. Операция не была завершена | GrdE_InvalidHash | Неверное значение MAC (Message Authentication Code) | |
|
| Стандартный набор Expand |
---|
| Использование функции GrdTRU_DecryptQuestionEx позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает GrdE_OK. Расшифрованное число-вопрос помещается в тот же буфер pQuestion, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования. Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 (AES128) с номером, задаваемым dwAlgoNum_Decrypt. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных. Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 (SHA256) с номером dwAlgoNum_Hash. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_Decrypt и dwAlgoNum_Hash. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdTRU_DecryptQuestionEx(Handle grdHandle, GrdAlgNum algNumDecrypt, GrdAlgNum algNumHash, byte[] question,
uint id, uint publicCode, byte[] hash, GrdTRU truMode)
|
|
| | grdHandle [in] Тип: Handle Нэндл, через который будет выполнена данная операция. algNumDecrypt [in] Тип: GrdAlgNum Номер аппаратного алгоритма, который будет использоваться для расшифровывания числа-вопроса. algNumHash [in] Тип: GrdAlgNum Номер аппаратного алгоритма, который будет использоваться для проверки подлинности числа-вопроса на основании MAC question [in,out] Тип: byte [ ] Буфер, который содержит присланный удаленным пользователем число-вопрос. id [in] Тип: uint ID ключа удаленного пользователя, для которого будет произведена операция. publicCode [in] Тип: uint Численное значение PublicCode ключа удаленного пользователя, для которого будет произведена операция. hash [in] Тип: byte [ ] Буфер, который содержит MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт truMode [in] Тип: GrdTRU Константа, которая определяет режим работы. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| question | после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. |
Возможные ошибки |
Expand |
---|
| Использование метода GrdTRU_DecryptQuestionEx позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным id и Public Code равным publicCode. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, метод возвращает GrdE.OK. Расшифрованное число-вопрос помещается в тот же буфер question, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования. Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 (AES128) с номером, задаваемым GrdAN.Decrypt. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке методом GrdTRU_SetKey для ключа с ID, равным id. При использовании GRDUTIL этот ключ берется из базы данных. Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 (SHA256) с номером GrdAN.Hash. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке методом GrdTRU_SetKey для ключа с ID равным id. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также методом GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах GrdAN.Decrypt и GrdAN.Hash. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdTRU_DecryptQuestionEx(Handle grdHandle, int algoNum_Decrypt, int algoNum_Hash,
byte[] question, int id, int publicCode, byte[] hash, GrdTRU truMode) |
Expand |
---|
| grdHandle [in] Тип: Handle Нэндл, через который будет выполнена данная операция. algNum_Decrypt [in] Тип: int Номер аппаратного алгоритма, который будет использоваться для расшифровывания числа-вопроса. algNum_Hash [in] Тип: int Номер аппаратного алгоритма, который будет использоваться для проверки подлинности числа-вопроса на основании MAC question [in,out] Тип: byte [ ] Буфер, который содержит присланный удаленным пользователем число-вопрос. id [in] Тип: int ID ключа удаленного пользователя, для которого будет произведена операция. publicCode [in] Тип: int Численное значение PublicCode ключа удаленного пользователя, для которого будет произведена операция. hash [in] Тип: byte [ ] Буфер, который содержит MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт truMode [in] Тип: GrdTRU Константа, которая определяет режим работы. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| question | после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. |
Возможные ошибки |
Expand |
---|
| Использование метода GrdTRU_DecryptQuestionEx позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным id и Public Code равным publicCode. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, метод возвращает GrdE.OK. Расшифрованное число-вопрос помещается в тот же буфер question, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования. Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 (AES128) с номером, задаваемым GrdAN.Decrypt. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке методом GrdTRU_SetKey для ключа с ID, равным id. При использовании GRDUTIL этот ключ берется из базы данных. Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 (SHA256) с номером GrdAN.Hash. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке методом GrdTRU_SetKey для ключа с ID равным id. При использовании GRDUTIL этот ключ берется из базы данных. Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также методом GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах GrdAN.Decrypt и GrdAN.Hash. |
|
| Пример | Пример для используемого средства разработки см. в директории: "\%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\" |