Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Deck of Cards
id001
Card
defaulttrue
labelC
Code Block
languagecpp
int GRD_API GrdTRU_GenerateQuestionTime( 
		HANDLE	hGrd,				
		void	*pQuestion,			
		DWORD	*pdwID,			 
		DWORD	*pdwPublic,			
		QWORD   *pqwDongleTime,	
		DWORD	dwDeadTimesSize,	 
		QWORD	*pqwDeadTimes,		
		DWORD	*pdwDeadTimesNumbers,
		void	*pHash,			
		void	*pReserved		
	);	
Expand
titleПараметры функции

hGrd

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

pQuestion

буфер, куда будет помещен сгенерированный вопрос. Размер буфера 8 байт

pdwID

буфер, куда будет помещено значение ID ключа, для которого сгенерирован вопрос. Длина буфера 4 байта

pdwPublic

буфер, куда будет помещено численное значение Public code ключа, для которого сгенерирован вопрос. Длина буфера 4 байта

pqwDongleTime

зашифрованное время из микросхемы таймера. Длина буфера 8 байт

pdwPublic

буфер, куда будет помещено численное значение Public code ключа, для которого сгенерирован вопрос. Длина буфера 4 байта

dwDeadTimesSize

размер входного буфера pqwDeadTimes в байтах

pqwDeadTimes

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

pdwDeadTimesNumbers

количество элементов, возвращаемых в pqwDeadTimes

pHash

буфер, куда будет помещено значение MAC ( Message Authentication Code - кода аутентификации сообщения) для верификации вопроса. Длина буфера 8 байт

pReserved

зарезервировано. Должно быть равно NULL

Expand
titleВозвращаемое значение функции

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

GrdE_SystemDataCorrupted

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

GrdE_NoQuestion

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

GrdE_InvalidData

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

GrdE_QuestionOK

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

GrdE_UpdateNotComplete

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

GrdE_InvalidHash

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

 

Набор ошибок Guardant API

Expand
titleОписание

 

Функция GrdTRU_GenerateQuestionTime генерирует зашифрованное число-вопрос и инициализирует процесс для удаленного программирования, использующего технологию Trusted Remote Update. Функция является аналогом GrdTRU_GenerateQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

Функция GrdTRU_GenerateQuestionTime вызывается на компьютере удаленного пользователя и генерирует число-вопрос pQuestion, защищенное от подделки кодом аутентификации сообщения (MAC) pHash. MAC вырабатывается аппаратным алгоритмом на секретном ключе, который должен быть предварительно записан при помощи функции GrdTRU_SetKey. MAC используется для того, чтобы нельзя было подделать число-вопрос, ID или Public Code электронного ключа.

После того, как число-вопрос сгенерировано, конечный пользователь должен передать разработчику все сгенерированные функцией GrdTRU_GenerateQuestionTime данные: собственно число-вопрос pQuestion, ID ключа pdwID, Public code pdwPublic и MAC pHash. С момента генерации числа-вопроса ключ переходит в состояние ожидания числа-ответа.

Рекомендуемый размер буфера pqwDeadTimes для зашифрованных зашифрованного значения времени жизни алгоритмов должен быть равен (количеству алгоритмов + количество защищенных ячеек )*8. Если буфер содержит меньше элементов, то возвращается только то, что поместилось, иначе дополняется нулями до dwDeadTimesSize/8 элементов, но не более 499 элементов.

Два старших байта параметра 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) 

На клиентской стороне всегда можно узнать, сколько алгоритмов и ячеек есть в ключе для вычисления количества элементов массива DeadTime. Количество алгоритмов и защищенных ячеек в ключе можно узнать, считав поле kmAlgoNum в режиме адресации SAM.

На стороне разработчика тоже можно вычислить количество алгоритмов по маске, хранящейся в базе. Поэтому в функциях TRU для Time важен только размер массива. Более того, количество элементов можно передать в "посылке" удаленного программирования вместе счислом-вопросом.

 

Card
labelC#
Code Block
languagec#
public static GrdE GrdTRU_GenerateQuestionTime(Handle grdHandle, out byte[] question, out uint id, out uint publicCode,
	out ulong dongleTime, ulong[] deadTimes, out int deadTimesNumbers, out byte[] hash)

Expand
titleПараметры метода

grdHandle [in] 

Тип: Handle

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

question [out] 

Тип: byte [ ]

Буфер, куда будет помещен сгенерированный вопрос.

id [out]

Тип: uint

Буфер, куда будет помещено значение ID ключа, для которого был сгенерирован вопрос.

publicCode [out]

Тип: uint

Буфер, куда будет помещено значение PublicCode ключа, для которого был сгенерирован вопрос.

dongleTime [out]

Тип: ulong

Зашифрованное время из микросхемы таймера.

deadTimes [out]

Тип: ulong [ ]

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

deadTimesNumbers [out]

Тип: ulong [ ]

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

hash [out]

Тип: byte [ ]

Буфер, куда будет помещено значение MAC (Message Authentication Code - кода аутентификации сообщения) для верификации вопроса.

Expand
titleВозвращаемое значение метода

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

GrdE_.SystemDataCorrupted

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

GrdE_.NoQuestion

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

GrdE_.InvalidData

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

GrdE_.QuestionOK

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

GrdE_.UpdateNotComplete

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

GrdE_.InvalidHash

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

 

Набор ошибок Guardant API


Expand
titleОписание

 

