Versions Compared

Key

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

Функция GcaPI_Read позволяет считывать данные защищенной ячейки или определителя алгоритма.

...

id001

...

defaulttrue
labelC
Code Block
languagecpp
int  GcaPI_Read(	
  HANDLE hGrd,
  DWORD dwItemNum,
  DWORD dwAddr,
  DWORD dwLng,
  void *pData,
  DWORD dwReadPsw,
  void *pReserved
);	
Expand
titleПараметры функции

hGrd

не используется

dwItemNum

номер защищенной ячейки/алгоритма из которой будет производиться чтение

dwAddr

смещение в определителе защищенной ячейки/алгоритма, начиная с которого будет производиться чтение

dwLng

длина блока данных, которые должны быть прочитаны

pData

указатель на буфер для прочитанных данных

dwReadPsw

зарезервировано

pReserved

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

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

pData

буфер, содержащий прочитанные данные

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

GrdE_NoService

для данного типа ячейки не предусмотрена операция чтения

GrdE_InactiveItem

ячейка в деактивированном состоянии, чтение выполнить невозможно

GrdE_Overbound

адрес для чтения выходит за пределы дескриптора

 

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

...

titleОписание

Функция GcaPI_Read позволяет читать определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]).

Чтение из ячейки можно производить в том случае, когда она находится в активном состоянии.

Если алгоритм или ячейка находятся в активном состоянии (Active), функция возвращает GrdE_OK и в буфер pData считывается dwLng байт, начиная со смещения в определителе ячейки dwAddr.

Если смещение dwAddr задано слишком большим (больше размера определителя), возвращается ошибка GrdE_Overbound.

Если сумма dwAddr+dwLng выходит за доступные для чтения пределы, данных считывается ровно столько, сколько можно считать. При этом функция возвращает GrdE_OK и никаких других кодов ошибки не генерируется.

...

Update

...

 

 

Функция GcaPI_Update позволяет перезаписывать данные защищенной ячейки или определитель алгоритма. При этом определитель алгоритма можно перезаписать только целиком, а в защищенной ячейке можно перезаписывать любой участок данных.  Wiki Markup{dojo-tabs:theme=tundra|id=1} {dojo-tab:title=C|selected=true} *C*

Deck of Cards
id001
Card
defaulttrue
labelC
Code Block
languagecpp
int  GcaPI_Update(	
  HANDLE hGrd,
  DWORD dwItemNum,
  DWORD dwAddr,
  DWORD dwLng,
  void *pData,
  DWORD dwUpdatePsw,
  DWORD dwMethod,
  void *pReserved
);	

...

Входные параметрыВыходные параметрыСм. директорию:
"%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\ARM\"
Expand
title
Параметры функции

hGrd

не используется

dwItemNum

номер защищенной ячейки/алгоритма для которой будет производиться обновление

dwAddr

смещение в определителе защищенной ячейки/алгоритма, начиная с которого будет производиться обновление

dwLng

длина блока данных, которые будут обновлены

pData

указатель на буфер, содержащий данные для обновления

dwUpdatePsw

зарезервировано

dwMethod

метод обновления данных. Задается одной из констант GrdUM_XXX

GrdUM_MOV

Данные из буфера pData заменяют старые данные

GrdUM_XOR

Данные из буфера pData складываются со старыми данными по модулю 2

pReserved

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

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

 

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

GrdE_NoService

для данного типа ячейки не предусмотрена операция обновления

GrdE_InactiveItem

ячейка в деактивированном состоянии, обновление выполнить невозможно

GrdE_Overbound

адрес для обновления выходит за пределы определителя

 

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

Expand
titleОписание

Функция GcaPI_Update позволяет менять определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]). При этом определитель аппаратного алгоритма можно менять только целиком. При попытке изменить часть определителя возвращается код ошибки GrdE_InvalidArg. В защищенной ячейке можно менять любой участок данных.

Обновление данных в дескрипторе ячейки можно производить в том случае, когда она находится в активном состоянии.

Если алгоритм или ячейка находятся в активном состоянии (Active), функция возвращает GrdE_OK и производится обновление данных, начиная со смещения в определителе ячейки dwAddr. При этом данные из буфера pData длиной dwLng в зависимости от метода обновления dwMethod либо замещают старые данные, либо складываются со старыми данными по модулю 2.

Если смещение dwAddr задано слишком большим, возвращается ошибка GrdE_Overbound.

Если сумма dwAddr+dwLng выходит за доступные для чтения пределы, данных записывается ровно столько, сколько можно записать. При этом функция возвращает GrdE_OK и никаких других кодов ошибки не генерируется.

Функции GcaPI_Read и GcaPI_Update игнорируют пароль для доступа к ячейке и счетчик ошибок ввода пароля.

Expand
titleПример