X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_keychain/lib/Password.cpp?ds=inline diff --git a/Security/libsecurity_keychain/lib/Password.cpp b/Security/libsecurity_keychain/lib/Password.cpp deleted file mode 100644 index 68cdcce2..00000000 --- a/Security/libsecurity_keychain/lib/Password.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2002-2004,2011-2012,2014 Apple Inc. All Rights Reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ - -// -// Password.cpp -// -#include "Password.h" -#include -#include "SecBridge.h" - -#include "KCCursor.h" - -using namespace KeychainCore; -using namespace CssmClient; - -PasswordImpl::PasswordImpl(SecItemClass itemClass, SecKeychainAttributeList *searchAttrList, SecKeychainAttributeList *itemAttrList) : - mItem(itemClass, itemAttrList, 0, NULL), mUseKeychain(false), mFoundInKeychain(false), mRememberInKeychain(false), mMutex(Mutex::recursive) -{ - if (searchAttrList && itemAttrList) - { - mUseKeychain = true; - mKeychain = Keychain::optional(NULL); - mRememberInKeychain = true; - - // initialize mFoundInKeychain to true if mItem is found - - StorageManager::KeychainList keychains; - globals().storageManager.optionalSearchList(NULL, keychains); - KCCursor cursor(keychains, itemClass, searchAttrList); - - if (cursor->next(mItem)) - mFoundInKeychain = true; - } -} - -PasswordImpl::PasswordImpl(PasswordImpl& existing) -{ - mKeychain = existing.mKeychain; - mItem = existing.mItem; - mUseKeychain = existing.mUseKeychain; - mFoundInKeychain = existing.mFoundInKeychain; - mRememberInKeychain = existing.mRememberInKeychain; -} - - - -PasswordImpl::~PasswordImpl() throw() -{ -} - -void -PasswordImpl::setAccess(Access *access) -{ - // changing an existing ACL is more work than this SPI wants to do - if (!mFoundInKeychain) - mItem->setAccess(access); -} - -void -PasswordImpl::setData(UInt32 length, const void *data) -{ - assert(mUseKeychain); - - // do different things based on mFoundInKeychain? - mItem->setData(length,data); -} - -bool -PasswordImpl::getData(UInt32 *length, const void **data) -{ - if (mItem->isPersistent()) - { - // try to retrieve it - CssmDataContainer outData; - try - { - mItem->getData(outData); - if (length && data) - { - *length=(uint32)outData.length(); - outData.Length=0; - *data=outData.data(); - outData.Data=NULL; - } - return true; - } - catch (...) - { - // cancel unlock: CSP_USER_CANCELED - // deny rogue app CSP_OPERATION_AUTH_DENIED - return false; - } - } - else - return false; -} - -void -PasswordImpl::save() -{ - assert(mUseKeychain); - - if (mFoundInKeychain) - { - mItem->update(); - } - else - { - mKeychain->add(mItem); - - // reinitialize mItem now it's on mKeychain - mFoundInKeychain = true; // should be set by member that resets mItem - } -} - -Password::Password(SecItemClass itemClass, SecKeychainAttributeList *searchAttrList, SecKeychainAttributeList *itemAttrList) : - SecPointer(new PasswordImpl(itemClass, searchAttrList, itemAttrList)) -{ -} - -Password::Password(PasswordImpl *impl) : SecPointer(impl) -{ -} - -Password::Password(PasswordImpl &impl) : SecPointer(new PasswordImpl(impl)) -{ -}