а если так сделать (вроде более правильно):
CK_BYTE_PTR pModulus;
rv = pfn_C_GetAttributeValue(SessionHandle, PrivKey, &itemplate, 1);
if (rv == CKR_OK)
{
pModulus = (CK_BYTE_PTR) malloc(itemplate.ulValueLen);
itemplate.pValue = pModulus;
rv = pfn_C_GetAttributeValue(SessionHandle, PrivKey, &itemplate, 1);
if (rv == CKR_OK)
{
//Memo1->Lines->Add("template.value: "+AnsiString((char*)itemplate.pValue));
Memo1->Lines->Add("template.value: "+IntToStr(itemplate.pValue));
Memo1->Lines->Add("template.type: "+IntToStr(itemplate.type));
Memo1->Lines->Add("template.ulValueLen: "+IntToStr(itemplate.ulValueLen));
}
}
то itemplate.pValue = 1 в независимости от того, каким был создан приватный ключ (CKA_EXTRACTABLE = true или CKA_EXTRACTABLE = false)