2  * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. 
   4  * The contents of this file constitute Original Code as defined in and are 
   5  * subject to the Apple Public Source License Version 1.2 (the 'License'). 
   6  * You may not use this file except in compliance with the License. Please obtain 
   7  * a copy of the License at http://www.apple.com/publicsource and read it before 
  10  * This Original Code and all software distributed under the License are 
  11  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS 
  12  * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT 
  13  * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
  14  * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the 
  15  * specific language governing rights and limitations under the License. 
  18 #include <Security/SecIdentitySearch.h> 
  19 #include <Security/IdentityCursor.h> 
  20 #include <Security/Identity.h> 
  22 #include "SecBridge.h" 
  26 SecIdentitySearchGetTypeID(void) 
  30         return gTypes().IdentityCursor
.typeID
; 
  32         END_SECAPI1(_kCFRuntimeNotATypeID
) 
  37 SecIdentitySearchCreate( 
  38         CFTypeRef keychainOrArray
, 
  40         SecIdentitySearchRef 
*searchRef
) 
  46         StorageManager::KeychainList keychains
; 
  47         globals().storageManager
.optionalSearchList(keychainOrArray
, keychains
); 
  48         SecPointer
<IdentityCursor
> identityCursor(new IdentityCursor (keychains
, keyUsage
)); 
  49         *searchRef 
= identityCursor
->handle(); 
  56 SecIdentitySearchCopyNext( 
  57         SecIdentitySearchRef searchRef
,  
  58         SecIdentityRef 
*identityRef
) 
  62         RequiredParam(identityRef
); 
  63         SecPointer
<Identity
> identityPtr
; 
  64         if (!IdentityCursor::required(searchRef
)->next(identityPtr
)) 
  65                 return errSecItemNotFound
; 
  67         *identityRef 
= identityPtr
->handle();