- blank padding added to some string values

- changed a few hardcoded values


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@133 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
jey 2002-01-05 14:47:44 +00:00
parent ee712b8b25
commit 5898cc7abc
1 changed files with 34 additions and 26 deletions

View File

@ -91,18 +91,29 @@ CK_RV C_Finalize(CK_VOID_PTR pReserved)
return CKR_OK;
}
void strcpy_bp(char *dst, const char *src, int dstsize)
{
int c = strlen(src) > dstsize ? dstsize : strlen(src);
memcpy(dst, src, c);
dstsize -= c;
memset(dst + c, ' ', dstsize);
}
CK_RV C_GetInfo(CK_INFO_PTR pInfo)
{
LOG("C_GetInfo(0x%x)\n", pInfo);
memset(pInfo, 0, sizeof(CK_INFO));
pInfo->cryptokiVersion.major = 2;
pInfo->cryptokiVersion.minor = 11;
strcpy((char *) pInfo->manufacturerID, "Timo Teras & Juha Yrjola");
strcpy((char *) pInfo->libraryDescription, "PC/SC PKCS#15 SmartCard reader");
strcpy_bp((char *) pInfo->manufacturerID, "OpenSC Project",
sizeof(pInfo->manufacturerID));
strcpy_bp((char *) pInfo->libraryDescription, "PKCS#15 SmartCard reader",
sizeof(pInfo->libraryDescription);
pInfo->libraryVersion.major = 0;
pInfo->libraryVersion.minor = 1;
return CKR_OK;
}
}
CK_RV C_GetFunctionList(CK_FUNCTION_LIST_PTR_PTR ppFunctionList)
{
@ -143,10 +154,10 @@ CK_RV C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo)
if (slotID < 0 || slotID >= ctx->reader_count)
return CKR_SLOT_ID_INVALID;
memset(pInfo, 0, sizeof(CK_SLOT_INFO));
strncpy((char *) pInfo->slotDescription, ctx->readers[slotID],
strcpy_bp((char *) pInfo->slotDescription, ctx->readers[slotID],
sizeof(pInfo->slotDescription));
strcpy((char *) pInfo->manufacturerID, "PC/SC interface");
strcpy_bp((char *) pInfo->manufacturerID, "PC/SC interface",
sizeof(pInfo->manufacturerID));
pInfo->flags = CKF_REMOVABLE_DEVICE | CKF_HW_SLOT;
if (sc_detect_card(ctx, slotID) == 1) {
LOG("Detected card in slot %d\n", slotID);
@ -156,7 +167,10 @@ CK_RV C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo)
slot_disconnect(slotID);
}
pInfo->hardwareVersion.major = 1;
pInfo->hardwareVersion.minor = 1;
pInfo->firmwareVersion.major = 1;
pInfo->firmwareVersion.minor = 1;
LOG("C_GetSlotInfo() ret: flags %X\n", pInfo->flags);
return CKR_OK;
@ -177,23 +191,17 @@ CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo)
if (r)
return r;
}
strncpy((char *) pInfo->label, slot[slotID].p15card->label, 32);
pInfo->label[31] = 0;
strncpy((char *) pInfo->manufacturerID, slot[slotID].p15card->manufacturer_id, 32);
pInfo->manufacturerID[31] = 0;
strcpy((char *) pInfo->model, "PKCS #15 SC");
strncpy((char *) pInfo->serialNumber, slot[slotID].p15card->serial_number, 16);
pInfo->serialNumber[15] = 0;
strcpy_bp((char *) pInfo->label, slot[slotID].p15card->label, 32);
strcpy_bp((char *) pInfo->manufacturerID, slot[slotID].p15card->manufacturer_id, 32);
strcpy_bp((char *) pInfo->model, "PKCS#15 SC", sizeof(pInfo->model));
strcpy_bp((char *) pInfo->serialNumber, slot[slotID].p15card->serial_number, 16);
pInfo->flags = CKF_RNG | CKF_USER_PIN_INITIALIZED | CKF_LOGIN_REQUIRED;
pInfo->ulMaxSessionCount = CK_EFFECTIVELY_INFINITE;
pInfo->ulSessionCount = 0; /* FIXME */
pInfo->ulMaxRwSessionCount = CK_EFFECTIVELY_INFINITE;
pInfo->ulRwSessionCount = 0; /* FIXME */
pInfo->flags = CKF_USER_PIN_INITIALIZED | CKF_LOGIN_REQUIRED;
#if 0
pInfo->ulMaxSessionCount = 1; /* opened in exclusive mode */
#else
pInfo->ulMaxSessionCount = 0; /* FIXME */
#endif
pInfo->ulSessionCount = 0;
pInfo->ulMaxRwSessionCount = 1;
pInfo->ulRwSessionCount = 0;
if (slot[slotID].p15card->pin_info[0].magic == SC_PKCS15_PIN_MAGIC) {
pInfo->ulMaxPinLen = slot[slotID].p15card->pin_info[0].stored_length;
pInfo->ulMinPinLen = slot[slotID].p15card->pin_info[0].min_length;
@ -202,10 +210,10 @@ CK_RV C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo)
pInfo->ulMaxPinLen = 8;
pInfo->ulMinPinLen = 4;
}
pInfo->ulTotalPublicMemory = 0;
pInfo->ulFreePublicMemory = 0;
pInfo->ulTotalPrivateMemory = 0;
pInfo->ulFreePrivateMemory = 0;
pInfo->ulTotalPublicMemory = CK_UNAVAILABLE_INFORMATION;
pInfo->ulFreePublicMemory = CK_UNAVAILABLE_INFORMATION;
pInfo->ulTotalPrivateMemory = CK_UNAVAILABLE_INFORMATION;
pInfo->ulFreePrivateMemory = CK_UNAVAILABLE_INFORMATION;
pInfo->hardwareVersion.major = 1;
pInfo->hardwareVersion.minor = 0;
pInfo->firmwareVersion.major = 1;