Вывод атрибута из файла с Rutoken
Пишу программу, необходимо считать атрибут с файла хранящегося на Rutoken S и записать его в строку.
пользуюсь исходным кодом представленным на
http://developer.rutoken.ru/pages/viewp … танатокене
но при компиляции возникает ошибка
CK_BYTE new_data[] = “Sample Rutoken data”;
CK_ATTRIBUTE attrDataReadTmpl[] = {CKA_VALUE, NULL_PTR, NULL};
CK_ATTRIBUTE attrDataEditTmpl[] = {CKA_VALUE, new_data, sizeof(new_data)};
while(true)
{
...
/* Изменить значение объекта */
printf("Setting object value");
rv = pFunctionList->C_SetAttributeValue(hSession, // Хэндл открытой с правами Пользователя сессии
hData, // Хэндл объекта ключа
&attrDataEditTmpl[0], // Шаблон изменения значения атрибута
1); // Количество атрибутов в шаблоне
if (rv != CKR_OK)
{
printf(" -> Failed\n");
break;
}
printf(" -> OK\n");
/* Получить размер буфера для хранения значения атрибута CKA_VALUE*/
printf("Getting object value size");
rv = pFunctionList->C_GetAttributeValue(hSession, // Хэндл открытой с правами Пользователя сессии
hData, // Хэндл объекта ключа
&attrDataReadTmpl[0], // Шаблон получения значения атрибута
1); // Количество атрибутов в шаблоне
if (rv != CKR_OK)
{
printf(" -> Failed\n");
break;
}
printf(" -> OK\n");
/* Выделить необходимое количество памяти для значения атрибута */
attrDataReadTmpl->pValue = (CK_BYTE*)malloc(attrDataReadTmpl->ulValueLen);
if (attrDataReadTmpl->pValue == NULL)
{
printf("Memory allocation for attrDataReadTmpl failed! \n");
break;
}
memset(attrDataReadTmpl->pValue,
0,
(attrDataReadTmpl->ulValueLen * sizeof(CK_BYTE)));
/* Получить значение объекта */
printf("Getting object value");
rv = pFunctionList->C_GetAttributeValue(hSession, // Хэндл открытой с правами Пользователя сессии
hData, // Хэндл объекта ключа
&attrDataReadTmpl, // Шаблон получения значения атрибута
1); // Количество атрибутов в шаблоне
if (rv != CKR_OK)
{
printf(" -> Failed\n");
break;
}
printf(" -> OK\n");
/* Распечатать буфер со значением объекта */
printf("Data is:\n");
for (i = 0;
i < attrDataReadTmpl->ulValueLen;
i++)
printf("%s", attrDataReadTmpl->pValue[i]);
break;
}
if (attrDataReadTmpl->pValue)
{
free(attrDataReadTmpl->pValue);
attrDataReadTmpl->pValue = NULL_PTR;
attrDataReadTmpl->ulValueLen= 0;
}
а именно в строчке
printf("%s", attrDataReadTmpl->pValue[i]);
код ошибки
[bcc32 Error] Unit1.cpp(273): E2453 Size of the type 'void' is unknown or zero
Full parser context
Unit1.cpp(44): parsing: void _fastcall TForm1::FormShow(TObject *)
перерыл весь интрнет ничего путного не нашел,
подскажите что делать, или дайте подобный семпл!