END_SECAPI
}
-static ModuleNexus<Mutex> gSecReturnedKeyCSPsMutex;
-static std::set<CssmClient::CSP> gSecReturnedKeychainCSPs;
+static ModuleNexus<Mutex> gSecReturnedKeychainCSPsMutex;
+static ModuleNexus<std::set<CssmClient::CSP>> gSecReturnedKeychainCSPs;
OSStatus
SecKeychainGetCSPHandle(SecKeychainRef keychainRef, CSSM_CSP_HANDLE *cspHandle)
// Keep a global pointer to it to force the CSP to stay live forever.
CssmClient::CSP returnedKeychainCSP = keychain->csp();
{
- StLock<Mutex> _(gSecReturnedKeyCSPsMutex());
- gSecReturnedKeychainCSPs.insert(returnedKeychainCSP);
+ StLock<Mutex> _(gSecReturnedKeychainCSPsMutex());
+ gSecReturnedKeychainCSPs().insert(returnedKeychainCSP);
}
*cspHandle = returnedKeychainCSP->handle();
AuthorizationItem myItems = {"com.apple.ctk.pair", 0, NULL, 0};
AuthorizationRights myRights = {1, &myItems};
- AuthorizationRights *authorizedRights = NULL;
char pathName[PATH_MAX];
UInt32 pathLength = PATH_MAX;
AuthorizationEnvironment environment = {3, envItems};
AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights;
- result = AuthorizationCopyRights(authorizationRef, &myRights, &environment, flags, &authorizedRights);
- if (authorizedRights)
- AuthorizationFreeItemSet(authorizedRights);
+ result = AuthorizationCopyRights(authorizationRef, &myRights, &environment, flags, NULL);
+ secnotice("SecKeychain", "Authorization result: %d", (int)result);
if (result == errAuthorizationSuccess) {
AuthorizationItemSet *items;
result = AuthorizationCopyInfo(authorizationRef, kAuthorizationEnvironmentPassword, &items);
+ secnotice("SecKeychain", "Items copy result: %d", (int)result);
if (result == errAuthorizationSuccess) {
+ secnotice("SecKeychain", "Items count: %d", items->count);
if (items->count > 0) {
pwd = CFStringCreateWithCString(kCFAllocatorDefault, (const char *)items->items[0].value, kCFStringEncodingUTF8);
+ if (pwd) {
+ secnotice("SecKeychain", "Got kcpass");
+ }
}
AuthorizationFreeItemSet(items);
}