| 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 |