1/* 2 * Copyright (c) 2002-2004 Apple Computer, Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24// 25// Identity.h - Working with Identities 26// 27#ifndef _SECURITY_IDENTITY_H_ 28#define _SECURITY_IDENTITY_H_ 29 30#include <security_keychain/Certificate.h> 31#include <security_keychain/KeyItem.h> 32 33namespace Security 34{ 35 36namespace KeychainCore 37{ 38 39class Identity : public SecCFObject 40{ 41 NOCOPY(Identity) 42public: 43 SECCFFUNCTIONS(Identity, SecIdentityRef, errSecInvalidItemRef, gTypes().Identity) 44 45 Identity(const SecPointer<KeyItem> &privateKey, 46 const SecPointer<Certificate> &certificate); 47 Identity(const StorageManager::KeychainList &keychains, const SecPointer<Certificate> &certificate); 48 virtual ~Identity() throw(); 49 50 SecPointer<KeyItem> privateKey() const; 51 SecPointer<Certificate> certificate() const; 52 53 bool operator < (const Identity &other) const; 54 bool operator == (const Identity &other) const; 55 56 bool equal(SecCFObject &other); 57 CFHashCode hash(); 58 59private: 60 SecPointer<KeyItem> mPrivateKey; 61 SecPointer<Certificate> mCertificate; 62}; 63 64} // end namespace KeychainCore 65 66} // end namespace Security 67 68#endif // !_SECURITY_IDENTITY_H_ 69