mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
/* Test for PKCS#11 calls. */
|
|
|
|
#include <stdio.h>
|
|
#include <security/cryptoki.h>
|
|
#include <security/pkcs11.h>
|
|
|
|
int main(void)
|
|
{
|
|
CK_RV ret = C_Initialize(NULL);
|
|
if (ret != CKR_OK) {
|
|
fprintf(stderr, "Initialize: %lu\n", ret);
|
|
return 1;
|
|
}
|
|
|
|
CK_ULONG slot_count;
|
|
ret = C_GetSlotList(0, NULL, &slot_count);
|
|
if (ret != CKR_OK) {
|
|
fprintf(stderr, "GetSlotList(NULL): %lu\n", ret);
|
|
return 1;
|
|
}
|
|
|
|
CK_SLOT_ID_PTR slots = malloc(slot_count * sizeof(CK_SLOT_ID));
|
|
if (slots == NULL) {
|
|
fprintf(stderr, "malloc(slots)\n");
|
|
return 1;
|
|
}
|
|
|
|
ret = C_GetSlotList(0, slots, &slot_count);
|
|
if (ret != CKR_OK) {
|
|
fprintf(stderr, "GetSlotList(slots): %lu\n", ret);
|
|
return 1;
|
|
}
|
|
|
|
CK_ULONG i;
|
|
for (i = 0; i < slot_count; i++) {
|
|
CK_SLOT_ID slot_id = slots[i];
|
|
|
|
CK_ULONG mech_count;
|
|
ret = C_GetMechanismList(slot_id, NULL, &mech_count);
|
|
if (ret != CKR_OK) {
|
|
fprintf(stderr, "GetMechanismList(NULL): %lu\n", ret);
|
|
return 1;
|
|
}
|
|
|
|
CK_MECHANISM_TYPE_PTR mechs = malloc(mech_count * sizeof(CK_MECHANISM_TYPE));
|
|
if (slots == NULL) {
|
|
fprintf(stderr, "malloc(mechs)\n");
|
|
return 1;
|
|
}
|
|
|
|
ret = C_GetMechanismList(slot_id, mechs, &mech_count);
|
|
if (ret != CKR_OK) {
|
|
fprintf(stderr, "GetMechanismList(mechs): %lu\n", ret);
|
|
return 1;
|
|
}
|
|
|
|
free(mechs);
|
|
}
|
|
|
|
free(slots);
|
|
C_Finalize(NULL_PTR);
|
|
return 0;
|
|
}
|
|
|