+++ /dev/null
-/*
- * Copyright (c) 2000-2004 Apple Computer, Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-
-//
-// Authorization.cpp
-//
-// This file is the unified implementation of the Authorization and AuthSession APIs.
-//
-#include <stdint.h>
-#include <Security/AuthSession.h>
-#include <Security/AuthorizationPriv.h>
-#include <security_utilities/ccaudit.h>
-#include <security_cdsa_utilities/cssmbridge.h>
-#include <Security/SecBase.h>
-#include <security_utilities/logging.h>
-
-//
-// This no longer talks to securityd; it is a kernel function.
-//
-OSStatus SessionGetInfo(SecuritySessionId requestedSession,
- SecuritySessionId *sessionId,
- SessionAttributeBits *attributes)
-{
- BEGIN_API
- CommonCriteria::AuditInfo session;
- if (requestedSession == callerSecuritySession)
- session.get();
- else
- session.get(requestedSession);
- if (sessionId)
- *sessionId = session.sessionId();
- if (attributes)
- *attributes = (SessionAttributeBits)session.flags();
- END_API(CSSM)
-}
-
-
-//
-// Create a new session.
-// This no longer talks to securityd; it is a kernel function.
-// Securityd will pick up the new session when we next talk to it.
-//
-OSStatus SessionCreate(SessionCreationFlags flags,
- SessionAttributeBits attributes)
-{
- BEGIN_API
-
- // we don't support the session creation flags anymore
- if (flags)
- Syslog::warning("SessionCreate flags=0x%lx unsupported (ignored)", (unsigned long)flags);
- CommonCriteria::AuditInfo session;
- session.create(attributes);
-
- // retrieve the (new) session id and set it into the process environment
- session.get();
- char idString[80];
- snprintf(idString, sizeof(idString), "%x", session.sessionId());
- setenv("SECURITYSESSIONID", idString, 1);
-
- END_API(CSSM)
-}
-
-
-//
-// Get and set the distinguished uid (optionally) associated with the session.
-//
-OSStatus SessionSetDistinguishedUser(SecuritySessionId session, uid_t user)
-{
- BEGIN_API
- CommonCriteria::AuditInfo session;
- session.get();
- session.ai_auid = user;
- session.set();
- END_API(CSSM)
-}
-
-
-OSStatus SessionGetDistinguishedUser(SecuritySessionId session, uid_t *user)
-{
- BEGIN_API
- CommonCriteria::AuditInfo session;
- session.get();
- Required(user) = session.uid();
- END_API(CSSM)
-}
-
-//OSStatus _SessionSetUserPreferences(SecuritySessionId session);
-//
-//static
-//void SessionUserPreferencesChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
-//{
-//#warning "The cast will loose some information"
-// _SessionSetUserPreferences((SecuritySessionId)uintptr_t(observer));
-//}
-//
-//OSStatus _SessionSetUserPreferences(SecuritySessionId session)
-//{
-// BEGIN_API
-// CFStringRef appleLanguagesStr = CFSTR("AppleLanguages");
-// CFStringRef controlTintStr = CFSTR("AppleAquaColorVariant");
-// CFStringRef keyboardUIModeStr = CFSTR("AppleKeyboardUIMode");
-// CFStringRef textDirectionStr = CFSTR("AppleTextDirection");
-// CFStringRef hitoolboxAppIDStr = CFSTR("com.apple.HIToolbox");
-// CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-//
-// CFRef<CFMutableDictionaryRef> userPrefsDict(CFDictionaryCreateMutable(NULL, 10, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
-// CFRef<CFMutableDictionaryRef> globalPrefsDict(CFDictionaryCreateMutable(NULL, 10, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
-//
-// if (!userPrefsDict || !globalPrefsDict)
-// return errSessionValueNotSet;
-//
-// CFRef<CFArrayRef> appleLanguagesArray(static_cast<CFArrayRef>(CFPreferencesCopyAppValue(appleLanguagesStr, kCFPreferencesCurrentApplication)));
-// if (appleLanguagesArray)
-// CFDictionarySetValue(globalPrefsDict, appleLanguagesStr, appleLanguagesArray);
-//
-// CFRef<CFNumberRef> controlTintNumber(static_cast<CFNumberRef>(CFPreferencesCopyAppValue(controlTintStr, kCFPreferencesCurrentApplication)));
-// if (controlTintNumber)
-// CFDictionarySetValue(globalPrefsDict, controlTintStr, controlTintNumber);
-//
-// CFRef<CFNumberRef> keyboardUIModeNumber(static_cast<CFNumberRef>(CFPreferencesCopyAppValue(keyboardUIModeStr, kCFPreferencesCurrentApplication)));
-// if (keyboardUIModeNumber)
-// CFDictionarySetValue(globalPrefsDict, keyboardUIModeStr, keyboardUIModeNumber);
-//
-// CFRef<CFNumberRef> textDirectionNumber(static_cast<CFNumberRef>(CFPreferencesCopyAppValue(textDirectionStr, kCFPreferencesCurrentApplication)));
-// if (textDirectionNumber)
-// CFDictionarySetValue(globalPrefsDict, textDirectionStr, textDirectionNumber);
-//
-// if (CFDictionaryGetCount(globalPrefsDict) > 0)
-// CFDictionarySetValue(userPrefsDict, kCFPreferencesAnyApplication, globalPrefsDict);
-//
-// CFPreferencesSynchronize(hitoolboxAppIDStr, kCFPreferencesCurrentUser,
-// kCFPreferencesCurrentHost);
-// CFRef<CFDictionaryRef> hitoolboxPrefsDict(static_cast<CFDictionaryRef>(CFPreferencesCopyMultiple(NULL, hitoolboxAppIDStr, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost)));
-// if (hitoolboxPrefsDict) {
-// CFDictionarySetValue(userPrefsDict, hitoolboxAppIDStr, hitoolboxPrefsDict);
-// CFNotificationCenterPostNotification(center, CFSTR("com.apple.securityagent.InputPrefsChanged"), CFSTR("com.apple.loginwindow"), hitoolboxPrefsDict, true);
-// }
-//
-// CFRef<CFDataRef> userPrefsData(CFPropertyListCreateXMLData(NULL, userPrefsDict));
-// if (!userPrefsData)
-// return errSessionValueNotSet;
-// server().setSessionUserPrefs(session, (uint32_t)CFDataGetLength(userPrefsData), CFDataGetBytePtr(userPrefsData));
-//
-// END_API(CSSM)
-//}
-
-OSStatus SessionSetUserPreferences(SecuritySessionId session)
-{
-// OSStatus status = _SessionSetUserPreferences(session);
-// if (errSecSuccess == status) {
-// CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-// // We've succeeded in setting up a static set of prefs, now set up
-// CFNotificationCenterAddObserver(center, (void*)session, SessionUserPreferencesChanged, CFSTR("com.apple.Carbon.TISNotifySelectedKeyboardInputSourceChanged"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
-// CFNotificationCenterAddObserver(center, (void*)session, SessionUserPreferencesChanged, CFSTR("com.apple.Carbon.TISNotifyEnabledKeyboardInputSourcesChanged"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
-// }
-// return status;
- return errSecSuccess;
-}