Ваш pulEncryptedDataLen
, вероятно, имеет значение NULL, что вызывает CKR_ARGUMENTS_BAD
.
Лучше использовать, например:
CK_ULONG ulEncryptedDataLen;
...
rv = pfunc11->C_Encrypt(session, (CK_BYTE_PTR)clear, (CK_ULONG)buf_len, NULL, &ulEncryptedDataLen);
Количество байтов, достаточное для хранения результата шифрования одногочастичное шифрование сохраняется в ulEncryptedDataLen
.
Также обратите внимание, что ваш способ передачи значения IV неверен, так как "01020304050607081122334455667788"
приводит к строке ASCII (давая IV как 30313032303330343035303630373038
- что, вероятно,не то, что вы хотите).
Для получения правильного IV используйте вместо этого "\x01\x02\x03\x04\x05\x06\x07\x08\x11\x22\x33\x44\x55\x66\x77\x88"
.
Удачи!