Mercurial > projects > dstep
diff dstep/security/Authorization.d @ 11:07194b026fa4
Added bindings to a couple of frameworks, new license + some other things
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sat, 01 Aug 2009 15:03:28 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/security/Authorization.d Sat Aug 01 15:03:28 2009 +0200 @@ -0,0 +1,97 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Jul 22, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.security.Authorization; + +version (Tango) + import tango.stdc.stdio; + +else + import std.c.stdio; + +import dstep.coreservices.carboncore.MacTypes; + +struct AuthorizationOpaqueRef; + +alias uint AuthorizationFlags; +alias AuthorizationOpaqueRef* AuthorizationRef; +alias char* AuthorizationString; +alias AuthorizationItemSet AuthorizationRights; +alias AuthorizationItemSet AuthorizationEnvironment; + +enum +{ + errAuthorizationSuccess = 0, + errAuthorizationInvalidSet = -60001, + errAuthorizationInvalidRef = -60002, + errAuthorizationInvalidTag = -60003, + errAuthorizationInvalidPointer = -60004, + errAuthorizationDenied = -60005, + errAuthorizationCanceled = -60006, + errAuthorizationInteractionNotAllowed = -60007, + errAuthorizationInternal = -60008, + errAuthorizationExternalizeNotAllowed = -60009, + errAuthorizationInternalizeNotAllowed = -60010, + errAuthorizationInvalidFlags = -60011, + errAuthorizationToolExecuteFailure = -60031, + errAuthorizationToolEnvironmentError = -60032, + errAuthorizationBadAddress = -60033 +} + +enum +{ + kAuthorizationFlagDefaults = 0, + kAuthorizationFlagInteractionAllowed = (1 << 0), + kAuthorizationFlagExtendRights = (1 << 1), + kAuthorizationFlagPartialRights = (1 << 2), + kAuthorizationFlagDestroyRights = (1 << 3), + kAuthorizationFlagPreAuthorize = (1 << 4), + kAuthorizationFlagNoData = (1 << 20) +} + +enum +{ + kAuthorizationFlagCanNotPreAuthorize = (1 << 0) +} + +enum +{ + kAuthorizationExternalFormLength = 32 +} + +struct AuthorizationItem +{ + char* name; + uint valueLength; + void* value; + uint flags; +} + + +struct AuthorizationItemSet +{ + uint count; + AuthorizationItem* items; +} + + +struct AuthorizationExternalForm +{ + char* bytes; +} + +extern (C) +{ + int AuthorizationCreate (AuthorizationRights* rights, AuthorizationEnvironment* environment, uint flags, AuthorizationRef* authorization); + int AuthorizationFree (AuthorizationRef authorization, uint flags); + int AuthorizationCopyRights (AuthorizationRef authorization, AuthorizationRights* rights, AuthorizationEnvironment* environment, uint flags, AuthorizationRights** authorizedRights); + int AuthorizationCopyInfo (AuthorizationRef authorization, char* tag, AuthorizationItemSet** info); + int AuthorizationMakeExternalForm (AuthorizationRef authorization, AuthorizationExternalForm* extForm); + int AuthorizationCreateFromExternalForm (AuthorizationExternalForm* extForm, AuthorizationRef* authorization); + int AuthorizationFreeItemSet (AuthorizationItemSet* set); + int AuthorizationExecuteWithPrivileges (AuthorizationRef authorization, char* pathToTool, uint options, char** arguments, FILE** communicationsPipe); + int AuthorizationCopyPrivilegedReference (AuthorizationRef* authorization, uint flags); +} \ No newline at end of file