]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_keychain/lib/Globals.cpp
Security-58286.70.7.tar.gz
[apple/security.git] / OSX / libsecurity_keychain / lib / Globals.cpp
index f8d1e70e9e67d511270daa5889ac16e6997203af..153877d938acf5f7d0c5f8fe7935b95a4b64e05d 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "Globals.h"
 #include "KCExceptions.h"
+#include <utilities/SecCFRelease.h>
 
 
 namespace Security {
@@ -38,8 +39,18 @@ bool gServerMode;
 #pragma mark ÑÑÑÑ Constructor/Destructor ÑÑÑÑ
 
 Globals::Globals() :
-mUI(true)
+mUI(true), mIntegrityProtection(false)
 {
+    //sudo defaults write /Library/Preferences/com.apple.security KeychainIntegrity -bool YES
+    CFTypeRef integrity = (CFNumberRef)CFPreferencesCopyValue(CFSTR("KeychainIntegrity"), CFSTR("com.apple.security"), kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+
+    if (integrity && CFGetTypeID(integrity) == CFBooleanGetTypeID()) {
+        mIntegrityProtection = CFBooleanGetValue((CFBooleanRef)integrity);
+    } else {
+        // preference not set: defaulting to true
+        mIntegrityProtection = true;
+    }
+    CFReleaseSafe(integrity);
 }
 
 const AccessCredentials * Globals::keychainCredentials()