// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "crypto/apple_keychain.h" #import #include "base/synchronization/lock.h" #include "crypto/mac_security_services_lock.h" namespace crypto { AppleKeychain::AppleKeychain() {} AppleKeychain::~AppleKeychain() {} OSStatus AppleKeychain::ItemDelete(AppleSecKeychainItemRef itemRef) const { base::AutoLock lock(GetMacSecurityServicesLock()); return SecKeychainItemDelete(itemRef); } OSStatus AppleKeychain::FindGenericPassword( UInt32 serviceNameLength, const char* serviceName, UInt32 accountNameLength, const char* accountName, UInt32* passwordLength, void** passwordData, AppleSecKeychainItemRef* itemRef) const { base::AutoLock lock(GetMacSecurityServicesLock()); return SecKeychainFindGenericPassword(nullptr, serviceNameLength, serviceName, accountNameLength, accountName, passwordLength, passwordData, itemRef); } OSStatus AppleKeychain::ItemFreeContent(void* data) const { base::AutoLock lock(GetMacSecurityServicesLock()); return SecKeychainItemFreeContent(nullptr, data); } OSStatus AppleKeychain::AddGenericPassword( UInt32 serviceNameLength, const char* serviceName, UInt32 accountNameLength, const char* accountName, UInt32 passwordLength, const void* passwordData, AppleSecKeychainItemRef* itemRef) const { base::AutoLock lock(GetMacSecurityServicesLock()); return SecKeychainAddGenericPassword(nullptr, serviceNameLength, serviceName, accountNameLength, accountName, passwordLength, passwordData, itemRef); } } // namespace crypto