OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "crypto/apple_keychain.h" |
| 6 |
| 7 #import <Foundation/Foundation.h> |
| 8 |
| 9 #include "base/synchronization/lock.h" |
| 10 #include "crypto/mac_security_services_lock.h" |
| 11 |
| 12 namespace crypto { |
| 13 |
| 14 AppleKeychain::AppleKeychain() {} |
| 15 |
| 16 AppleKeychain::~AppleKeychain() {} |
| 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 { |
| 48 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 49 return SecKeychainItemDelete(itemRef); |
| 50 } |
| 51 |
| 52 OSStatus AppleKeychain::SearchCreateFromAttributes( |
| 53 CFTypeRef keychainOrArray, |
| 54 SecItemClass itemClass, |
| 55 const SecKeychainAttributeList* attrList, |
| 56 SecKeychainSearchRef* searchRef) const { |
| 57 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 58 return SecKeychainSearchCreateFromAttributes(keychainOrArray, itemClass, |
| 59 attrList, searchRef); |
| 60 } |
| 61 |
| 62 OSStatus AppleKeychain::SearchCopyNext(SecKeychainSearchRef searchRef, |
| 63 SecKeychainItemRef* itemRef) const { |
| 64 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 65 return SecKeychainSearchCopyNext(searchRef, itemRef); |
| 66 } |
| 67 |
| 68 OSStatus AppleKeychain::AddInternetPassword( |
| 69 SecKeychainRef keychain, |
| 70 UInt32 serverNameLength, |
| 71 const char* serverName, |
| 72 UInt32 securityDomainLength, |
| 73 const char* securityDomain, |
| 74 UInt32 accountNameLength, |
| 75 const char* accountName, |
| 76 UInt32 pathLength, |
| 77 const char* path, |
| 78 UInt16 port, |
| 79 SecProtocolType protocol, |
| 80 SecAuthenticationType authenticationType, |
| 81 UInt32 passwordLength, |
| 82 const void* passwordData, |
| 83 SecKeychainItemRef* itemRef) const { |
| 84 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 85 return SecKeychainAddInternetPassword(keychain, |
| 86 serverNameLength, serverName, |
| 87 securityDomainLength, securityDomain, |
| 88 accountNameLength, accountName, |
| 89 pathLength, path, |
| 90 port, protocol, authenticationType, |
| 91 passwordLength, passwordData, |
| 92 itemRef); |
| 93 } |
| 94 |
| 95 OSStatus AppleKeychain::FindGenericPassword(CFTypeRef keychainOrArray, |
| 96 UInt32 serviceNameLength, |
| 97 const char* serviceName, |
| 98 UInt32 accountNameLength, |
| 99 const char* accountName, |
| 100 UInt32* passwordLength, |
| 101 void** passwordData, |
| 102 SecKeychainItemRef* itemRef) const { |
| 103 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 104 return SecKeychainFindGenericPassword(keychainOrArray, |
| 105 serviceNameLength, |
| 106 serviceName, |
| 107 accountNameLength, |
| 108 accountName, |
| 109 passwordLength, |
| 110 passwordData, |
| 111 itemRef); |
| 112 } |
| 113 |
| 114 OSStatus AppleKeychain::ItemFreeContent(SecKeychainAttributeList* attrList, |
| 115 void* data) const { |
| 116 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 117 return SecKeychainItemFreeContent(attrList, data); |
| 118 } |
| 119 |
| 120 OSStatus AppleKeychain::AddGenericPassword(SecKeychainRef keychain, |
| 121 UInt32 serviceNameLength, |
| 122 const char* serviceName, |
| 123 UInt32 accountNameLength, |
| 124 const char* accountName, |
| 125 UInt32 passwordLength, |
| 126 const void* passwordData, |
| 127 SecKeychainItemRef* itemRef) const { |
| 128 base::AutoLock lock(GetMacSecurityServicesLock()); |
| 129 return SecKeychainAddGenericPassword(keychain, |
| 130 serviceNameLength, |
| 131 serviceName, |
| 132 accountNameLength, |
| 133 accountName, |
| 134 passwordLength, |
| 135 passwordData, |
| 136 itemRef); |
| 137 } |
| 138 |
| 139 void AppleKeychain::Free(CFTypeRef ref) const { |
| 140 if (ref) |
| 141 CFRelease(ref); |
| 142 } |
| 143 |
| 144 } // namespace crypto |
OLD | NEW |