mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
smartcard: add verbose output during listing
This commit is contained in:
parent
e1e2eef4e1
commit
82092f6752
@ -316,7 +316,6 @@ static SECURITY_STATUS collect_private_keys(NCryptP11ProviderHandle* provider,
|
|||||||
P11EnumKeysState* state)
|
P11EnumKeysState* state)
|
||||||
{
|
{
|
||||||
CK_RV rv;
|
CK_RV rv;
|
||||||
CK_SESSION_HANDLE session = (CK_SESSION_HANDLE)NULL;
|
|
||||||
CK_ULONG i, j, nslotObjects;
|
CK_ULONG i, j, nslotObjects;
|
||||||
CK_OBJECT_HANDLE slotObjects[MAX_KEYS_PER_SLOT] = { 0 };
|
CK_OBJECT_HANDLE slotObjects[MAX_KEYS_PER_SLOT] = { 0 };
|
||||||
const char* step = NULL;
|
const char* step = NULL;
|
||||||
@ -330,7 +329,9 @@ static SECURITY_STATUS collect_private_keys(NCryptP11ProviderHandle* provider,
|
|||||||
state->nprivateKeys = 0;
|
state->nprivateKeys = 0;
|
||||||
for (i = 0; i < state->nslots; i++)
|
for (i = 0; i < state->nslots; i++)
|
||||||
{
|
{
|
||||||
|
CK_SESSION_HANDLE session = (CK_SESSION_HANDLE)NULL;
|
||||||
CK_SLOT_INFO slotInfo;
|
CK_SLOT_INFO slotInfo;
|
||||||
|
CK_TOKEN_INFO tokenInfo;
|
||||||
|
|
||||||
WINPR_ASSERT(p11->C_GetSlotInfo);
|
WINPR_ASSERT(p11->C_GetSlotInfo);
|
||||||
rv = p11->C_GetSlotInfo(state->slots[i], &slotInfo);
|
rv = p11->C_GetSlotInfo(state->slots[i], &slotInfo);
|
||||||
@ -347,17 +348,29 @@ static SECURITY_STATUS collect_private_keys(NCryptP11ProviderHandle* provider,
|
|||||||
/* this is a safety guard as we're supposed to have listed only readers with tokens in them */
|
/* this is a safety guard as we're supposed to have listed only readers with tokens in them */
|
||||||
if (!(slotInfo.flags & CKF_TOKEN_PRESENT))
|
if (!(slotInfo.flags & CKF_TOKEN_PRESENT))
|
||||||
{
|
{
|
||||||
WLog_ERR(TAG, "token not present for slot #%d(%d)", i, state->slots[i]);
|
WLog_INFO(TAG, "token not present for slot #%d(%d)", i, state->slots[i]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WINPR_ASSERT(p11->C_GetTokenInfo);
|
||||||
|
rv = p11->C_GetTokenInfo(state->slots[i], &tokenInfo);
|
||||||
|
if (rv != CKR_OK)
|
||||||
|
{
|
||||||
|
WLog_INFO(TAG, "unable to retrieve token info for slot #%d(%d)", i, state->slots[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fix_padded_string((char *)tokenInfo.label, sizeof(tokenInfo.label));
|
||||||
|
WLog_DBG(TAG, "%s: token, label='%s' flags=0x%x", __FUNCTION__, tokenInfo.label,
|
||||||
|
tokenInfo.flags);
|
||||||
|
}
|
||||||
|
|
||||||
WINPR_ASSERT(p11->C_OpenSession);
|
WINPR_ASSERT(p11->C_OpenSession);
|
||||||
rv = p11->C_OpenSession(state->slots[i], CKF_SERIAL_SESSION, NULL, NULL, &session);
|
rv = p11->C_OpenSession(state->slots[i], CKF_SERIAL_SESSION, NULL, NULL, &session);
|
||||||
if (rv != CKR_OK)
|
if (rv != CKR_OK)
|
||||||
{
|
{
|
||||||
// TODO: shall it be fatal ?
|
WLog_ERR(TAG, "unable to openSession for slot #%d(%d), session=%p rv=%s", i, state->slots[i],
|
||||||
WLog_ERR(TAG, "unable to openSession for slot #%d(%d), rv=%s", i, state->slots[i],
|
session, CK_RV_error_string(rv));
|
||||||
CK_RV_error_string(rv));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user