Home | History | Annotate | Download | only in solaris
      1 /* Test for PKCS#11 calls. */
      2 
      3 #include <stdio.h>
      4 #include <security/cryptoki.h>
      5 #include <security/pkcs11.h>
      6 
      7 int main(void)
      8 {
      9    CK_RV ret = C_Initialize(NULL);
     10    if (ret != CKR_OK) {
     11       fprintf(stderr, "Initialize: %lu\n", ret);
     12       return 1;
     13    }
     14 
     15    CK_ULONG slot_count;
     16    ret = C_GetSlotList(0, NULL, &slot_count);
     17    if (ret != CKR_OK) {
     18       fprintf(stderr, "GetSlotList(NULL): %lu\n", ret);
     19       return 1;
     20    }
     21 
     22    CK_SLOT_ID_PTR slots = malloc(slot_count * sizeof(CK_SLOT_ID));
     23    if (slots == NULL) {
     24       fprintf(stderr, "malloc(slots)\n");
     25       return 1;
     26    }
     27 
     28    ret = C_GetSlotList(0, slots, &slot_count);
     29    if (ret != CKR_OK) {
     30       fprintf(stderr, "GetSlotList(slots): %lu\n", ret);
     31       return 1;
     32    }
     33 
     34    CK_ULONG i;
     35    for (i = 0; i < slot_count; i++) {
     36       CK_SLOT_ID slot_id = slots[i];
     37 
     38       CK_ULONG mech_count;
     39       ret = C_GetMechanismList(slot_id, NULL, &mech_count);
     40       if (ret != CKR_OK) {
     41          fprintf(stderr, "GetMechanismList(NULL): %lu\n", ret);
     42          return 1;
     43       }
     44 
     45       CK_MECHANISM_TYPE_PTR mechs = malloc(mech_count * sizeof(CK_MECHANISM_TYPE));
     46       if (slots == NULL) {
     47          fprintf(stderr, "malloc(mechs)\n");
     48          return 1;
     49       }
     50 
     51       ret = C_GetMechanismList(slot_id, mechs, &mech_count);
     52       if (ret != CKR_OK) {
     53          fprintf(stderr, "GetMechanismList(mechs): %lu\n", ret);
     54          return 1;
     55       }
     56 
     57       free(mechs);
     58    }
     59 
     60    free(slots);
     61    C_Finalize(NULL_PTR);
     62    return 0;
     63 }
     64 
     65