|
Packit |
8681c6 |
/*
|
|
Packit |
8681c6 |
* This program is provided under the terms of the Common Public License,
|
|
Packit |
8681c6 |
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
|
|
Packit |
8681c6 |
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
|
|
Packit |
8681c6 |
* found in the file LICENSE file or at
|
|
Packit |
8681c6 |
* https://opensource.org/licenses/cpl1.0.php
|
|
Packit |
8681c6 |
*/
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
/* (C) COPYRIGHT Google Inc. 2013 */
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#include <stdlib.h>
|
|
Packit |
8681c6 |
#include <string.h>
|
|
Packit |
8681c6 |
#include <stdio.h>
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#include "slotmgr.h"
|
|
Packit |
8681c6 |
#include "log.h"
|
|
Packit |
8681c6 |
#include "pkcsslotd.h"
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
void PopulateCKInfo(CK_INFO_PTR_64 ckinf)
|
|
Packit |
8681c6 |
{
|
|
Packit |
8681c6 |
CK_VERSION_PTR ckver;
|
|
Packit |
8681c6 |
char *package_version_tmp;
|
|
Packit |
8681c6 |
char *tok_str;
|
|
Packit |
8681c6 |
CK_BYTE lib_major;
|
|
Packit |
8681c6 |
CK_BYTE lib_minor;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
ckver = &(ckinf->cryptokiVersion);
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
ckver->major = CRYPTOKI_API_MAJOR_V;
|
|
Packit |
8681c6 |
ckver->minor = CRYPTOKI_API_MINOR_V;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memset(ckinf->manufacturerID, ' ', sizeof(ckinf->manufacturerID));
|
|
Packit |
8681c6 |
memset(ckinf->libraryDescription, ' ', sizeof(ckinf->libraryDescription));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(ckinf->manufacturerID, MFG, strlen(MFG));
|
|
Packit |
8681c6 |
memcpy(ckinf->libraryDescription, LIB, strlen(LIB));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
ckver = &(ckinf->libraryVersion);
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
ckver->major = LIB_MAJOR_V;
|
|
Packit |
8681c6 |
ckver->minor = LIB_MINOR_V;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#ifdef PACKAGE_VERSION
|
|
Packit |
8681c6 |
package_version_tmp = malloc(strlen(PACKAGE_VERSION) + 1);
|
|
Packit |
8681c6 |
if (package_version_tmp) {
|
|
Packit |
8681c6 |
strcpy(package_version_tmp, PACKAGE_VERSION);
|
|
Packit |
8681c6 |
tok_str = strtok(package_version_tmp, ".");
|
|
Packit |
8681c6 |
if (tok_str) {
|
|
Packit |
8681c6 |
lib_major = (CK_BYTE) atoi(tok_str);
|
|
Packit |
8681c6 |
tok_str = strtok(NULL, ".");
|
|
Packit |
8681c6 |
if (tok_str) {
|
|
Packit |
8681c6 |
lib_minor = (CK_BYTE) atoi(tok_str);
|
|
Packit |
8681c6 |
ckver->major = lib_major;
|
|
Packit |
8681c6 |
ckver->minor = lib_minor;
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
free(package_version_tmp);
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
#endif
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
void PopulateSlotInfo(Slot_Info_t_64 *slot_info, unsigned int *processed)
|
|
Packit |
8681c6 |
{
|
|
Packit |
8681c6 |
CK_SLOT_ID id;
|
|
Packit |
8681c6 |
unsigned int slot_count = 0;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
/*
|
|
Packit |
8681c6 |
* populate the Slot entries...
|
|
Packit |
8681c6 |
*/
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
for (id = 0; id < NUMBER_SLOTS_MANAGED; id++) {
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
if (sinfo[id].present == FALSE) {
|
|
Packit |
8681c6 |
/* skip empty slots and just note the slot number */
|
|
Packit |
8681c6 |
slot_info[id].slot_number = id;
|
|
Packit |
8681c6 |
} else {
|
|
Packit |
8681c6 |
slot_info[id].slot_number = sinfo[id].slot_number;
|
|
Packit |
8681c6 |
slot_info[id].present = sinfo[id].present;
|
|
Packit |
8681c6 |
slot_info[id].pk_slot.flags = sinfo[id].pk_slot.flags;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(slot_info[id].dll_location,
|
|
Packit |
8681c6 |
sinfo[id].dll_location, strlen(sinfo[id].dll_location));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(slot_info[id].confname, sinfo[id].confname,
|
|
Packit |
8681c6 |
strlen(sinfo[id].confname));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(slot_info[id].tokname, sinfo[id].tokname,
|
|
Packit |
8681c6 |
strlen(sinfo[id].tokname));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(slot_info[id].pk_slot.slotDescription,
|
|
Packit |
8681c6 |
sinfo[id].pk_slot.slotDescription,
|
|
Packit |
8681c6 |
sizeof(sinfo[id].pk_slot.slotDescription));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(slot_info[id].pk_slot.manufacturerID,
|
|
Packit |
8681c6 |
sinfo[id].pk_slot.manufacturerID,
|
|
Packit |
8681c6 |
sizeof(sinfo[id].pk_slot.manufacturerID));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(&slot_info[id].pk_slot.hardwareVersion,
|
|
Packit |
8681c6 |
&sinfo[id].pk_slot.hardwareVersion,
|
|
Packit |
8681c6 |
sizeof(sinfo[id].pk_slot.hardwareVersion));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
memcpy(&slot_info[id].pk_slot.firmwareVersion,
|
|
Packit |
8681c6 |
&sinfo[id].pk_slot.firmwareVersion,
|
|
Packit |
8681c6 |
sizeof(sinfo[id].pk_slot.firmwareVersion));
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
slot_info[id].version = sinfo[id].version;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
slot_count++;
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
}
|
|
Packit |
8681c6 |
*processed = slot_count;
|
|
Packit |
8681c6 |
}
|