Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: crypto/mock_keychain_mac.cc

Issue 10738003: src/crypto should build on the x86_64 architecture. (Closed) Base URL: https://src.chromium.org/chrome/trunk/src/
Patch Set: Fixed: Nit: the second and third arguments need to be aligned with Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« crypto/mock_keychain_mac.h ('K') | « crypto/mock_keychain_mac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/time.h" 6 #include "base/time.h"
7 #include "crypto/mock_keychain_mac.h" 7 #include "crypto/mock_keychain_mac.h"
8 8
9 namespace crypto { 9 namespace crypto {
10 10
11 MockKeychain::MockKeychain() 11 MockKeychain::MockKeychain()
12 : next_item_key_(0), 12 : next_item_key_(0),
13 search_copy_count_(0), 13 search_copy_count_(0),
14 keychain_item_copy_count_(0), 14 keychain_item_copy_count_(0),
15 attribute_data_copy_count_(0), 15 attribute_data_copy_count_(0),
16 find_generic_result_(noErr), 16 find_generic_result_(noErr),
17 called_add_generic_(false), 17 called_add_generic_(false),
18 password_data_count_(0) {} 18 password_data_count_(0) {}
19 19
20 void MockKeychain::InitializeKeychainData(unsigned int key) const { 20 void MockKeychain::InitializeKeychainData(uintptr_t key) const {
21 UInt32 tags[] = { kSecAccountItemAttr, 21 UInt32 tags[] = { kSecAccountItemAttr,
22 kSecServerItemAttr, 22 kSecServerItemAttr,
23 kSecPortItemAttr, 23 kSecPortItemAttr,
24 kSecPathItemAttr, 24 kSecPathItemAttr,
25 kSecProtocolItemAttr, 25 kSecProtocolItemAttr,
26 kSecAuthenticationTypeItemAttr, 26 kSecAuthenticationTypeItemAttr,
27 kSecSecurityDomainItemAttr, 27 kSecSecurityDomainItemAttr,
28 kSecCreationDateItemAttr, 28 kSecCreationDateItemAttr,
29 kSecNegativeItemAttr, 29 kSecNegativeItemAttr,
30 kSecCreatorItemAttr }; 30 kSecCreatorItemAttr };
(...skipping 23 matching lines...) Expand all
54 break; 54 break;
55 } 55 }
56 if (data_size > 0) { 56 if (data_size > 0) {
57 keychain_attr_list_[key].attr[i].length = data_size; 57 keychain_attr_list_[key].attr[i].length = data_size;
58 keychain_attr_list_[key].attr[i].data = calloc(1, data_size); 58 keychain_attr_list_[key].attr[i].data = calloc(1, data_size);
59 } 59 }
60 } 60 }
61 } 61 }
62 62
63 MockKeychain::~MockKeychain() { 63 MockKeychain::~MockKeychain() {
64 for (std::map<unsigned int, SecKeychainAttributeList>::iterator it = 64 for (std::map<uintptr_t, SecKeychainAttributeList>::iterator it =
65 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) { 65 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) {
66 for (unsigned int i = 0; i < it->second.count; ++i) { 66 for (unsigned int i = 0; i < it->second.count; ++i) {
67 if (it->second.attr[i].data) 67 if (it->second.attr[i].data)
68 free(it->second.attr[i].data); 68 free(it->second.attr[i].data);
69 } 69 }
70 free(it->second.attr); 70 free(it->second.attr);
71 if (keychain_data_[it->first].data) 71 if (keychain_data_[it->first].data)
72 free(keychain_data_[it->first].data); 72 free(keychain_data_[it->first].data);
73 } 73 }
74 keychain_attr_list_.clear(); 74 keychain_attr_list_.clear();
(...skipping 10 matching lines...) Expand all
85 break; 85 break;
86 } 86 }
87 } 87 }
88 if (attribute_index == -1) { 88 if (attribute_index == -1) {
89 NOTREACHED() << "Unsupported attribute: " << tag; 89 NOTREACHED() << "Unsupported attribute: " << tag;
90 return NULL; 90 return NULL;
91 } 91 }
92 return &(attribute_list.attr[attribute_index]); 92 return &(attribute_list.attr[attribute_index]);
93 } 93 }
94 94
95 void MockKeychain::SetTestDataBytes(int item, 95 void MockKeychain::SetTestDataBytes(uintptr_t item,
96 UInt32 tag, 96 UInt32 tag,
97 const void* data, 97 const void* data,
98 size_t length) { 98 size_t length) {
99 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item], 99 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item],
100 tag); 100 tag);
101 attribute->length = length; 101 attribute->length = length;
102 if (length > 0) { 102 if (length > 0) {
103 if (attribute->data) 103 if (attribute->data)
104 free(attribute->data); 104 free(attribute->data);
105 attribute->data = malloc(length); 105 attribute->data = malloc(length);
106 CHECK(attribute->data); 106 CHECK(attribute->data);
107 memcpy(attribute->data, data, length); 107 memcpy(attribute->data, data, length);
108 } else { 108 } else {
109 attribute->data = NULL; 109 attribute->data = NULL;
110 } 110 }
111 } 111 }
112 112
113 void MockKeychain::SetTestDataString(int item, UInt32 tag, const char* value) { 113 void MockKeychain::SetTestDataString(
114 uintptr_t item,
115 UInt32 tag,
116 const char* value) {
114 SetTestDataBytes(item, tag, value, value ? strlen(value) : 0); 117 SetTestDataBytes(item, tag, value, value ? strlen(value) : 0);
115 } 118 }
116 119
117 void MockKeychain::SetTestDataPort(int item, UInt32 value) { 120 void MockKeychain::SetTestDataPort(uintptr_t item, UInt32 value) {
118 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item], 121 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item],
119 kSecPortItemAttr); 122 kSecPortItemAttr);
120 UInt32* data = static_cast<UInt32*>(attribute->data); 123 UInt32* data = static_cast<UInt32*>(attribute->data);
121 *data = value; 124 *data = value;
122 } 125 }
123 126
124 void MockKeychain::SetTestDataProtocol(int item, SecProtocolType value) { 127 void MockKeychain::SetTestDataProtocol(uintptr_t item, SecProtocolType value) {
125 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item], 128 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item],
126 kSecProtocolItemAttr); 129 kSecProtocolItemAttr);
127 SecProtocolType* data = static_cast<SecProtocolType*>(attribute->data); 130 SecProtocolType* data = static_cast<SecProtocolType*>(attribute->data);
128 *data = value; 131 *data = value;
129 } 132 }
130 133
131 void MockKeychain::SetTestDataAuthType(int item, SecAuthenticationType value) { 134 void MockKeychain::SetTestDataAuthType(
135 uintptr_t item,
136 SecAuthenticationType value) {
132 SecKeychainAttribute* attribute = AttributeWithTag( 137 SecKeychainAttribute* attribute = AttributeWithTag(
133 keychain_attr_list_[item], kSecAuthenticationTypeItemAttr); 138 keychain_attr_list_[item], kSecAuthenticationTypeItemAttr);
134 SecAuthenticationType* data = static_cast<SecAuthenticationType*>( 139 SecAuthenticationType* data = static_cast<SecAuthenticationType*>(
135 attribute->data); 140 attribute->data);
136 *data = value; 141 *data = value;
137 } 142 }
138 143
139 void MockKeychain::SetTestDataNegativeItem(int item, Boolean value) { 144 void MockKeychain::SetTestDataNegativeItem(uintptr_t item, Boolean value) {
140 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item], 145 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item],
141 kSecNegativeItemAttr); 146 kSecNegativeItemAttr);
142 Boolean* data = static_cast<Boolean*>(attribute->data); 147 Boolean* data = static_cast<Boolean*>(attribute->data);
143 *data = value; 148 *data = value;
144 } 149 }
145 150
146 void MockKeychain::SetTestDataCreator(int item, OSType value) { 151 void MockKeychain::SetTestDataCreator(uintptr_t item, OSType value) {
147 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item], 152 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[item],
148 kSecCreatorItemAttr); 153 kSecCreatorItemAttr);
149 OSType* data = static_cast<OSType*>(attribute->data); 154 OSType* data = static_cast<OSType*>(attribute->data);
150 *data = value; 155 *data = value;
151 } 156 }
152 157
153 void MockKeychain::SetTestDataPasswordBytes(int item, const void* data, 158 void MockKeychain::SetTestDataPasswordBytes(uintptr_t item, const void* data,
154 size_t length) { 159 size_t length) {
155 keychain_data_[item].length = length; 160 keychain_data_[item].length = length;
156 if (length > 0) { 161 if (length > 0) {
157 if (keychain_data_[item].data) 162 if (keychain_data_[item].data)
158 free(keychain_data_[item].data); 163 free(keychain_data_[item].data);
159 keychain_data_[item].data = malloc(length); 164 keychain_data_[item].data = malloc(length);
160 memcpy(keychain_data_[item].data, data, length); 165 memcpy(keychain_data_[item].data, data, length);
161 } else { 166 } else {
162 keychain_data_[item].data = NULL; 167 keychain_data_[item].data = NULL;
163 } 168 }
164 } 169 }
165 170
166 void MockKeychain::SetTestDataPasswordString(int item, const char* value) { 171 void MockKeychain::SetTestDataPasswordString(
172 uintptr_t item,
173 const char* value) {
167 SetTestDataPasswordBytes(item, value, value ? strlen(value) : 0); 174 SetTestDataPasswordBytes(item, value, value ? strlen(value) : 0);
168 } 175 }
169 176
170 OSStatus MockKeychain::ItemCopyAttributesAndData( 177 OSStatus MockKeychain::ItemCopyAttributesAndData(
171 SecKeychainItemRef itemRef, 178 SecKeychainItemRef itemRef,
172 SecKeychainAttributeInfo* info, 179 SecKeychainAttributeInfo* info,
173 SecItemClass* itemClass, 180 SecItemClass* itemClass,
174 SecKeychainAttributeList** attrList, 181 SecKeychainAttributeList** attrList,
175 UInt32* length, 182 UInt32* length,
176 void** outData) const { 183 void** outData) const {
177 DCHECK(itemRef); 184 DCHECK(itemRef);
178 unsigned int key = reinterpret_cast<unsigned int>(itemRef) - 1; 185 uintptr_t key = reinterpret_cast<uintptr_t>(itemRef) - 1;
179 if (keychain_attr_list_.find(key) == keychain_attr_list_.end()) 186 if (keychain_attr_list_.find(key) == keychain_attr_list_.end())
180 return errSecInvalidItemRef; 187 return errSecInvalidItemRef;
181 188
182 DCHECK(!itemClass); // itemClass not implemented in the Mock. 189 DCHECK(!itemClass); // itemClass not implemented in the Mock.
183 if (attrList) 190 if (attrList)
184 *attrList = &(keychain_attr_list_[key]); 191 *attrList = &(keychain_attr_list_[key]);
185 if (outData) { 192 if (outData) {
186 *outData = keychain_data_[key].data; 193 *outData = keychain_data_[key].data;
187 DCHECK(length); 194 DCHECK(length);
188 *length = keychain_data_[key].length; 195 *length = keychain_data_[key].length;
189 } 196 }
190 197
191 ++attribute_data_copy_count_; 198 ++attribute_data_copy_count_;
192 return noErr; 199 return noErr;
193 } 200 }
194 201
195 OSStatus MockKeychain::ItemModifyAttributesAndData( 202 OSStatus MockKeychain::ItemModifyAttributesAndData(
196 SecKeychainItemRef itemRef, 203 SecKeychainItemRef itemRef,
197 const SecKeychainAttributeList* attrList, 204 const SecKeychainAttributeList* attrList,
198 UInt32 length, 205 UInt32 length,
199 const void* data) const { 206 const void* data) const {
200 DCHECK(itemRef); 207 DCHECK(itemRef);
201 const char* fail_trigger = "fail_me"; 208 const char* fail_trigger = "fail_me";
202 if (length == strlen(fail_trigger) && 209 if (length == strlen(fail_trigger) &&
203 memcmp(data, fail_trigger, length) == 0) { 210 memcmp(data, fail_trigger, length) == 0) {
204 return errSecAuthFailed; 211 return errSecAuthFailed;
205 } 212 }
206 213
207 unsigned int key = reinterpret_cast<unsigned int>(itemRef) - 1; 214 uintptr_t key = reinterpret_cast<uintptr_t>(itemRef) - 1;
208 if (keychain_attr_list_.find(key) == keychain_attr_list_.end()) 215 if (keychain_attr_list_.find(key) == keychain_attr_list_.end())
209 return errSecInvalidItemRef; 216 return errSecInvalidItemRef;
210 217
211 MockKeychain* mutable_this = const_cast<MockKeychain*>(this); 218 MockKeychain* mutable_this = const_cast<MockKeychain*>(this);
212 if (attrList) { 219 if (attrList) {
213 for (UInt32 change_attr = 0; change_attr < attrList->count; ++change_attr) { 220 for (UInt32 change_attr = 0; change_attr < attrList->count; ++change_attr) {
214 if (attrList->attr[change_attr].tag == kSecCreatorItemAttr) { 221 if (attrList->attr[change_attr].tag == kSecCreatorItemAttr) {
215 void* data = attrList->attr[change_attr].data; 222 void* data = attrList->attr[change_attr].data;
216 mutable_this->SetTestDataCreator(key, *(static_cast<OSType*>(data))); 223 mutable_this->SetTestDataCreator(key, *(static_cast<OSType*>(data)));
217 } else { 224 } else {
218 NOTIMPLEMENTED(); 225 NOTIMPLEMENTED();
219 } 226 }
220 } 227 }
221 } 228 }
222 if (data) 229 if (data)
223 mutable_this->SetTestDataPasswordBytes(key, data, length); 230 mutable_this->SetTestDataPasswordBytes(key, data, length);
224 return noErr; 231 return noErr;
225 } 232 }
226 233
227 OSStatus MockKeychain::ItemFreeAttributesAndData( 234 OSStatus MockKeychain::ItemFreeAttributesAndData(
228 SecKeychainAttributeList* attrList, 235 SecKeychainAttributeList* attrList,
229 void* data) const { 236 void* data) const {
230 --attribute_data_copy_count_; 237 --attribute_data_copy_count_;
231 return noErr; 238 return noErr;
232 } 239 }
233 240
234 OSStatus MockKeychain::ItemDelete(SecKeychainItemRef itemRef) const { 241 OSStatus MockKeychain::ItemDelete(SecKeychainItemRef itemRef) const {
235 unsigned int key = reinterpret_cast<unsigned int>(itemRef) - 1; 242 uintptr_t key = reinterpret_cast<uintptr_t>(itemRef) - 1;
236 243
237 for (unsigned int i = 0; i < keychain_attr_list_[key].count; ++i) { 244 for (unsigned int i = 0; i < keychain_attr_list_[key].count; ++i) {
238 if (keychain_attr_list_[key].attr[i].data) 245 if (keychain_attr_list_[key].attr[i].data)
239 free(keychain_attr_list_[key].attr[i].data); 246 free(keychain_attr_list_[key].attr[i].data);
240 } 247 }
241 free(keychain_attr_list_[key].attr); 248 free(keychain_attr_list_[key].attr);
242 if (keychain_data_[key].data) 249 if (keychain_data_[key].data)
243 free(keychain_data_[key].data); 250 free(keychain_data_[key].data);
244 251
245 keychain_attr_list_.erase(key); 252 keychain_attr_list_.erase(key);
246 keychain_data_.erase(key); 253 keychain_data_.erase(key);
247 added_via_api_.erase(key); 254 added_via_api_.erase(key);
248 return noErr; 255 return noErr;
249 } 256 }
250 257
251 OSStatus MockKeychain::SearchCreateFromAttributes( 258 OSStatus MockKeychain::SearchCreateFromAttributes(
252 CFTypeRef keychainOrArray, 259 CFTypeRef keychainOrArray,
253 SecItemClass itemClass, 260 SecItemClass itemClass,
254 const SecKeychainAttributeList* attrList, 261 const SecKeychainAttributeList* attrList,
255 SecKeychainSearchRef* searchRef) const { 262 SecKeychainSearchRef* searchRef) const {
256 // Figure out which of our mock items matches, and set up the array we'll use 263 // Figure out which of our mock items matches, and set up the array we'll use
257 // to generate results out of SearchCopyNext. 264 // to generate results out of SearchCopyNext.
258 remaining_search_results_.clear(); 265 remaining_search_results_.clear();
259 for (std::map<unsigned int, SecKeychainAttributeList>::const_iterator it = 266 for (std::map<uintptr_t, SecKeychainAttributeList>::const_iterator it =
260 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) { 267 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) {
261 bool mock_item_matches = true; 268 bool mock_item_matches = true;
262 for (UInt32 search_attr = 0; search_attr < attrList->count; ++search_attr) { 269 for (UInt32 search_attr = 0; search_attr < attrList->count; ++search_attr) {
263 SecKeychainAttribute* mock_attribute = 270 SecKeychainAttribute* mock_attribute =
264 AttributeWithTag(it->second, attrList->attr[search_attr].tag); 271 AttributeWithTag(it->second, attrList->attr[search_attr].tag);
265 if (mock_attribute->length != attrList->attr[search_attr].length || 272 if (mock_attribute->length != attrList->attr[search_attr].length ||
266 memcmp(mock_attribute->data, attrList->attr[search_attr].data, 273 memcmp(mock_attribute->data, attrList->attr[search_attr].data,
267 attrList->attr[search_attr].length) != 0) { 274 attrList->attr[search_attr].length) != 0) {
268 mock_item_matches = false; 275 mock_item_matches = false;
269 break; 276 break;
(...skipping 14 matching lines...) Expand all
284 const char* serverName, 291 const char* serverName,
285 UInt32 securityDomainLength, 292 UInt32 securityDomainLength,
286 const char* securityDomain, 293 const char* securityDomain,
287 UInt32 accountNameLength, 294 UInt32 accountNameLength,
288 const char* accountName, 295 const char* accountName,
289 UInt32 pathLength, 296 UInt32 pathLength,
290 const char* path, 297 const char* path,
291 UInt16 port, 298 UInt16 port,
292 SecProtocolType protocol, 299 SecProtocolType protocol,
293 SecAuthenticationType authenticationType) const { 300 SecAuthenticationType authenticationType) const {
294 for (std::map<unsigned int, SecKeychainAttributeList>::const_iterator it = 301 for (std::map<uintptr_t, SecKeychainAttributeList>::const_iterator it =
295 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) { 302 keychain_attr_list_.begin(); it != keychain_attr_list_.end(); ++it) {
296 SecKeychainAttribute* attribute; 303 SecKeychainAttribute* attribute;
297 attribute = AttributeWithTag(it->second, kSecServerItemAttr); 304 attribute = AttributeWithTag(it->second, kSecServerItemAttr);
298 if ((attribute->length != serverNameLength) || 305 if ((attribute->length != serverNameLength) ||
299 (attribute->data == NULL && *serverName != '\0') || 306 (attribute->data == NULL && *serverName != '\0') ||
300 (attribute->data != NULL && *serverName == '\0') || 307 (attribute->data != NULL && *serverName == '\0') ||
301 strncmp(serverName, 308 strncmp(serverName,
302 (const char*) attribute->data, 309 (const char*) attribute->data,
303 serverNameLength) != 0) { 310 serverNameLength) != 0) {
304 continue; 311 continue;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 if (AlreadyContainsInternetPassword(serverNameLength, serverName, 385 if (AlreadyContainsInternetPassword(serverNameLength, serverName,
379 securityDomainLength, securityDomain, 386 securityDomainLength, securityDomain,
380 accountNameLength, accountName, 387 accountNameLength, accountName,
381 pathLength, path, 388 pathLength, path,
382 port, protocol, 389 port, protocol,
383 authenticationType)) { 390 authenticationType)) {
384 return errSecDuplicateItem; 391 return errSecDuplicateItem;
385 } 392 }
386 393
387 // Pick the next unused slot. 394 // Pick the next unused slot.
388 unsigned int key = next_item_key_++; 395 uintptr_t key = next_item_key_++;
389 396
390 // Initialize keychain data storage at the target location. 397 // Initialize keychain data storage at the target location.
391 InitializeKeychainData(key); 398 InitializeKeychainData(key);
392 399
393 MockKeychain* mutable_this = const_cast<MockKeychain*>(this); 400 MockKeychain* mutable_this = const_cast<MockKeychain*>(this);
394 mutable_this->SetTestDataBytes(key, kSecServerItemAttr, serverName, 401 mutable_this->SetTestDataBytes(key, kSecServerItemAttr, serverName,
395 serverNameLength); 402 serverNameLength);
396 mutable_this->SetTestDataBytes(key, kSecSecurityDomainItemAttr, 403 mutable_this->SetTestDataBytes(key, kSecSecurityDomainItemAttr,
397 securityDomain, securityDomainLength); 404 securityDomain, securityDomainLength);
398 mutable_this->SetTestDataBytes(key, kSecAccountItemAttr, accountName, 405 mutable_this->SetTestDataBytes(key, kSecAccountItemAttr, accountName,
(...skipping 18 matching lines...) Expand all
417 *itemRef = reinterpret_cast<SecKeychainItemRef>(key + 1); 424 *itemRef = reinterpret_cast<SecKeychainItemRef>(key + 1);
418 ++keychain_item_copy_count_; 425 ++keychain_item_copy_count_;
419 } 426 }
420 return noErr; 427 return noErr;
421 } 428 }
422 429
423 OSStatus MockKeychain::SearchCopyNext(SecKeychainSearchRef searchRef, 430 OSStatus MockKeychain::SearchCopyNext(SecKeychainSearchRef searchRef,
424 SecKeychainItemRef* itemRef) const { 431 SecKeychainItemRef* itemRef) const {
425 if (remaining_search_results_.empty()) 432 if (remaining_search_results_.empty())
426 return errSecItemNotFound; 433 return errSecItemNotFound;
427 unsigned int key = remaining_search_results_.front(); 434 uintptr_t key = remaining_search_results_.front();
428 remaining_search_results_.erase(remaining_search_results_.begin()); 435 remaining_search_results_.erase(remaining_search_results_.begin());
429 *itemRef = reinterpret_cast<SecKeychainItemRef>(key + 1); 436 *itemRef = reinterpret_cast<SecKeychainItemRef>(key + 1);
430 ++keychain_item_copy_count_; 437 ++keychain_item_copy_count_;
431 return noErr; 438 return noErr;
432 } 439 }
433 440
434 OSStatus MockKeychain::FindGenericPassword(CFTypeRef keychainOrArray, 441 OSStatus MockKeychain::FindGenericPassword(CFTypeRef keychainOrArray,
435 UInt32 serviceNameLength, 442 UInt32 serviceNameLength,
436 const char* serviceName, 443 const char* serviceName,
437 UInt32 accountNameLength, 444 UInt32 accountNameLength,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 add_generic_password_ = 483 add_generic_password_ =
477 std::string(const_cast<char*>(static_cast<const char*>(passwordData)), 484 std::string(const_cast<char*>(static_cast<const char*>(passwordData)),
478 passwordLength); 485 passwordLength);
479 return noErr; 486 return noErr;
480 } 487 }
481 488
482 void MockKeychain::Free(CFTypeRef ref) const { 489 void MockKeychain::Free(CFTypeRef ref) const {
483 if (!ref) 490 if (!ref)
484 return; 491 return;
485 492
486 if (reinterpret_cast<int>(ref) == kDummySearchRef) { 493 if (reinterpret_cast<uintptr_t>(ref) == kDummySearchRef) {
487 --search_copy_count_; 494 --search_copy_count_;
488 } else { 495 } else {
489 --keychain_item_copy_count_; 496 --keychain_item_copy_count_;
490 } 497 }
491 } 498 }
492 499
493 int MockKeychain::UnfreedSearchCount() const { 500 int MockKeychain::UnfreedSearchCount() const {
494 return search_copy_count_; 501 return search_copy_count_;
495 } 502 }
496 503
(...skipping 11 matching lines...) Expand all
508 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[*i], 515 SecKeychainAttribute* attribute = AttributeWithTag(keychain_attr_list_[*i],
509 kSecCreatorItemAttr); 516 kSecCreatorItemAttr);
510 OSType* data = static_cast<OSType*>(attribute->data); 517 OSType* data = static_cast<OSType*>(attribute->data);
511 if (*data == 0) 518 if (*data == 0)
512 return false; 519 return false;
513 } 520 }
514 return true; 521 return true;
515 } 522 }
516 523
517 void MockKeychain::AddTestItem(const KeychainTestData& item_data) { 524 void MockKeychain::AddTestItem(const KeychainTestData& item_data) {
518 unsigned int key = next_item_key_++; 525 uintptr_t key = next_item_key_++;
519 526
520 InitializeKeychainData(key); 527 InitializeKeychainData(key);
521 SetTestDataAuthType(key, item_data.auth_type); 528 SetTestDataAuthType(key, item_data.auth_type);
522 SetTestDataString(key, kSecServerItemAttr, item_data.server); 529 SetTestDataString(key, kSecServerItemAttr, item_data.server);
523 SetTestDataProtocol(key, item_data.protocol); 530 SetTestDataProtocol(key, item_data.protocol);
524 SetTestDataString(key, kSecPathItemAttr, item_data.path); 531 SetTestDataString(key, kSecPathItemAttr, item_data.path);
525 SetTestDataPort(key, item_data.port); 532 SetTestDataPort(key, item_data.port);
526 SetTestDataString(key, kSecSecurityDomainItemAttr, 533 SetTestDataString(key, kSecSecurityDomainItemAttr,
527 item_data.security_domain); 534 item_data.security_domain);
528 SetTestDataString(key, kSecCreationDateItemAttr, item_data.creation_date); 535 SetTestDataString(key, kSecCreationDateItemAttr, item_data.creation_date);
529 SetTestDataString(key, kSecAccountItemAttr, item_data.username); 536 SetTestDataString(key, kSecAccountItemAttr, item_data.username);
530 SetTestDataPasswordString(key, item_data.password); 537 SetTestDataPasswordString(key, item_data.password);
531 SetTestDataNegativeItem(key, item_data.negative_item); 538 SetTestDataNegativeItem(key, item_data.negative_item);
532 } 539 }
533 540
534 } // namespace crypto 541 } // namespace crypto
OLDNEW
« crypto/mock_keychain_mac.h ('K') | « crypto/mock_keychain_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698