]> git.saurik.com Git - apple/security.git/blob - SecurityTests/clxutils/threadTest/kcStatus.cpp
Security-57031.10.10.tar.gz
[apple/security.git] / SecurityTests / clxutils / threadTest / kcStatus.cpp
1 /*
2 * kcStatus.cpp
3 *
4 * Open default keychain; get status to actually instatiate the thing; release.
5 */
6 #include "testParams.h"
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <Security/Security.h>
11
12 /* for malloc debug */
13 #define DO_PAUSE 0
14
15 /* for tracking down KC crasher */
16 #define ABORT_ON_ERROR 1
17
18 int kcStatusInit(TestParams *testParams)
19 {
20 return 0;
21 }
22
23
24 int kcStatus(TestParams *testParams)
25 {
26 OSStatus ortn;
27 SecKeychainRef kcRef;
28 unsigned loopNum;
29 SecKeychainStatus kcStatus;
30
31 for(loopNum=0; loopNum<testParams->numLoops; loopNum++) {
32 if(testParams->verbose) {
33 printf("kcStatus loop %d\n", loopNum);
34 }
35 else if(!testParams->quiet) {
36 printChar(testParams->progressChar);
37 }
38
39 ortn = SecKeychainCopyDefault(&kcRef);
40 if(ortn) {
41 cssmPerror("SecKeychainCopyDefault", ortn);
42 if(ABORT_ON_ERROR) {
43 exit(1);
44 }
45 else {
46 return (int)ortn;
47 }
48 }
49 ortn = SecKeychainGetStatus(kcRef, &kcStatus);
50 if(ortn) {
51 cssmPerror("SecKeychainGetStatus", ortn);
52 printf("***HEY! A keychain obtained via SecKeychainCopyDefault() resulted\n");
53 printf(" in a failed SecKeychainGetStatus()! You really need to fix this!\n");
54 printf("kcRef %p\n", kcRef);
55 char path[300];
56 UInt32 len = 300;
57 ortn = SecKeychainGetPath(kcRef, &len, path);
58 if(ortn) {
59 cssmPerror("SecKeychainGetPath", ortn);
60 }
61 else {
62 printf("kc path %s\n", path);
63 }
64 if(ABORT_ON_ERROR) {
65 exit(1);
66 }
67 else {
68 return (int)ortn;
69 }
70 }
71
72 CFRelease(kcRef);
73
74 #if DO_PAUSE
75 fpurge(stdin);
76 printf("Hit CR to continue: ");
77 getchar();
78 #endif
79 } /* outer loop */
80 #if HOLD_SEARCH_LIST
81 CFRelease(sl);
82 #endif
83 return 0;
84 }