Versions Compared

Key

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

...

Deck of Cards
id001
Card
labelC#
Code Block
languagec#
public static void SetPathToNativeLib(string pathToMobileSdk)
public static void SetPathToNativeLib(string pathToNativeLib, string libname_x86, string libname_x64)
Expand
titleПараметры метода

pathToMobileSdk [in] 

Тип: string

путь Путь к каталогу, где должны находиться библиотеки GrdAPI64.dll и GrdAPI32.dll

hashNum pathToNativeLib [in]

Тип: GrdAlgNum

Номер аппаратно-  или программно-реализованного алгоритма, с помощью которого будет вычисляться хэш-функция.

string

Путь к каталогу, где должны находится библиотеки Guardant API.

libname_x86 data [in] 

Тип: byte [ ]

Указатель на буфер данных, хэш которых будет вычисляться.

string

Имя библиотеки x86.

libname_x64 method [in]

Тип: GrdSC

Метод преобразования, который задается комбинацией флагов GrdSC.

digest [in] 

Тип: byte [ ]

Указатель на буфер, куда будет помещен результат вычислений.

context [in] 

Тип: byte [ ]

Буфер для хранения контекста (состояния алгоритма) при последовательном вычислении хэш-функции SHA256 от нескольких блоков данных

string

Имя библиотеки x64.

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

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

Expand
titleОписание

Метод GrdHashEx вычисляет хэш-функцию блока данных data.

В Guardant API реализовано вычисление программно-реализованных функций CRC32 и SHA256, а также аппаратных алгоритмов HASH64. Выбор алгоритма осуществляется параметром hashNum, который может принимать значения констант GrdSA.CRC32 и GrdSA.SHA256  для программно-реализованных алгоритмов, либо номера используемого аппаратного алгоритма HASH64.

Все хэш-функции могут вычисляться от больших блоков данных, поэтому предусмотрена возможность разбиения данных на меньшие блоки и вычисления значения хэша последовательно для нескольких буферов. Для этого параметром mthod задается порядок блока GrdSC.XXX (первый, следующий, последний).

Для передачи состояния алгоритма SHA256 используется специальный контекст context, память для которого должна быть зарезервирована и проинициализирована заранее. Для алгоритмов HASH64 и CRC32 контекст не используется. Метод GrdHashEx самостоятельно разбивает буфер на блоки необходимой длины и выполняет все операции по согласованию.

Если операция выполняется за один прием, то параметром method должен быть задан метод GrdSC.All.

При работе с аппаратным алгоритмом HASH64 рекомендуется использовать блок данных data, длина которого кратна 16 байтам (GrdARS.HASH64). Если длина блока данных не будет кратной 16, то буфер дополнится нулями до ближайшего значения, кратного 16. Поэтому для воспроизведения итогового значения хеша при "некратных" значениях размера буфера, важны не только последовательности их обработки, но и их размеры.

На время вычисления HASH64 блокируется выполнение любых алгоритмов на данном ключе. Поэтому передача буфера большого размера может надолго заблокировать электронный ключ.

Результат вычислений помещается в буфер digest, память для которого размером, соответствующим конкретному алгоритму, должна быть зарезервирована заранее. 


Примечание

Результат вычислений возвращается в память по адресу digest только в момент вызова с флагом GrdSC.Last (или GrdSC.All). До этого промежуточный результат хранится во внутреннем буфере ключа, вследствие чего (с целью его сохранности) при вычислении hash от длинных блоков данных в несколько подходов рекомендуется блокировать обращение к этой функции путем вызова GrdLock с соответствующими параметрами.