Функция GcaPI_Read позволяет считывать данные защищенной ячейки или определителя алгоритма.
...
...
Code Block |
---|
|
int GcaPI_Read(
HANDLE hGrd,
DWORD dwItemNum,
DWORD dwAddr,
DWORD dwLng,
void *pData,
DWORD dwReadPsw,
void *pReserved
); |
Expand |
---|
|
hGrd | не используется | dwItemNum | номер защищенной ячейки/алгоритма из которой будет производиться чтение | dwAddr | смещение в определителе защищенной ячейки/алгоритма, начиная с которого будет производиться чтение | dwLng | длина блока данных, которые должны быть прочитаны | pData | указатель на буфер для прочитанных данных | dwReadPsw | зарезервировано | pReserved | зарезервировано. Параметр должен быть равен NULL |
|
Expand |
---|
title | Возвращаемое значение функции |
---|
|
pData | буфер, содержащий прочитанные данные |
Возможные ошибки |
...
Функция 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*
int
Deck of Cards |
---|
|
Card |
---|
| Code Block |
---|
| int GcaPI_Update(
HANDLE hGrd,
DWORD dwItemNum,
DWORD dwAddr,
DWORD dwLng,
void *pData,
DWORD dwUpdatePsw,
DWORD dwMethod,
void *pReserved
); |
|
|
...
| Входные параметры | hGrd | не используется | dwItemNum | номер защищенной ячейки/алгоритма для которой будет производиться обновление | dwAddr | смещение в определителе защищенной ячейки/алгоритма, начиная с которого будет производиться обновление | dwLng | длина блока данных, которые будут обновлены | pData | указатель на буфер, содержащий данные для обновления | dwUpdatePsw | зарезервировано | dwMethod | метод обновления данных. Задается одной из констант GrdUM_XXX GrdUM_MOV | Данные из буфера pData заменяют старые данные | GrdUM_XOR | Данные из буфера pData складываются со старыми данными по модулю 2 |
| pReserved | зарезервировано. Параметр должен быть равен NULL |
|
|
| Выходные параметры | Возвращаемое значение функции |
---|
| Возможные ошибки |
Expand |
---|
| Функция 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 |
---|
|
См. директорию:
"%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\ARM\"