SecKeychainSearch.cpp [plain text]
#include <Security/SecKeychainSearch.h>
#include <Security/KCCursor.h>
#include <Security/Item.h>
#include "SecBridge.h"
CFTypeID
SecKeychainSearchGetTypeID(void)
{
BEGIN_SECAPI
secdebug("kcsearch", "SecKeychainSearchGetTypeID()");
return gTypes().KCCursorImpl.typeID;
END_SECAPI1(_kCFRuntimeNotATypeID)
}
OSStatus
SecKeychainSearchCreateFromAttributes(CFTypeRef keychainOrArray, SecItemClass itemClass, const SecKeychainAttributeList *attrList, SecKeychainSearchRef *searchRef)
{
BEGIN_SECAPI
secdebug("kcsearch", "SecKeychainSearchCreateFromAttributes(%p, %lu, %p, %p)",
keychainOrArray, itemClass, attrList, searchRef);
Required(searchRef);
StorageManager::KeychainList keychains;
globals().storageManager.optionalSearchList(keychainOrArray, keychains);
KCCursor cursor(keychains, itemClass, attrList);
*searchRef = cursor->handle();
END_SECAPI
}
OSStatus
SecKeychainSearchCopyNext(SecKeychainSearchRef searchRef, SecKeychainItemRef *itemRef)
{
BEGIN_SECAPI
secdebug("kcsearch", "SecKeychainSearchCopyNext(%p, %p)", searchRef, itemRef);
RequiredParam(itemRef);
Item item;
if (!KCCursorImpl::required(searchRef)->next(item))
return errSecItemNotFound;
*itemRef=item->handle();
END_SECAPI
}