Use the PKCS#11 object enumerator

This commit is contained in:
Martin Willi
2010-08-04 09:26:20 +02:00
parent 9baa41c52d
commit ddbac66028
@@ -127,34 +127,15 @@ static void find_certificates(private_pkcs11_creds_t *this,
{CKA_TRUSTED, &trusted, sizeof(trusted)}, {CKA_TRUSTED, &trusted, sizeof(trusted)},
}; };
CK_OBJECT_HANDLE object; CK_OBJECT_HANDLE object;
CK_ULONG found; enumerator_t *enumerator;
CK_RV rv;
rv = this->lib->f->C_FindObjectsInit(session, template, countof(template)); enumerator = this->lib->create_object_enumerator(this->lib,
if (rv == CKR_OK) session, template, countof(template));
while (enumerator->enumerate(enumerator, &object))
{ {
while (TRUE) handle_certificate(this, session, object, trusted);
{
rv = this->lib->f->C_FindObjects(session, &object, 1, &found);
if (rv == CKR_OK)
{
if (found == 1)
{
handle_certificate(this, session, object, trusted);
}
else
{
break;
}
}
else
{
DBG1(DBG_CFG, "C_FindObjects() error: %N", ck_rv_names, rv);
break;
}
}
} }
this->lib->f->C_FindObjectsFinal(session); enumerator->destroy(enumerator);
} }
/** /**