| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "crypto/apple_keychain.h" | 5 #include "crypto/apple_keychain.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
| 10 #include "crypto/mac_security_services_lock.h" | 10 #include "crypto/mac_security_services_lock.h" |
| 11 | 11 |
| 12 namespace crypto { | 12 namespace crypto { |
| 13 | 13 |
| 14 AppleKeychain::AppleKeychain() {} | 14 AppleKeychain::AppleKeychain() {} |
| 15 | 15 |
| 16 AppleKeychain::~AppleKeychain() {} | 16 AppleKeychain::~AppleKeychain() {} |
| 17 | 17 |
| 18 OSStatus AppleKeychain::ItemCopyAttributesAndData( | |
| 19 SecKeychainItemRef itemRef, | |
| 20 SecKeychainAttributeInfo* info, | |
| 21 SecItemClass* itemClass, | |
| 22 SecKeychainAttributeList** attrList, | |
| 23 UInt32* length, | |
| 24 void** outData) const { | |
| 25 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 26 return SecKeychainItemCopyAttributesAndData(itemRef, info, itemClass, | |
| 27 attrList, length, outData); | |
| 28 } | |
| 29 | |
| 30 OSStatus AppleKeychain::ItemModifyAttributesAndData( | |
| 31 SecKeychainItemRef itemRef, | |
| 32 const SecKeychainAttributeList* attrList, | |
| 33 UInt32 length, | |
| 34 const void* data) const { | |
| 35 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 36 return SecKeychainItemModifyAttributesAndData(itemRef, attrList, length, | |
| 37 data); | |
| 38 } | |
| 39 | |
| 40 OSStatus AppleKeychain::ItemFreeAttributesAndData( | |
| 41 SecKeychainAttributeList* attrList, | |
| 42 void* data) const { | |
| 43 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 44 return SecKeychainItemFreeAttributesAndData(attrList, data); | |
| 45 } | |
| 46 | |
| 47 OSStatus AppleKeychain::ItemDelete(SecKeychainItemRef itemRef) const { | 18 OSStatus AppleKeychain::ItemDelete(SecKeychainItemRef itemRef) const { |
| 48 base::AutoLock lock(GetMacSecurityServicesLock()); | 19 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 49 return SecKeychainItemDelete(itemRef); | 20 return SecKeychainItemDelete(itemRef); |
| 50 } | 21 } |
| 51 | 22 |
| 52 OSStatus AppleKeychain::SearchCreateFromAttributes( | |
| 53 CFTypeRef keychainOrArray, | |
| 54 SecItemClass itemClass, | |
| 55 const SecKeychainAttributeList* attrList, | |
| 56 SecKeychainSearchRef* searchRef) const { | |
| 57 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 58 // Eventually, this deprecated method should be removed entirely. | |
| 59 // https://crbug.com/595468 | |
| 60 #pragma clang diagnostic push | |
| 61 #pragma clang diagnostic ignored "-Wdeprecated-declarations" | |
| 62 return SecKeychainSearchCreateFromAttributes(keychainOrArray, itemClass, | |
| 63 attrList, searchRef); | |
| 64 #pragma clang diagnostic pop | |
| 65 } | |
| 66 | |
| 67 OSStatus AppleKeychain::SearchCopyNext(SecKeychainSearchRef searchRef, | |
| 68 SecKeychainItemRef* itemRef) const { | |
| 69 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 70 // Eventually, this deprecated method should be removed entirely. | |
| 71 // https://crbug.com/595468 | |
| 72 #pragma clang diagnostic push | |
| 73 #pragma clang diagnostic ignored "-Wdeprecated-declarations" | |
| 74 return SecKeychainSearchCopyNext(searchRef, itemRef); | |
| 75 #pragma clang diagnostic pop | |
| 76 } | |
| 77 | |
| 78 OSStatus AppleKeychain::AddInternetPassword( | |
| 79 SecKeychainRef keychain, | |
| 80 UInt32 serverNameLength, | |
| 81 const char* serverName, | |
| 82 UInt32 securityDomainLength, | |
| 83 const char* securityDomain, | |
| 84 UInt32 accountNameLength, | |
| 85 const char* accountName, | |
| 86 UInt32 pathLength, | |
| 87 const char* path, | |
| 88 UInt16 port, | |
| 89 SecProtocolType protocol, | |
| 90 SecAuthenticationType authenticationType, | |
| 91 UInt32 passwordLength, | |
| 92 const void* passwordData, | |
| 93 SecKeychainItemRef* itemRef) const { | |
| 94 base::AutoLock lock(GetMacSecurityServicesLock()); | |
| 95 return SecKeychainAddInternetPassword(keychain, | |
| 96 serverNameLength, serverName, | |
| 97 securityDomainLength, securityDomain, | |
| 98 accountNameLength, accountName, | |
| 99 pathLength, path, | |
| 100 port, protocol, authenticationType, | |
| 101 passwordLength, passwordData, | |
| 102 itemRef); | |
| 103 } | |
| 104 | |
| 105 OSStatus AppleKeychain::FindGenericPassword(CFTypeRef keychainOrArray, | 23 OSStatus AppleKeychain::FindGenericPassword(CFTypeRef keychainOrArray, |
| 106 UInt32 serviceNameLength, | 24 UInt32 serviceNameLength, |
| 107 const char* serviceName, | 25 const char* serviceName, |
| 108 UInt32 accountNameLength, | 26 UInt32 accountNameLength, |
| 109 const char* accountName, | 27 const char* accountName, |
| 110 UInt32* passwordLength, | 28 UInt32* passwordLength, |
| 111 void** passwordData, | 29 void** passwordData, |
| 112 SecKeychainItemRef* itemRef) const { | 30 SecKeychainItemRef* itemRef) const { |
| 113 base::AutoLock lock(GetMacSecurityServicesLock()); | 31 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 114 return SecKeychainFindGenericPassword(keychainOrArray, | 32 return SecKeychainFindGenericPassword(keychainOrArray, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 139 return SecKeychainAddGenericPassword(keychain, | 57 return SecKeychainAddGenericPassword(keychain, |
| 140 serviceNameLength, | 58 serviceNameLength, |
| 141 serviceName, | 59 serviceName, |
| 142 accountNameLength, | 60 accountNameLength, |
| 143 accountName, | 61 accountName, |
| 144 passwordLength, | 62 passwordLength, |
| 145 passwordData, | 63 passwordData, |
| 146 itemRef); | 64 itemRef); |
| 147 } | 65 } |
| 148 | 66 |
| 149 void AppleKeychain::Free(CFTypeRef ref) const { | |
| 150 if (ref) | |
| 151 CFRelease(ref); | |
| 152 } | |
| 153 | |
| 154 } // namespace crypto | 67 } // namespace crypto |
| OLD | NEW |