ss_types.defs   [plain text]


//
// Copyright (c) 2004,2006-2007 Apple 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@
//
// ucsp.defs - Mach RPC interface between SecurityServer and its clients
//
#include <mach/std_types.defs>
#include <mach/mach_types.defs>

import <securityd_client/ss_types.h>;


//
// Data types
//
type Data = array [] of char;

type Pointer = uint32_t;
type BasePointer = uint32_t;

type XMLBlob = Data;
type XMLBlobOut = Data;

type KeyBlob = Data
	ctype: Pointer;

type IPCHandle = uint32_t;
type IPCDbHandle = IPCHandle;
type IPCKeyHandle = IPCHandle;
type IPCRecordHandle = IPCHandle;
type IPCSearchHandle = IPCHandle;
type IPCGenericHandle = IPCHandle;

type DbHandle = uint32_t;
type DbBlob = Data
	ctype: Pointer;

type CssmKeyBlob = Data
	ctype: CssmKeyPtr;
type CssmKeyPtr = BasePointer;

type AclEntryPrototypeBlob = Data
	ctype: AclEntryPrototypePtr;
type AclEntryPrototypePtr = BasePointer;

type AclEntryInfoBlob = Data
	ctype: AclEntryInfoPtr;
type AclEntryInfoPtr = BasePointer;

type AclEntryInputBlob = Data
	ctype: AclEntryInputPtr;
type AclEntryInputPtr = BasePointer;

type AclOwnerPrototypeBlob = Data
	ctype: AclOwnerPrototypePtr;
type AclOwnerPrototypePtr = BasePointer;

type AccessCredentialsBlob = Data
	ctype: AccessCredentialsPtr;
type AccessCredentialsPtr = BasePointer;

type DLDbIdentBlob = Data
    ctype: DLDbIdentPtr;
type DLDbIdentPtr = BasePointer;

type ParamInputBlob = Data
	ctype: ParamInputPtr;
type ParamInputPtr = BasePointer;

type CssmDbRecordAttributeDataBlob = Data
	ctype: CssmDbRecordAttributeDataPtr;
type CssmDbRecordAttributeDataPtr = BasePointer;

type CssmQueryBlob = Data
	ctype: CssmQueryPtr;
type CssmQueryPtr = BasePointer;

type CssmSubserviceUidBlob = Data
	ctype: CssmSubserviceUidPtr;
type CssmSubserviceUidPtr = BasePointer;

type CssmDeriveDataBlob = Data
	ctype: CssmDeriveDataPtr;
type CssmDeriveDataPtr = BasePointer;

type CSSM_DBINFOBlob = Data
	ctype: CSSM_DBINFOPtr;
type CSSM_DBINFOPtr = BasePointer;

type CSSM_DB_SCHEMA_ATTRIBUTE_INFOBlob = Data
	ctype: CSSM_DB_SCHEMA_ATTRIBUTE_INFOPtr;
type CSSM_DB_SCHEMA_ATTRIBUTE_INFOPtr = BasePointer;

type CSSM_DB_SCHEMA_INDEX_INFOBlob = Data
	ctype: CSSM_DB_SCHEMA_INDEX_INFOPtr;
type CSSM_DB_SCHEMA_INDEX_INFOPtr = BasePointer;

type CSSM_NAME_LISTBlob = Data
	ctype: CSSM_NAME_LISTPtr;
type CSSM_NAME_LISTPtr = BasePointer;

type CssmNetAddressBlob = Data
	ctype: CssmNetAddressPtr;
type CssmNetAddressPtr = BasePointer;

type Guid = struct[4] of char
	ctype: CSSM_GUID;

type SetupInfo = struct[8] of uint8_t	// don't interpret!
	ctype: ClientSetupInfo;

type Context = struct [9] of uint8_t
	ctype: CSSM_CONTEXT
	intran: Context inTrans(CSSM_CONTEXT);
type ContextAttributes = array [] of char
	cservertype: ContextAttributesPointer;
	
type CssmKeyHeader = struct [23] of uint8_t;

type CssmKey = struct [23+2] of uint8_t
	ctype: CSSM_KEY
	intran: CssmKey inTrans(CSSM_KEY)
	outtran: CSSM_KEY outTrans(CssmKey);
    
type CSSM_KEY_SIZE = struct [2] of uint32_t
    ctype: CSSM_KEY_SIZE;

type DBParameters = struct [2] of uint32_t;

type CSSM_CSP_OPERATIONAL_STATISTICS = struct [10] of uint32_t;
type CSPOperationalStatistics = CSSM_CSP_OPERATIONAL_STATISTICS;

type AuthorizationBlob = struct [8] of uint8_t;					// 8 opaque bytes
type AuthorizationExternalForm = struct [32] of uint8_t;		// 32 opaque bytes

type CssmString = c_string[*:64+4];
type AuthorizationString = c_string[*:1024];
type CSSM_RETURN = int32_t;
type OSStatus = int32_t;
type CSSM_ALGORITHMS = uint32_t;
type CSSM_ACL_EDIT_MODE = uint32_t;
type CSSM_ACL_HANDLE = uint32_t;
type AclKind = uint32_t;
type uint32 = uint32_t;
type SecuritySessionId = uint32_t;
type SessionAttributeBits = uint32_t;
type SessionCreationFlags = uint32_t;
type uid_t = uint32_t;

type KeyHandle = uint32_t;
type RecordHandle = uint32_t;
type SearchHandle = uint32_t;
type GenericHandle = uint32_t;
type CSSM_DB_RECORDTYPE = uint32_t;
type CSSM_DB_ACCESS_TYPE = uint32_t;
type CSSM_DB_MODIFY_MODE = uint32_t;

type FilePath = c_string[*:1024];		// PATH_MAX
type FilePathOut = c_string[*:1024];	// PATH_MAX
type RelationName = c_string[*:2048];	//@@@ a bit big, no?
type HashData = array[*:64] of char;
type HashDataOut = array [64] of char;	// returning hash data, max. 512 bits

type pid_t = unsigned32;

type SecGuestRef = unsigned32;
type GuestChain = array [] of SecGuestRef;


//
// Common argument pattern macros.
// Watch for matching macros on the sending and receiving code sides.
//
#define IN_CONTEXT	in context: Context; in contextBase: BasePointer; in attrs: ContextAttributes
#define IN_BLOB(name,type)	in name: type##Blob; in name##Base: type##Ptr
#define OUT_BLOB(name,type)	out name: type##Blob; out name##Base: type##Ptr