2 * Copyright (c) 2000-2004,2011-2014 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
28 // This file is the unified implementation of the Authorization and AuthSession APIs.
31 #include <Security/AuthSession.h>
32 #include <Security/AuthorizationPriv.h>
33 #include <security_utilities/ccaudit.h>
34 #include <security_cdsa_utilities/cssmbridge.h>
35 #include <Security/SecBase.h>
36 #include <security_utilities/logging.h>
37 #include "LegacyAPICounts.h"
40 // This no longer talks to securityd; it is a kernel function.
42 OSStatus
SessionGetInfo(SecuritySessionId requestedSession
,
43 SecuritySessionId
*sessionId
,
44 SessionAttributeBits
*attributes
)
47 CommonCriteria::AuditInfo session
;
48 if (requestedSession
== callerSecuritySession
)
51 session
.get(requestedSession
);
53 *sessionId
= session
.sessionId();
55 *attributes
= (SessionAttributeBits
)session
.flags();
61 // Create a new session.
62 // This no longer talks to securityd; it is a kernel function.
63 // Securityd will pick up the new session when we next talk to it.
65 OSStatus
SessionCreate(SessionCreationFlags flags
,
66 SessionAttributeBits attributes
)
70 // we don't support the session creation flags anymore
72 Syslog::warning("SessionCreate flags=0x%lx unsupported (ignored)", (unsigned long)flags
);
73 CommonCriteria::AuditInfo session
;
74 session
.create(attributes
);
76 // retrieve the (new) session id and set it into the process environment
79 snprintf(idString
, sizeof(idString
), "%x", session
.sessionId());
80 setenv("SECURITYSESSIONID", idString
, 1);
87 // Get and set the distinguished uid (optionally) associated with the session.
89 OSStatus
SessionSetDistinguishedUser(SecuritySessionId session
, uid_t user
)
92 CommonCriteria::AuditInfo session
;
94 session
.ai_auid
= user
;
100 OSStatus
SessionGetDistinguishedUser(SecuritySessionId session
, uid_t
*user
)
103 CommonCriteria::AuditInfo session
;
105 Required(user
) = session
.uid();
109 OSStatus
SessionSetUserPreferences(SecuritySessionId session
)
111 return errSecSuccess
;