#include "Globals.h"
#include "KCExceptions.h"
namespace Security {
namespace KeychainCore {
using namespace CssmClient;
ModuleNexus<Globals> globals;
bool gServerMode;
#pragma mark ΡΡΡΡ Constructor/Destructor ΡΡΡΡ
Globals::Globals() :
mUI(true), mIntegrityProtection(false)
{
CFTypeRef integrity = (CFNumberRef)CFPreferencesCopyValue(CFSTR("KeychainIntegrity"), CFSTR("com.apple.security"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
if (integrity && CFGetTypeID(integrity) == CFBooleanGetTypeID()) {
mIntegrityProtection = CFBooleanGetValue((CFBooleanRef)integrity);
CFRelease(integrity);
} else {
mIntegrityProtection = true;
}
}
const AccessCredentials * Globals::keychainCredentials()
{
return (mUI ? mACLFactory.unlockCred() : mACLFactory.cancelCred());
}
const AccessCredentials * Globals::smartcardCredentials()
{
return (mUI ? mACLFactory.promptedPINCred() : mACLFactory.cancelCred());
}
const AccessCredentials * Globals::itemCredentials()
{
return (mUI ? mACLFactory.promptCred() : mACLFactory.nullCred());
}
const AccessCredentials * Globals::smartcardItemCredentials()
{
return (mUI ? mACLFactory.promptedPINItemCred() : mACLFactory.cancelCred());
}
} }
extern "C" bool GetServerMode()
{
return Security::KeychainCore::gServerMode;
}