static void rb_get_keychain_settings(VALUE self, SecKeychainSettings *settings){ SecKeychainRef keychain=NULL; Data_Get_Struct(self, struct OpaqueSecKeychainRef, keychain); settings->version = SEC_KEYCHAIN_SETTINGS_VERS1; OSStatus result = SecKeychainCopySettings(keychain, settings); CheckOSStatusOrRaise(result); }
static int do_keychain_show_info(const char *keychainName) { SecKeychainRef keychain = NULL; SecKeychainSettings keychainSettings = { SEC_KEYCHAIN_SETTINGS_VERS1 }; OSStatus result; if (keychainName) { keychain = keychain_open(keychainName); if (!keychain) { result = 1; goto loser; } } result = SecKeychainCopySettings(keychain, &keychainSettings); if (result) { sec_error("SecKeychainCopySettings %s: %s", keychainName ? keychainName : "<NULL>", sec_errstr(result)); goto loser; } fprintf(stderr,"Keychain \"%s\"%s%s", keychainName ? keychainName : "<NULL>", keychainSettings.lockOnSleep ? " lock-on-sleep" : "", keychainSettings.useLockInterval ? " use-lock-interval" : ""); if (keychainSettings.lockInterval == INT_MAX) fprintf(stderr," no-timeout\n"); else fprintf(stderr," timeout=%ds\n", (int)keychainSettings.lockInterval); loser: if (keychain) CFRelease(keychain); return result; }