Card |
---|
| Code Block |
---|
| int GRD_API GrdPI_Update(
HANDLE hGrd,
DWORD dwItemNum,
DWORD dwAddr,
DWORD dwLng,
void *pData,
DWORD dwUpdatePsw,
DWORD dwMethod,
void *pReserved
); |
Expand |
---|
| hGrd | хэндл, через который будет выполнено обновление | dwItemNum | номер защищенной ячейки/алгоритма для которой будет производиться обновление | dwAddr | смещение в определителе защищенной ячейки/алгоритма, начиная с которого будет производиться обновление | dwLng | длина блока данных, которые будут обновлены | pData | указатель на буфер, содержащий данные для обновления | dwUpdatePsw | пароль для обновления. Если пароль не используется, параметр должен быть равен 0 | dwMethod | метод обновления данных. Задается одной из констант GrdUM_XXX GrdUM_MOV | Данные из буфера pData заменяют старые данные | GrdUM_XOR | Данные из буфера pData складываются со старыми данными по модулю 2 |
| pReserved | зарезервировано. Параметр должен быть равен NULL |
|
Expand |
---|
title | Возвращаемое значение функции |
---|
| Возможные ошибки |
Expand |
---|
| GrdPI_Update позволяет менять определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]) после указания пароля обновления. При этом определитель аппаратного алгоритма можно менять только целиком. При попытке изменить часть определителя возвращается код ошибки GrdE_InvalidArg. В защищенной ячейке можно менять любой участок данных. Обновление данных в дескрипторе ячейки можно производить в том случае, когда она находится в активном состоянии. Для обновления можно потребовать указать пароль dwUpdatePsw, который задается при создании ячейки или алгоритма. При создании ячейки в GRDUTIL пароль требуется по умолчанию. Если алгоритм или ячейка находятся в активном состоянии (Active) и был задан правильный пароль на обновление, функция возвращает GrdE_OK и производится обновление данных, начиная со смещения в определителе ячейки dwAddr. При этом данные из буфера pData длиной dwLng в зависимости от метода обновления dwMethod либо замещают старые данные, либо складываются со старыми данными по модулю 2. Максимальное значение dwLng - 255 байт. Функции GrdPI_Read, GrdPI_Update в случае ключей Guardant Sign/Time не имеют ранее существовавшего ограничения в 255 байт на длину считываемого/перезаписываемого определителя алгоритма/защищенной ячейки. Это связано с отсутствием в указанных ключах ограничения на размер определителя. Если смещение dwAddr задано слишком большим, возвращается ошибка GrdE_Overbound. Если сумма dwAddr+dwLng выходит за доступные для чтения пределы, данных записывается ровно столько, сколько можно записать. При этом функция возвращает GrdE_OK и никаких других кодов ошибки не генерируется. Если при попытке обновления активной ячейки был указан неверный пароль dwUpdatePsw, функция GrdPI_Update возвращает ошибку GrdE_AccessDenied. При этом автоматически в ключе уменьшается счетчик ошибок доступа к ячейке, который задается при создании ячейки. Когда значение счетчика ошибок доходит до 0, статус ячейки становится неизменяемым, то есть ячейку больше невозможно активировать/деактивировать/читать/менять ее значение. Однако если алгоритм находился в состоянии Active, функция GrdTransform будет нормально работать. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdPI_Update(Handle grdHandle,GrdAlgNum algNum, uint addr, byte[] data, uint updatePsw, GrdUM method)
private static unsafe GrdE GrdPI_Update(IntPtr hAddress, int algNum, uint addr, byte[] data, uint updatePsw, int method)
|
Expand |
---|
| grdHandle [in] Тип: Handle Нэндл, с помощью которого будет выполнено обновление. algNum [in] Тип: GrdAlgNum Номер аппаратного алгоритма или защищенной ячейки, для которых будет происходить обновление. addr [in] Тип: uint Смещение в определителе защищенной ячейки или алгоритма, начиная с которого будет происходить обновление. data [in] тип: byte [ ] Указатель на буфер, который содержит данные для обновления. method [in] типы: int, GrdUM Метод обновления данных. Задается одной из констант GrdUM. updatePsw [in] Тип: uint Пароль для обновления. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| Возможные ошибки
|
Expand |
---|
| GrdPI_Update позволяет менять определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]) после указания пароля обновления. При этом определитель аппаратного алгоритма можно менять только целиком. При попытке изменить часть определителя возвращается код ошибки GrdE_.InvalidArg. В защищенной ячейке можно менять любой участок данных. Обновление данных в дескрипторе ячейки можно производить в том случае, когда она находится в активном состоянии. Для обновления можно потребовать указать пароль dwUpdatePsw updatePsw, который задается при создании ячейки или алгоритма. При создании ячейки в GRDUTIL пароль требуется по умолчанию. Если алгоритм или ячейка находятся в активном состоянии (Active) и был задан правильный пароль на обновление, функция метод возвращает GrdE_.OK и производится обновление данных, начиная со смещения в определителе ячейки dwAddr addr. При этом данные из буфера pData длиной dwLng data в зависимости от метода обновления dwMethod (method) либо замещают старые данные, либо складываются со старыми данными по модулю 2. Максимальное значение dwLng - можно обновить 255 байт данных защищенной ячейки. Функции Методы GrdPI_Read, GrdPI_Update в случае ключей Guardant Sign/Time не имеют ранее существовавшего ограничения в 255 байт на длину считываемого/перезаписываемого определителя алгоритма/защищенной ячейки. Это связано с отсутствием в указанных ключах ограничения на размер определителя. Если смещение dwAddr addr задано слишком большим, возвращается ошибка GrdE_.Overbound. Если сумма dwAddr+dwLng выходит за доступные для чтения пределыколичество записываемых данных превышает возможности записи, данных записывается ровно столько, сколько можно записать. При этом функция метод возвращает GrdE_.OK и никаких других кодов ошибки не генерируется. Если при попытке обновления активной ячейки был указан неверный пароль dwUpdatePsw updatePsw, функция метод GrdPI_Update возвращает ошибку GrdE_.AccessDenied. При этом автоматически в ключе уменьшается счетчик ошибок доступа к ячейке, который задается при создании ячейки. Когда значение счетчика ошибок доходит до 0, статус ячейки становится неизменяемым, то есть ячейку больше невозможно активировать/деактивировать/читать/менять ее значение. Однако если алгоритм находился в состоянии Active, функция метод GrdTransform будет нормально работать. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdPI_Update(Handle grdHandle, int itemNum, int addr, byte[] data, int updatePsw, GrdUM method) |
Expand |
---|
| grdHandle [in] Тип: Handle Нэндл, с помощью которого будет выполнено обновление. itemNum [in] Тип: int Номер аппаратного алгоритма или защищенной ячейки, для которых будет происходить обновление. addr [in] Тип: int Смещение в определителе защищенной ячейки или алгоритма, начиная с которого будет происходить обновление. data [in] тип: byte [ ] Указатель на буфер, который содержит данные для обновления. method [in] тип: GrdUM Метод обновления данных. Задается одной из констант GrdUM. updatePsw [in] Тип: int Пароль для обновления. |
Expand |
---|
title | Возвращаемое значение метода |
---|
| Возможные ошибки
|
Expand |
---|
| GrdPI_Update позволяет менять определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]) после указания пароля обновления. При этом определитель аппаратного алгоритма можно менять только целиком. При попытке изменить часть определителя возвращается код ошибки GrdE_.InvalidArg. В защищенной ячейке можно менять любой участок данных. Обновление данных в дескрипторе ячейки можно производить в том случае, когда она находится в активном состоянии. Для обновления можно потребовать указать пароль dwUpdatePsw updatePsw, который задается при создании ячейки или алгоритма. При создании ячейки в GRDUTIL пароль требуется по умолчанию. Если алгоритм или ячейка находятся в активном состоянии (Active) и был задан правильный пароль на обновление, функция метод возвращает GrdE_.OK и производится обновление данных, начиная со смещения в определителе ячейки dwAddraddr. При этом данные из буфера pData длиной dwLng data в зависимости от метода обновления dwMethod (method) либо замещают старые данные, либо складываются со старыми данными по модулю 2. Максимальное значение dwLng - можно обновить 255 байт данных защищенной ячейки. Функции Методы GrdPI_Read, GrdPI_Update в случае ключей Guardant Sign/Time не имеют ранее существовавшего ограничения в 255 байт на длину считываемого/перезаписываемого определителя алгоритма/защищенной ячейки. Это связано с отсутствием в указанных ключах ограничения на размер определителя. Если смещение dwAddr addr задано слишком большим, возвращается ошибка GrdE_.Overbound. Если сумма dwAddr+dwLng выходит за доступные для чтения пределыколичество записываемых данных превышает возможности записи, данных записывается ровно столько, сколько можно записать. При этом функция метод возвращает GrdE_.OK и никаких других кодов ошибки не генерируется. Если при попытке обновления активной ячейки был указан неверный пароль dwUpdatePsw updatePsw, функция GrdPI_Update возвращает ошибку GrdE_.AccessDenied. При этом автоматически в ключе уменьшается счетчик ошибок доступа к ячейке, который задается при создании ячейки. Когда значение счетчика ошибок доходит до 0, статус ячейки становится неизменяемым, то есть ячейку больше невозможно активировать/деактивировать/читать/менять ее значение. Однако если алгоритм находился в состоянии Active, функция метод GrdTransform будет нормально работать. |
|
|