本文整理汇总了C++中Search::tokenHandle方法的典型用法代码示例。如果您正苦于以下问题:C++ Search::tokenHandle方法的具体用法?C++ Search::tokenHandle怎么用?C++ Search::tokenHandle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Search
的用法示例。
在下文中一共展示了Search::tokenHandle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findNext
void TokenDatabase::findNext(Database::Search *rSearch,
CssmDbRecordAttributeData *inAttributes, mach_msg_type_number_t inAttributesLength,
CssmData *data, RefPointer<Key> &key, RefPointer<Database::Record> &rRecord,
CssmDbRecordAttributeData * &outAttributes, mach_msg_type_number_t &outAttributesLength)
{
Access access(token());
RefPointer<Record> record = new Record(*this);
Search *search = safe_cast<Search *>(rSearch);
TRY
KeyHandle hKey = noKey;
validate(CSSM_ACL_AUTHORIZATION_DB_READ, openCreds());
GUARD
record->tokenHandle() = access().Tokend::ClientSession::findNext(
search->tokenHandle(), inAttributes, inAttributesLength,
NULL, hKey, outAttributes, outAttributesLength);
if (!record->tokenHandle()) { // no more matches
releaseSearch(*search); // release search handle (consumed by EOD)
rRecord = NULL; // return null record
return;
}
if (data) {
if (!hKey)
record->validate(CSSM_ACL_AUTHORIZATION_DB_READ, openCreds());
CssmDbRecordAttributeData *noAttributes;
mach_msg_type_number_t noAttributesLength;
access().Tokend::ClientSession::findRecordHandle(record->tokenHandle(),
NULL, 0, data, hKey, noAttributes, noAttributesLength);
if (hKey) { // tokend returned a key reference & data
CssmKey &keyForm = *data->interpretedAs<CssmKey>(CSSMERR_CSP_INVALID_KEY);
key = new TokenKey(*this, hKey, keyForm.header());
}
}
rRecord = record->commit();
DONE
}