Page tree

Versions Compared

Key

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

...

CKR_OK – функция выполнена успешно.,
CKR_ARGUMENTS_BAD,

CKR_OPERATION_ACTIVE,

CKR_FUNCTION_FAILED,

...

CKR_OK – функция выполнена успешно.
CKR_CERT_CHAIN_NOT_VERIFIED – функция выполнена успешно, но цепочка сертификации не проверялась,

CKR_ARGUMENTS_BAD,

CKR_CERT_CHAIN_NOT_VERIFIED,

...

C_EX_GetDriveSize()

Назначение

Возращает Возвращает размер флеш-памяти токена.

...

Разбивает флеш-память токена на независимые разделы с разными правами доступа.


Info
titleФункция приводит к переподключению токена

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

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_FormatDrive)  (
  CK_SLOT_ID                    slotID, 
  CK_USER_TYPE                  userType,  
  CK_UTF8CHAR_PTR               pPin,    
  CK_ULONG                      ulPinLen,  
  CK_VOLUME_FORMAT_INFO_EXTENDED_PTR   pInitParams,
  CK_ULONG                      ulInitParamsCount
);
 
typedef struct CK_VOLUME_FORMAT_INFO_EXTENDED
{
  CK_ULONG                ulVolumeSize; 
  CK_ACCESS_MODE_EXTENDED accessMode;      
  CK_OWNER_EXTENDED       volumeOwner;
  CK_FLAGS                flags;
} CK_VOLUME_FORMAT_INFO_EXTENDED;

...

Функция измененяет флаг доступа к разделу.

Info

Синтаксис

CK_DEFINE_FUNCTION(CK_RV,
Code Block
titleФункция приводит к переподключению токена

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

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_ChangeVolumeAttributes)(
  CK_SLOT_ID                    slotID,
  CK_USER_TYPE                  userType,
  CK_UTF8CHAR_PTR               pPin,
  CK_ULONG                      ulPinLen,
  CK_VOLUME_ID_EXTENDED         idVolume,
  CK_ACCESS_MODE_EXTENDED       newAccessMode,
  CK_BBOOL                      bPermanent
);

...

CKR_OK – функция выполнена успешно.

Примечания

Формат возвращаемой записи журнала и пример парсинга доступны по ссылке.

Пример

...

collapsetrue

...

Журнал позволяет хранить только одну запись с информацией о последней выполненной операции подписи. Неудачные попытки подписи в журнале не фиксируются. Описание формата записи журнала доступно по ссылке.

Для получения записи журнала необходимо вызвать функцию C_EX_GetJournal() с переданными в нее значением слота, к которому подключен Рутокен  ЭЦП, и данными буфера, в который будет возвращена запись журнала. Вызов функции C_EX_GetJournal() с указателем на NULL вместо буфера вернет длину записи журнала.

Перед запросом информации о журнале необходимо выполнить аутентификацию Пользователем.
Получение значения журнала

CK_BYTE_PTR           pJournal = NULL_PTR;          // Указатель на значение журнала
CK_ULONG              ulJournalSize = 0;            // Размер журнала
  
while(TRUE)
{
...
    /* Получить размер журнала */
    printf("Getting journal size");
    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],

...

      //

...

Хэндл

...

слота

...

с

...

подключенным

...

токеном
                                          NULL_PTR,

...

       //

...

Указатель

...

на

...

журнал
                                          &ulJournalSize);// Размер журнала
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");

...


        break;
    }
    printf("

...

->

...

OK\n");

...


  
    pJournal = (CK_BYTE*)malloc(ulSlotCount

...

*

...

sizeof(CK_BYTE));

...


    if (pJournal

...

==

...

NULL)

...


    {
        printf("Memory

...

allocation

...

for

...

pJournal

...

failed!

...

\n");

...


        break;
    }
    memset(pJournal,

...

 0,

...

(ulJournalSize

...

*

...

sizeof(CK_BYTE)));

...


  
    /*

...

Получить

...

журнал

...

*/

...


    printf("Getting

...

journal");

...


    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],

...

       // Хэндл слота с подключенным токеном
                                          pJournal,       // Указатель на журнал
                                          &ulJournalSize);//

...

Размер

...

журнала
    if (rv

...

!=

...

CKR_OK)

...


    {
        printf("

...

->

...

Failed

...

%X\n",

...

(int)rv);

...


        break;
    }
    printf("

...

->

...

OK\n");

...


  
    ...

...


    break;

...


}


к содержанию ↑

Функции для работы с беспроводным каналом связи 

...

CKR_OK – функция выполнена успешно.

к содержанию ↑

C_EX_TokenManage() 
Anchor
C_EX_TokenManageBluetooth
C_EX_TokenManageBluetooth

Назначение

Управляет режимом работы токена и таймаутом беспроводного соединения Рутокен Bluetooth.

...

CKR_OK – функция выполнена успешно.

Пример

Code Block
collapsetrue
CK_BYTE_PTR		pInfo

.
.
rv = pfGetFunctionListEx -> C_EX_FreeBuffer(pInfo);				// очистка буфера, использующегося функцией C_EX_GetCertificateInfoText()
if (rv != CKR_OK)												// проверка результата
	printf("C_EX_FreeBuffer() -> failed \n");
else
	printf("C_EX_FreeBuffer() -> OK \n"); 

...