| 
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424 | 
			cackey_free_certs(identities[id_idx].pcsc_identity, 1, 1);
		}
	}
	free(identities);
}
static unsigned long cackey_read_dod_identities(struct cackey_identity *identities,for (cert_idx = 0; cert_idx < num_dod_certs; cert_idx++) {
		identities[id_idx].pcsc_identity = NULL;
		identities[id_idx].attributes = cackey_get_attributes(CKO_CERTIFICATE, &extra_certs[cert_idx], 0xf000 | cert_idx, &identities[id_idx].attributes_count);
		id_idx++;
		identities[id_idx].pcsc_identity = NULL; unsigned long id_idx,unsigned long num_dod_certs) {
	unsigned long cert_idx; | 
|
|
 | 
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
 | 
			cackey_free_certs(identities[id_idx].pcsc_identity, 1, 1);
		}
	}
	free(identities);
}
static unsigned long cackey_read_dod_identities(struct cackey_identity *identities, unsigned long num_dod_certs) {
	unsigned long cert_idx, id_idx = 0;
	for (cert_idx = 0; cert_idx < num_dod_certs; cert_idx++) {
		identities[id_idx].pcsc_identity = NULL;
		identities[id_idx].attributes = cackey_get_attributes(CKO_CERTIFICATE, &extra_certs[cert_idx], 0xf000 | cert_idx, &identities[id_idx].attributes_count);
		id_idx++;
		identities[id_idx].pcsc_identity = NULL;
 | 
| 
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482 | 
	if (slot->internal) {
		num_ids = num_dod_certs * 3;
		if (num_ids != 0) {
			identities = malloc(num_ids * sizeof(*identities));
			cackey_read_dod_identities(identities,} else {
			identities = NULL;
		}
		*ids_found = num_ids;
		return(identities); 0,num_dod_certs); | 
|
 | 
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
 | 
	if (slot->internal) {
		num_ids = num_dod_certs * 3;
		if (num_ids != 0) {
			identities = malloc(num_ids * sizeof(*identities));
			cackey_read_dod_identities(identities, num_dod_certs);
		} else {
			identities = NULL;
		}
		*ids_found = num_ids;
		return(identities);
 | 
| 
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522 | 
				id_idx++;
			}
		}
		if (include_extra_certs) {
			CACKEY_DEBUG_PRINTF("Including DoD Certificates on hardware slot");
			cackey_read_dod_identities(identities}
		cackey_free_certs(pcsc_identities, num_certs, 1);
		*ids_found = num_ids;
		return(identities);,id_idx, num_dod_certs); | 
|
 | 
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
 | 
				id_idx++;
			}
		}
		if (include_extra_certs) {
			CACKEY_DEBUG_PRINTF("Including DoD Certificates on hardware slot");
			cackey_read_dod_identities(identities + id_idx, num_dod_certs);
		}
		cackey_free_certs(pcsc_identities, num_certs, 1);
		*ids_found = num_ids;
		return(identities);
 |