- Created by Dyakov Alexey, last modified by Guardant R&D on Oct 14, 2014
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 9 Next »
Функция GrdTRU_DecryptQuestion расшифровывает число-вопрос и проверяет подлинность его и остальных присланных с удаленного компьютера параметров.
int GRD_API GrdTRU_DecryptQuestion( HANDLE hGrd, DWORD dwAlgoNum_GSII64, DWORD dwAlgoNum_Hash64, void *pQuestion, DWORD dwID, DWORD dwPublic, void *pHash );
hGrd |
хэндл, через который будет выполнена данная операция |
dwAlgoNum_GSII64 |
номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса |
dwAlgoNum_Hash64 |
номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC |
pQuestion |
буфер, содержащий присланное удаленным пользователем число-вопрос. Длина буфера 8 байт |
dwID |
ID ключа удаленного пользователя, для которого будет произведена операция |
dwPublic |
численное значение Public Code ключа удаленного пользователя, для которого будет произведена операция |
pHash |
буфер, содержащий MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт |
pQuestion |
после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт |
Возможные ошибки
Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует) |
|
Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа |
|
Неверный формат данных для удаленного программирования |
|
Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования |
|
Ошибка при записи данных удаленного программирования. Операция не была завершена |
|
Неверное значение MAC (Message Authentication Code) |
|
Использование функции GrdTRU_DecryptQuestion позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает GrdE_OK.
Расшифрованное 8-байтовое число-вопрос помещается в тот же буфер pQuestion, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования.
Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 с номером, задаваемым dwAlgoNum_GSII64. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 с номером dwAlgoNum_Hash64. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в dwAlgoNum_GSII64 и dwAlgoNum_Hash64.
public static GrdE GrdTRU_DecryptQuestion(Handle grdHandle, GrdAlgNum algNum_GSII64, GrdAlgNum algNum_HashS3, byte[] question, uint id, uint publicCode, byte[] hash)
grdHandle [in]
Тип: Handle
Нэндл, через который будет выполнена данная операция.
algNum_GSII64 [in]
Тип: GrdAlgNum
Номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса.
algNum_HashS3 [in]
Тип: GrdAlgNum
Номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC
question [in,out]
Тип: byte [ ]
Буфер, который содержит присланный удаленным пользователем число-вопрос.
id [in]
Тип: uint
ID ключа удаленного пользователя, для которого будет произведена операция.
publicCode [in]
Тип: uint
Численное значение PublicCode ключа удаленного пользователя, для которого будет произведена операция
hash [in]
Тип: byte [ ]
Буфер, содержащий MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт.
question |
после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт |
Возможные ошибки
GrdE_SystemDataCorrupted |
Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует) |
GrdE_NoQuestion |
Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа |
GrdE_InvalidData |
Неверный формат данных для удаленного программирования |
GrdE_QuestionOK |
Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования |
GrdE_UpdateNotComplete |
Ошибка при записи данных удаленного программирования. Операция не была завершена |
GrdE_InvalidHash |
Неверное значение MAC (Message Authentication Code) |
Использование функции GrdTRU_DecryptQuestion позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает GrdE_OK.
Расшифрованное 8-байтовое число-вопрос помещается в тот же буфер pQuestion, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования.
Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 с номером, задаваемым dwAlgoNum_GSII64. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 с номером dwAlgoNum_Hash64. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_GSII64 и dwAlgoNum_Hash64.
public static GrdE GrdTRU_DecryptQuestion(Handle grdHandle, int algoNum_GSII64, int algoNum_HashS3, byte[] question, int id, int publicCode, byte[] hash)
grdHandle [in]
Тип: Handle
Нэндл, через который будет выполнена данная операция.
algNum_GSII64 [in]
Тип: int
Номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса.
algNum_HashS3 [in]
Тип: int
Номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC
question [in,out]
Тип: byte [ ]
Буфер, который содержит присланный удаленным пользователем число-вопрос.
id [in]
Тип: int
ID ключа удаленного пользователя, для которого будет произведена операция.
publicCode [in]
Тип: int
Численное значение PublicCode ключа удаленного пользователя, для которого будет произведена операция
hash [in]
Тип: byte [ ]
Буфер, содержащий MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт.
question |
после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт |
Возможные ошибки
GrdE_SystemDataCorrupted |
Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует) |
GrdE_NoQuestion |
Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа |
GrdE_InvalidData |
Неверный формат данных для удаленного программирования |
GrdE_QuestionOK |
Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования |
GrdE_UpdateNotComplete |
Ошибка при записи данных удаленного программирования. Операция не была завершена |
GrdE_InvalidHash |
Неверное значение MAC (Message Authentication Code) |
Использование функции GrdTRU_DecryptQuestion позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает GrdE_OK.
Расшифрованное 8-байтовое число-вопрос помещается в тот же буфер pQuestion, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования.
Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 с номером, задаваемым dwAlgoNum_GSII64. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 с номером dwAlgoNum_Hash64. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_GSII64 и dwAlgoNum_Hash64.
- No labels