Page tree

Versions Compared

Key

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

...

Code Block
collapsetrue
printf("\nChanging volume attributes");
rv = pFunctionListEx->C_EX_ChangeVolumeAttributes(aSlots[0],        // Идентификатор слота с подключенным токеном
                                                    CKU_SO,         // Владелец раздела
                                                    SO_PIN,         // PIN-код владельца раздела
                                                    sizeof(SO_PIN), // Длина PIN-кода владельца раздела
                                                    VolumeRO,       // Идентификатор раздела
                                                    ACCESS_MODE_RW, // Новые права доступа к разделу
                                                    CK_TRUE);       // CK_TRUE - постоянное изменение атрибутов, CK_FALSE - временное изменение атрибутов
if (rv != CKR_OK)
    printf(" -> Failed\n");
else
    printf(" -> OK\n");

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

Функции для работы с

...

журналом

AUI Button
button-stylePrimary
button-textподробнее про журнал
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=13795364#id-%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D1%87%D0%B5%D1%80%D0%B5%D0%B7PKCS#11-%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%81%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%BE%D0%BC%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BDPINPad

C_EX_GetJournal()

Назначение

...

Code Block
collapsetrue
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;
}

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

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

...

отображения

AUI Button
button-stylePrimary
button-textподробнее про подпись без отображения
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=13795364#id-%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D1%87%D0%B5%D1%80%D0%B5%D0%B7PKCS#11-%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B8%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%D0%BD%D0%B0%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BDPINPad

C_EX_SignInvisibleInit()

Назначение

...

Пример

 
Code Block
collapsetrue
/* Данные для подписи в виде двоичной строки */
CK_BYTE pbtData[] = { 0x3C, 0x21, 0x50, 0x49, 0x4E, 0x50, 0x41, 0x44, 0x46, 0x49, 0x4C, 0x45, 0x20, 0x52, 0x55, 0x3E,
                      0x3C, 0x21, 0x3E, 0xED, 0xE5, 0xE2, 0xE8, 0xE4, 0xE8, 0xEC, 0xFB, 0xE9, 0x20, 0xF2, 0xE5, 0xEA,
                      0xF1, 0xF2, 0x3C, 0x4E, 0x3E, 0xD4, 0xC8, 0xCE, 0x3A, 0x3C, 0x56, 0x3E, 0xCF, 0xE5, 0xF2, 0xF0,
                      0xEE, 0xE2, 0x20, 0xCF, 0xE5, 0xF2, 0xF0, 0x20, 0xCF, 0xE5, 0xF2, 0xF0, 0xEE, 0xE2, 0xE8, 0xF7,
                      0x20, 0xCC, 0xEE, 0xF1, 0xEA, 0xE2, 0xE0, 0x2C, 0x20, 0xCF, 0xE8, 0xEE, 0xED, 0xE5, 0xF0, 0xF1,
                      0xEA, 0xE0, 0xFF, 0x20, 0xF3, 0xEB, 0x2C, 0x20, 0xE4, 0x2E, 0x20, 0x33, 0x2C, 0x20, 0xEA, 0xE2,
                      0x2E, 0x20, 0x37, 0x32 };
  
CK_BYTE_PTR pbtSignature = NULL_PTR;                 // Указатель на буфер, содержащий подпись для исходных данных
CK_ULONG ulSignatureSize = 0;                        // Размер буфера, содержащего подпись для исходных данных, в байтах
  
while(TRUE)
{
    ...
  
    /* Определить размер подписи*/
    printf("C_EX_SignInvisible step 1");
    rv = pFunctionList->C_EX_SignInvisible(hSession,            // Хэндл сессии
                                           pbtData,             // Буфер с данными для подписи
                                           arraysize(pbtData),  // Длина подписываемых данных
                                           pbtSignature,        // Буфер с подписью
                                           &ulSignatureSize);   // Длина подписи
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
 
    pbtSignature = (CK_BYTE*)malloc(ulSignatureSize);
    if (pbtSignature  == NULL)
    {
        printf("Memory allocation for pbtSignature failed! \n");
        break;
    }
    memset( pbtSignature,
            0,
            ulSignatureSize * sizeof(CK_BYTE));
 
    /* Подписать исходные данные */
    printf("C_EX_SignInvisible step 2");
    rv = pFunctionList->C_EX_SignInvisible(hSession,            // Хэндл сессии
                                           pbtData,             // Буфер с данными для подписи
                                           arraysize(pbtData),  // Длина подписываемых данных
                                           pbtSignature,        // Буфер с подписью
                                           &ulSignatureSize);   // Длина подписи
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
} 
к содержанию ↑

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

AUI Button
button-stylePrimary
button-textподробнее про Secure Messaging
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=10059883
 

C_EX_LoadActivationKey()

Назначение

...