You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Функция GrdTRU_DecryptQuestionTime расшифровывает число-вопрос и проверяет подлинность его и остальных присланных с удаленного компьютера параметров. Функция является аналогом GrdTRU_DecryptQuestion для ключа Guardant Time.

    int  GRD_API GrdTRU_DecryptQuestionTime( 
    		HANDLE	hGrd,			
    		DWORD	dwAlgoNum_GSII64,
    		DWORD	dwAlgoNum_HashS3,	
    		void	*pQuestion,	
    		DWORD	dwID,		 
    		DWORD	dwPublic,	
    		QWORD *pqwDongleTime,	
    		QWORD	*pqwDeadTimes,
    		DWORD	dwDeadTimesNumbers,
    		void	*pHash			
    	);	

    hGrd

    хэндл, через который будет выполнена данная операция

    dwAlgoNum_GSII64

    номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса

    dwAlgoNum_Hash64

    номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC

    pQuestion

    буфер, содержащий присланное удаленным пользователем число-вопрос. Длина буфера 8 байт

    dwID

    ID ключа удаленного пользователя, для которого будет произведена операция

    dwPublic

    численное значение Public Code ключа удаленного пользователя, для которого будет произведена операция

    pqwDongleTime

    зашифрованное значение времени ключа. 8 байт.

    pqwDeadTimes

    зашифрованные значения времён жизни алгоритмов. По 8 байт

    dwDeadTimesNumbers

    количество 8 байтовых элементов в pqwDeadTimes

    pHash

    буфер, содержащий MAC, вычисленный на ключе удаленного пользователя. Длина буфера 8 байт

    pQuestion

    после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт

    Возможные ошибки

    GrdE_SystemDataCorrupted

    Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует)

    GrdE_NoQuestion

    Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа

    GrdE_InvalidData

    Неверный формат данных для удаленного программирования

    GrdE_QuestionOK

    Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования

    GrdE_UpdateNotComplete

    Ошибка при записи данных удаленного программирования. Операция не была завершена

    GrdE_InvalidHash

    Неверное значение MAC (Message Authentication Code)

     

    Стандартный набор ошибок

    Использование функции GrdTRU_DecryptQuestionTime позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Функция является аналогом GrdTRU_DecryptQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

    Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает 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.

    После расшифрования в pqwDongleTime содержится расшифрованное время ключа из микросхемы таймера, а в pqwDeadTimes расшифрованное время деактивации алгоритмов.

    Два старших байта параметра pqwDongleTime - нули. 2 старших байта элементов массива pqwDeadTimes - числовое имя алгоритма. Остальные 6 байт - время жизни соответствующего алгоритма.

    Время жизни (8 байт) имеет следующий формат:

    1, 2 байты числовое имя алгоритма (либо нули, если время из микросхемы таймера); 
    3 байт год от 2000 (08 для 2008 года); 
    4 байт  месяц года (01 - январь, 02 - февраль, ...);
    5 байт день месяца (1 - 31); 
    6 байт часы (0 - 23); 
    7 байт минуты (0 - 59);
    8 байт секунды (0 - 59) 
    public static GrdE GrdTRU_DecryptQuestionTime(Handle grdHandle, GrdAlgNum algNum_GSII64, GrdAlgNum algNum_HashS3, byte[] question,
    	uint id, uint publicCode, ref ulong dongleTime, ulong[] deadTimes, int deadTimesNumbers, byte[] hash)
    

    grdHandle [in] 

    Тип: Handle

    Нэндл, через который будет выполнена данная операция.

    algNum_GSII64 [in] 

    Тип: GrdAlgNum

    Номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса.

    algNum_HashS3 [in] 

    Тип: GrdAlgNum

    Номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC.

    question [in] 

    Тип: byte [ ]

    Буфер, содержащий присланное удаленным пользователем число-вопрос.

    id [in]

    Тип: uint

    ID ключа удаленного пользователя, для которого будет произведена операция.

    publicCode [in]

    Тип: uint

    Численное значение Public Code ключа удаленного пользователя, для которого будет произведена операция.

    dongleTime [in]

    Тип: ulong

    Зашифрованное значение времени ключа.

    deadTimes [in]

    Тип: ulong [ ]

    Зашифрованное значение времен жизни алгоритмов.

    deadTimesNumbers [in]

    Тип: int

    Количество элементов, возвращаемых в deadTimes.

    hash [in]

    Тип: byte [ ]

    Буфер, содержащий MAC, вычисленный на ключе удаленного пользователя.

    pQuestion

    после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт

    Возможные ошибки

    GrdE_SystemDataCorrupted

    Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует)

    GrdE_NoQuestion

    Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа

    GrdE_InvalidData

    Неверный формат данных для удаленного программирования

    GrdE_QuestionOK

    Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования

    GrdE_UpdateNotComplete

    Ошибка при записи данных удаленного программирования. Операция не была завершена

    GrdE_InvalidHash

    Неверное значение MAC (Message Authentication Code)

     

    Стандартный набор ошибок

    Использование функции GrdTRU_DecryptQuestionTime позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Функция является аналогом GrdTRU_DecryptQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

    Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает 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.

    После расшифрования в pqwDongleTime содержится расшифрованное время ключа из микросхемы таймера, а в pqwDeadTimes расшифрованное время деактивации алгоритмов.

    Два старших байта параметра pqwDongleTime - нули. 2 старших байта элементов массива pqwDeadTimes - числовое имя алгоритма. Остальные 6 байт - время жизни соответствующего алгоритма.

    Время жизни (8 байт) имеет следующий формат:

    1, 2 байты числовое имя алгоритма (либо нули, если время из микросхемы таймера); 
    3 байт год от 2000 (08 для 2008 года); 
    4 байт  месяц года (01 - январь, 02 - февраль, ...);
    5 байт день месяца (1 - 31); 
    6 байт часы (0 - 23); 
    7 байт минуты (0 - 59);
    8 байт секунды (0 - 59) 
    public static GrdE GrdTRU_DecryptQuestionTime(Handle grdHandle, int algoNum_GSII64, int algoNum_HashS3, 
    	byte[] question, int id, int publicCode, long[] dongleTime, long[] deadTimes, int deadTimesNumbers, byte[] hash)

    grdHandle [in] 

    Тип: Handle

    Нэндл, через который будет выполнена данная операция.

    algoNum_GSII64 [in] 

    Тип: int

    Номер аппаратного алгоритма типа GSII64, который будет использоваться для расшифровывания числа-вопроса.

    algoNum_HashS3 [in] 

    Тип: int

    Номер аппаратного алгоритма Hash64, который будет использоваться для проверки подлинности числа-вопроса на основании MAC.

    question [in] 

    Тип: byte [ ]

    Буфер, содержащий присланное удаленным пользователем число-вопрос.

    id [in]

    Тип: int

    ID ключа удаленного пользователя, для которого будет произведена операция.

    publicCode [in]

    Тип: int

    Численное значение Public Code ключа удаленного пользователя, для которого будет произведена операция.

    dongleTime [in]

    Тип: long [ ]

    Зашифрованное значение времени ключа.

    deadTimes [in]

    Тип: long [ ]

    Зашифрованное значение времен жизни алгоритмов.

    deadTimesNumbers [in]

    Тип: int

    Количество элементов, возвращаемых в deadTimes.

    hash [in]

    Тип: byte [ ]

    Буфер, содержащий MAC, вычисленный на ключе удаленного пользователя.

    pQuestion

    после выполнения функции в этот буфер возвращается расшифрованное число-вопрос. Длина буфера 8 байт

    Возможные ошибки

    GrdE_SystemDataCorrupted

    Системные данные TRU повреждены. (Секретный ключ удаленного программирования отсутствует)

    GrdE_NoQuestion

    Число-вопрос не было сгенерировано или было перегенерировано до записи числа ответа

    GrdE_InvalidData

    Неверный формат данных для удаленного программирования

    GrdE_QuestionOK

    Число-вопрос уже было сгенерировано, ключ ожидает данных для удаленного программирования

    GrdE_UpdateNotComplete

    Ошибка при записи данных удаленного программирования. Операция не была завершена

    GrdE_InvalidHash

    Неверное значение MAC (Message Authentication Code)

     

    Стандартный набор ошибок

    Использование функции GrdTRU_DecryptQuestionTime позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Функция является аналогом GrdTRU_DecryptQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

    Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает 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.

    После расшифрования в pqwDongleTime содержится расшифрованное время ключа из микросхемы таймера, а в pqwDeadTimes расшифрованное время деактивации алгоритмов.

    Два старших байта параметра pqwDongleTime - нули. 2 старших байта элементов массива pqwDeadTimes - числовое имя алгоритма. Остальные 6 байт - время жизни соответствующего алгоритма.

    Время жизни (8 байт) имеет следующий формат:

    1, 2 байты числовое имя алгоритма (либо нули, если время из микросхемы таймера); 
    3 байт год от 2000 (08 для 2008 года); 
    4 байт  месяц года (01 - январь, 02 - февраль, ...);
    5 байт день месяца (1 - 31); 
    6 байт часы (0 - 23); 
    7 байт минуты (0 - 59);
    8 байт секунды (0 - 59) 
    • No labels