1/*
2 * Copyright (c) 1999-2001,2003-2004 Apple Computer, Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
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
11 * file.
12 *
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.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 *
23 * cssmspi.h -- Service Provider Interface for CSSM Modules
24 */
25
26#ifndef _CSSMSPI_H_
27#define _CSSMSPI_H_  1
28
29#include <Security/cssmtype.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35typedef CSSM_RETURN (CSSMAPI *CSSM_SPI_ModuleEventHandler)
36    (const CSSM_GUID *ModuleGuid,
37     void *CssmNotifyCallbackCtx,
38     uint32 SubserviceId,
39     CSSM_SERVICE_TYPE ServiceType,
40     CSSM_MODULE_EVENT EventType);
41
42typedef uint32 CSSM_CONTEXT_EVENT;
43enum {
44    CSSM_CONTEXT_EVENT_CREATE = 1,
45    CSSM_CONTEXT_EVENT_DELETE = 2,
46    CSSM_CONTEXT_EVENT_UPDATE = 3
47};
48
49typedef struct cssm_module_funcs {
50    CSSM_SERVICE_TYPE ServiceType;
51    uint32 NumberOfServiceFuncs;
52    const CSSM_PROC_ADDR *ServiceFuncs;
53} CSSM_MODULE_FUNCS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_MODULE_FUNCS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
54
55typedef void *(CSSMAPI *CSSM_UPCALLS_MALLOC)
56    (CSSM_HANDLE AddInHandle,
57     size_t size) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
58
59typedef void (CSSMAPI *CSSM_UPCALLS_FREE)
60    (CSSM_HANDLE AddInHandle,
61     void *memblock) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
62
63typedef void *(CSSMAPI *CSSM_UPCALLS_REALLOC)
64    (CSSM_HANDLE AddInHandle,
65     void *memblock,
66     size_t size) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
67
68typedef void *(CSSMAPI *CSSM_UPCALLS_CALLOC)
69    (CSSM_HANDLE AddInHandle,
70     size_t num,
71     size_t size) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
72
73typedef struct cssm_upcalls {
74    CSSM_UPCALLS_MALLOC malloc_func;
75    CSSM_UPCALLS_FREE free_func;
76    CSSM_UPCALLS_REALLOC realloc_func;
77    CSSM_UPCALLS_CALLOC calloc_func;
78    CSSM_RETURN (CSSMAPI *CcToHandle_func)
79        (CSSM_CC_HANDLE Cc,
80         CSSM_MODULE_HANDLE_PTR ModuleHandle);
81    CSSM_RETURN (CSSMAPI *GetModuleInfo_func)
82        (CSSM_MODULE_HANDLE Module,
83         CSSM_GUID_PTR Guid,
84         CSSM_VERSION_PTR Version,
85         uint32 *SubServiceId,
86         CSSM_SERVICE_TYPE *SubServiceType,
87         CSSM_ATTACH_FLAGS *AttachFlags,
88         CSSM_KEY_HIERARCHY *KeyHierarchy,
89         CSSM_API_MEMORY_FUNCS_PTR AttachedMemFuncs,
90         CSSM_FUNC_NAME_ADDR_PTR FunctionTable,
91         uint32 NumFunctions);
92} CSSM_UPCALLS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_UPCALLS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
93
94CSSM_RETURN CSSMSPI
95CSSM_SPI_ModuleLoad (const CSSM_GUID *CssmGuid,
96                     const CSSM_GUID *ModuleGuid,
97                     CSSM_SPI_ModuleEventHandler CssmNotifyCallback,
98                     void *CssmNotifyCallbackCtx)
99					DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
100
101CSSM_RETURN CSSMSPI
102CSSM_SPI_ModuleUnload (const CSSM_GUID *CssmGuid,
103                       const CSSM_GUID *ModuleGuid,
104                       CSSM_SPI_ModuleEventHandler CssmNotifyCallback,
105                       void *CssmNotifyCallbackCtx)
106					DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
107
108CSSM_RETURN CSSMSPI
109CSSM_SPI_ModuleAttach (const CSSM_GUID *ModuleGuid,
110                       const CSSM_VERSION *Version,
111                       uint32 SubserviceID,
112                       CSSM_SERVICE_TYPE SubServiceType,
113                       CSSM_ATTACH_FLAGS AttachFlags,
114                       CSSM_MODULE_HANDLE ModuleHandle,
115                       CSSM_KEY_HIERARCHY KeyHierarchy,
116                       const CSSM_GUID *CssmGuid,
117                       const CSSM_GUID *ModuleManagerGuid,
118                       const CSSM_GUID *CallerGuid,
119                       const CSSM_UPCALLS *Upcalls,
120                       CSSM_MODULE_FUNCS_PTR *FuncTbl)
121					DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
122
123CSSM_RETURN CSSMSPI
124CSSM_SPI_ModuleDetach (CSSM_MODULE_HANDLE ModuleHandle)
125	DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
126
127
128#ifdef __cplusplus
129}
130#endif
131
132#endif /* _CSSMSPI_H_ */
133