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

Compare with Current View Page History

« Previous Version 8 Next »

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

    int GRD_API GrdPI_Read(	
      HANDLE hGrd,
      DWORD dwItemNum,
      DWORD dwAddr,
      DWORD dwLng,
      void *pData,
      DWORD dwReadPsw,
      void *pReserved
    );	

    hGrd

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

    dwItemNum

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

    dwAddr

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

    dwLng

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

    pData

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

    dwReadPsw

    пароль для чтения. Если пароль не используется, параметр должен быть равен 0

    pReserved

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

    pData

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

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

    GrdE_AccessDenied

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

    GrdE_StatusUnchangeable

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

    GrdE_NoService

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

    GrdE_InactiveItem

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

    GrdE_Overbound

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

     

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

    public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, byte[] data)
    public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, byte[] data, uint readPsw)
    public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, int lng, out byte[] data)
    public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, int lng, out byte[] data, uint readPsw)
    
    

    grdHandle [in] 

    Тип: Handle

    Нэндл, с помощью которого будет выполнено чтение.

    algNum [in] 

    Тип: GrdAlgNum

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

    addr [in]

    Тип: uint

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

    data [out]

    тип: byte [ ]

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

    lng [in]

    тип: int

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

    readPsw [in]

    Тип: uint

    Пароль для чтения.

     

    public static GrdE GrdPI_Read(Handle grdHandle, int itemNum, int addr, byte[] data)
    public static GrdE GrdPI_Read(Handle grdHandle, int itemNum, int addr, byte[] data, int readPsw)
    
    

     

     

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

    Чтение из ячейки можно производить в том случае, когда она находится в активном состоянии. Для чтения можно потребовать указать пароль dwReadPsw, который задается при создании ячейки или алгоритма. При создании ячейки в GRDUTIL пароль требуется по умолчанию.

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

    Функции GrdPI_Read, GrdPI_Update в случае ключей Guardant Sign/Time не имеют ранее существовавшего ограничения в 255 байт на длину считываемого/перезаписываемого определителя алгоритма/защищенной ячейки. Это связано с отсутствием в указанных ключах ограничения на размер определителя.

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

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

    Если при попытке чтения активной ячейки был указан неверный пароль dwReadPsw, функция GrdPI_Read возвращает ошибку GrdE_AccessDenied. При этом автоматически в ключе уменьшается счетчик ошибок доступа к ячейке, который задается при создании ячейки. Когда значение счетчика ошибок доходит до 0, статус ячейки становится неизменяемым, то есть ячейку больше невозможно активировать/деактивировать/читать/менять ее значение. Однако если алгоритм находился в состоянии Active, функция GrdTransform будет нормально работать.

    • No labels