{dojo-tabs:theme=tundra|id=1}
{dojo-tab:title=C|selected=true}
*C*
int GRD_API GrdCrypt(
HANDLE hGrd,
DWORD dwAlgo,
DWORD dwDataLng,
void *pData,
DWORD dwMethod,
void *pIV,
void *pKeyBuf,
void *pContext
); |
|
{dojo-tab}
{dojo-tab:title=C#|selected=true}
*C#*
{dojo-tab}
{dojo-tab:title=Visual Basic (Declaration)}
*Visual Basic*
{dojo-tab}
{dojo-tab:title=Visual C++}
*Visual C++*
{dojo-tab}
{dojo-tabs} | Входные параметры | hGrd | хэндл, через который будет выполнена данная операция. | dwAlgo | номер аппаратного (GSII64) или программно-реализованного алгоритма (AES), которым будет производиться преобразование. Программно-реализованный алгоритм AES 256 имеет номер GrdSC_AES256. | dwDataLng | длина блока данных в байтах | pData | буфер данных для преобразования | dwMethod | метод преобразования, который задается комбинацией флагов GrdAM_XXX и GrdSC_XXX Биты 0-5 - режим работы алгоритма | GrdAM_ECB | Режим электронной кодовой книги | GrdAM_CBC | Режим сцепления кодированных блоков | GrdAM_CFB | Режим с кодированной обратной связью | GrdAM_OFB | Режим с обратной связью по выходу | Бит 6 - резерв | Бит 7 - тип операции | GrdAM_Encrypt | Кодировать блок | GrdAM_Decrypt | Декодировать блок | Биты 8-9: тип блока данных | GrdSC_First | Первый блок данных | GrdSC_Next | Следующий блок данных | GrdSC_Last | Последний блок данных | GrdSC_All | Единственный блок данных |
| pIV | вектор инициализации: для GSII64 - 8 байтов, для AES - 16 байтов. Если в качестве указателя на вектор инициализации задан NULL, то преобразование пройдет корректно, при этом будет использован нулевой вектор | pKeyBuf | буфер для передачи ключа шифрования для программно-реализованного алгоритма (AES). Длина ключа 256 бит (32 байта). Только для программно-реализованных алгоритмов. При использовании аппаратного алгоритма параметр должен быть равен NULL | pContext | буфер для контекста при шифровании больших массивов данных, которые разбиваются на несколько блоков. Для контекста должна быть зарезервирована память размером GrdXXXXXX_CONTEXT_SIZE байт в зависимости от алгоритма. Только для программно-реализованных алгоритмов. При использовании аппаратного алгоритма параметр должен быть равен NULL GrdAES256_KEY_SIZE | Длина ключа AES - 256 бит | GrdAES256_BLOCK_SIZE | Длина блока данных AES - 128 бит | GrdAES_CONTEXT_SIZE | Значение должно быть больше или равно sizeof(AES_CONTEXT) |
|
|
|
| Выходные параметры | Cтандартный набор ошибок Expand |
---|
| Функция GrdCrypt позволяет зашифровывать и расшифровывать данные с использованием аппаратно или программно-реализованных симметричных алгоритмов. Преобразование производится алгоритмом с порядковым номером, заданным в параметре dwAlgo. В зависимости от номера алгоритма dwAlgo функция определяет, каким образом реализован алгоритм - аппаратным или программным. Если номер алгоритма соответствует аппаратному алгоритму, вызов переадресуется функции GrdTransform. Аппаратно реализованный алгоритм должен быть типа GSII64. Иначе, если алгоритм реализован программно ( |
| dwAlgo>dwAlgo>=GrdSA_SoftAlgo), вызывается соответствующая функция программного шифрования. Программно-реализованные алгоритмы шифрования при шифровании больших массивов данных используют контекст, память для которого размером не менее GrdXXXXXX_CONTEXT_SIZE должна быть зарезервирована до вызова функции. Указатель на буфер для контекста передается через параметр pContext. Длина шифруемых блоков данных зависит от метода шифрования (см. описание методов в Руководство пользователя, часть 2). Для методов CFB и OFB длина шифруемых блоков может быть произвольной. Если шифрование на аппаратно-реализованном алгоритме выполнялось блоками произвольной длины (т. е. использовались флаги GrdSC_First, GrdSC_Next, GrdSC_Last), то для корректного расшифрования длина и порядок обработки блоков должны сохраняться. Для программно-реализованных алгоритмов такое ограничение отсутствует. Если в дескрипторе аппаратного алгоритма установлен флаг nsafl_GP_dec (уменьшение счетчика), вычитание счетчика GP происходит при каждом вызове GrdCrypt. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdCrypt(Handle grdHandle,GrdAlgNum algNum, byte[] data, GrdAM method, ref long iv)
public static GrdE GrdCrypt(Handle grdHandle,GrdAlgNum algNum, byte[] data, GrdAM method, byte[] iv)
public static GrdE GrdCrypt(Handle grdHandle,GrdAlgNum algNum, byte[] data, GrdAM method, byte[] iv, byte[] key)
public static GrdE GrdCrypt(Handle grdHandle, GrdAlgNum algNum, byte[] data, GrdAM method, byte[] iv, byte[] key, byte[] context)
|
Expand |
---|
| grdHandle [in] Тип: Handle хэндл, через который будет выполнена данная операция. algNum [in] Тип: GrdAlgNum Номер аппаратного алгоритма, с помощью которого будет происходить преобразование. data [in] Тип: byte [ ] Буфер данных для преобразования. method [in] Тип: GrdAM Метод преобразования. Задается комбинацией флагов GrdAM. iv [in] Типы: byte [ ], long [ ] Вектор инициализации. key [in] Тип: byte [ ] Буфер для передачи ключа шифрования для программно-реализованного алгоритма AES. context [in] Тип: byte [ ] Буфер для контекста при шифровании больших массивов данных. В этом случае они разбиваются на несколько блоков. |
|
| | Метод GrdCrypt позволяет зашифровывать и расшифровывать данные с использованием аппаратно или программно-реализованных симметричных алгоритмов. Преобразование производится алгоритмом с порядковым номером, заданным в параметре algNum. В зависимости от номера алгоритма algNum метод определяет, каким образом реализован алгоритм - аппаратным или программным. Если номер алгоритма соответствует аппаратному алгоритму, вызов переадресуется методу GrdTransform. Аппаратно реализованный алгоритм должен быть типа GSII64. Иначе, если алгоритм реализован программно (algNum>=GrdSA_SoftAlgo), вызывается соответствующий метод программного шифрования. Программно-реализованные алгоритмы шифрования при шифровании больших массивов данных используют контекст, память для которого размером не менее GrdXXXXXX_CONTEXT_SIZE должна быть зарезервирована до вызова метода. Указатель на буфер для контекста передается через параметр context. Длина шифруемых блоков данных зависит от метода шифрования (см. описание методов в Руководство пользователя, часть 2). Для методов CFB и OFB длина шифруемых блоков может быть произвольной. Если шифрование на аппаратно-реализованном алгоритме выполнялось блоками произвольной длины (т. е. использовались флаги GrdSC_First, GrdSC_Next, GrdSC_Last), то для корректного расшифрования длина и порядок обработки блоков должны сохраняться. Для программно-реализованных алгоритмов такое ограничение отсутствует. Если в дескрипторе аппаратного алгоритма установлен флаг nsafl_GP_dec (уменьшение счетчика), вычитание счетчика GP происходит при каждом вызове GrdCrypt. |
|
Card |
---|
| Code Block |
---|
| public static GrdE GrdCrypt(Handle grdHandle, int algoNum, byte[] data, int method, byte[] iv)
public static GrdE GrdCrypt(Handle grdHandle, int algoNum, byte[] data, int method, byte[] iv, byte[] key)
public static GrdE GrdCrypt(Handle grdHandle, int algoNum, byte[] data, int method, byte[] iv, byte[] key, byte[] context)
public static GrdE GrdCrypt( Handle grdHandle, int algoNum, byte[] data, int method, long iv) |
Expand |
---|
| grdHandle [in] Тип: Handle хэндл, через который будет выполнена данная операция. algNum [in] Тип: int Номер аппаратного алгоритма, с помощью которого будет происходить преобразование. data [in] Тип: byte [ ] Буфер данных для преобразования. method [in] Тип: int Метод преобразования. Задается комбинацией флагов GrdAM. iv [in] Типы: byte [ ], long [ ] Вектор инициализации. key [in] Тип: byte [ ] Буфер для передачи ключа шифрования для программно-реализованного алгоритма AES. context [in] Тип: byte [ ] Буфер для контекста при шифровании больших массивов данных. В этом случае они разбиваются на несколько блоков. |
Expand |
---|
| Метод GrdCrypt позволяет зашифровывать и расшифровывать данные с использованием аппаратно или программно-реализованных симметричных алгоритмов. Преобразование производится алгоритмом с порядковым номером, заданным в параметре algNum. В зависимости от номера алгоритма algNum метод определяет, каким образом реализован алгоритм - аппаратным или программным. Если номер алгоритма соответствует аппаратному алгоритму, вызов переадресуется методу GrdTransform. Аппаратно реализованный алгоритм должен быть типа GSII64. Иначе, если алгоритм реализован программно (algNum>=GrdSA_SoftAlgo), вызывается соответствующий метод программного шифрования. Программно-реализованные алгоритмы шифрования при шифровании больших массивов данных используют контекст, память для которого размером не менее GrdXXXXXX_CONTEXT_SIZE должна быть зарезервирована до вызова метода. Указатель на буфер для контекста передается через параметр context. Длина шифруемых блоков данных зависит от метода шифрования (см. описание методов в Руководство пользователя, часть 2). Для методов CFB и OFB длина шифруемых блоков может быть произвольной. Если шифрование на аппаратно-реализованном алгоритме выполнялось блоками произвольной длины (т. е. использовались флаги GrdSC_First, GrdSC_Next, GrdSC_Last), то для корректного расшифрования длина и порядок обработки блоков должны сохраняться. Для программно-реализованных алгоритмов такое ограничение отсутствует. Если в дескрипторе аппаратного алгоритма установлен флаг nsafl_GP_dec (уменьшение счетчика), вычитание счетчика GP происходит при каждом вызове GrdCrypt. |
|
| Пример | Пример для используемого средства разработки см. в директории: "\%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\x86\Win32\General Guardant API\" или "\%Program Files%\Guardant\Guardant 6\%Public Code%\Samples\x64\Win64\General Guardant API\" |