Метод GrdTRU_GenerateQuestionTime генерирует зашифрованное число-вопрос и инициализирует процесс для удаленного программирования, использующего технологию Trusted Remote Update. Метод является аналогом GrdTRU_GenerateQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

Метод GrdTRU_GenerateQuestionTime вызывается на компьютере удаленного пользователя и генерирует число-вопрос question, защищенное от подделки кодом аутентификации сообщения (MAC) hash. MAC вырабатывается аппаратным алгоритмом на секретном ключе, который должен быть предварительно записан при помощи метода GrdTRU_SetKey. MAC используется для того, чтобы нельзя было подделать число-вопрос, ID или Public Code электронного ключа.

После того, как число-вопрос сгенерировано, конечный пользователь должен передать разработчику все сгенерированные методом GrdTRU_GenerateQuestionTime данные: собственно число-вопрос question, ID ключа id, Public code publicCode и MAC hash. С момента генерации числа-вопроса ключ переходит в состояние идания числа-ответа.

Рекомендуемый размер буфера deadTimes для зашифрованного значения времени жизни алгоритмов должен быть равен (количеству алгоритмов + количество защищенных ячеек )*8. Если буфер содержит меньше элементов, то возвращается только то, что поместилось, иначе дополняется нулями до deadTimesNumbers/8 элементов, но не более 499 элементов.

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

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

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

На клиентской стороне всегда можно узнать, сколько алгоритмов и ячеек есть в ключе для вычисления количества элементов массива deadTimes. Количество алгоритмов и защищенных ячеек в ключе можно узнать, считав поле kmAlgoNum в режиме адресации SAM.

На стороне разработчика тоже можно вычислить количество алгоритмов по маске, хранящейся в базе. Поэтому в методах TRU для Time важен только размер массива. Более того, количество элементов можно передать в "посылке" удаленного программирования вместе счисломс числом-вопросом.

 

Card
labelJava
Code Block
languagejava
public static GrdE GrdTRU_GenerateQuestionTime(Handle grdHandle, byte[] question, int[] id,
	int[] publicCode, long[] dongleTime, long[] deadTimes, long[] deadTimesNumbers, byte[] hash)
Expand
titleПараметры метода

grdHandle [in] 

Тип: Handle

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

question [out] 

Тип: byte [ ]

Буфер, куда будет помещен сгенерированный вопрос.

id [out]

Тип: uint

Буфер, куда будет помещено значение ID ключа, для которого был сгенерирован вопрос.

publicCode [out]

Тип: int

Буфер, куда будет помещено значение PublicCode ключа, для которого был сгенерирован вопрос.

dongleTime [out]

Тип: long [ ]

Зашифрованное время из микросхемы таймера.

deadTimes [out]

Тип: long [ ]

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

deadTimesNumbers [out]

Тип: long [ ]

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

hash [out]

Тип: byte [ ]

Буфер, куда будет помещено значение MAC (Message Authentication Code - кода аутентификации сообщения) для верификации вопроса.

Expand
titleВозвращаемое значение метода

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

GrdE_.SystemDataCorrupted

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

GrdE_.NoQuestion

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

GrdE_.InvalidData

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

GrdE_.QuestionOK

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

GrdE_.UpdateNotComplete

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

GrdE_.InvalidHash

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

 

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


Expand
titleОписание

 

Функция Метод GrdTRU_GenerateQuestionTime генерирует зашифрованное число-вопрос и инициализирует процесс для удаленного программирования, использующего технологию Trusted Remote Update. Функция Метод является аналогом GrdTRU_GenerateQuestion для ключа Guardant Time и используется в случаях, когда необходимо продлевать время работы защищенного приложения.

Функция Метод GrdTRU_GenerateQuestionTime вызывается на компьютере удаленного пользователя и генерирует число-вопрос pQuestion question, защищенное от подделки кодом аутентификации сообщения (MAC) pHash hash. MAC вырабатывается аппаратным алгоритмом на секретном ключе, который должен быть предварительно записан при помощи функции метода GrdTRU_SetKey. MAC используется для того, чтобы нельзя было подделать число-вопрос, ID или Public Code электронного ключа.

После того, как число-вопрос сгенерировано, конечный пользователь должен передать разработчику все сгенерированные функцией методом GrdTRU_GenerateQuestionTime данные: собственно число-вопрос pQuestion question, ID ключа pdwID id, Public code pdwPublic publicCode и MAC pHash hash. С момента генерации числа-вопроса ключ переходит в состояние ожидания идания числа-ответа.

Рекомендуемый размер буфера pqwDeadTimes deadTimes для зашифрованных зашифрованного значения времени жизни алгоритмов должен быть равен (количеству алгоритмов + количество защищенных ячеек )*8. Если буфер содержит меньше элементов, то возвращается только то, что поместилось, иначе дополняется нулями до dwDeadTimesSizedeadTimesNumbers/8 элементов, но не более 499 элементов.

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

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

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

На клиентской стороне всегда можно узнать, сколько алгоритмов и ячеек есть в ключе для вычисления количества элементов массива DeadTime deadTimes. Количество алгоритмов и защищенных ячеек в ключе можно узнать, считав поле kmAlgoNum в режиме адресации SAM.

На стороне разработчика тоже можно вычислить количество алгоритмов по маске, хранящейся в базе. Поэтому в функциях методах TRU для Time важен только размер массива. Более того, количество элементов можно передать в "посылке" удаленного программирования вместе счисломс числом-вопросом.