]> git.saurik.com Git - apple/security.git/blob - cdsa/cdsa/cssmkrspi.h
ba86477ce08f549717a82e984d717633647ee7d4
[apple/security.git] / cdsa / cdsa / cssmkrspi.h
1 /*
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 /*
20 File: cssmkrspi.h
21
22 Contains: Service Provider Interface for Key Recovery Modules
23
24 Copyright: (c) 1999-2000 Apple Computer, Inc., all rights reserved.
25 */
26
27 #ifndef _CSSMKRSPI_H_
28 #define _CSSMKRSPI_H_ 1
29
30 #include <Security/cssmtype.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 /* Data types for Key Recovery SPI */
37
38 typedef struct cssm_spi_kr_funcs {
39 CSSM_RETURN (CSSMKRI *RegistrationRequest)
40 (CSSM_KRSP_HANDLE KRSPHandle,
41 CSSM_CC_HANDLE KRRegistrationContextHandle,
42 const CSSM_CONTEXT *KRRegistrationContext,
43 const CSSM_DATA *KRInData,
44 const CSSM_ACCESS_CREDENTIALS *AccessCredentials,
45 CSSM_KR_POLICY_FLAGS KRFlags,
46 sint32 *EstimatedTime,
47 CSSM_HANDLE_PTR ReferenceHandle);
48 CSSM_RETURN (CSSMKRI *RegistrationRetrieve)
49 (CSSM_KRSP_HANDLE KRSPHandle,
50 CSSM_HANDLE ReferenceHandle,
51 sint32 *EstimatedTime,
52 CSSM_KR_PROFILE_PTR KRProfile);
53 CSSM_RETURN (CSSMKRI *GenerateRecoveryFields)
54 (CSSM_KRSP_HANDLE KRSPHandle,
55 CSSM_CC_HANDLE KREnablementContextHandle,
56 const CSSM_CONTEXT *KREnablementContext,
57 CSSM_CC_HANDLE CryptoContextHandle,
58 const CSSM_CONTEXT *CryptoContext,
59 const CSSM_DATA *KRSPOptions,
60 CSSM_KR_POLICY_FLAGS KRFlags,
61 CSSM_DATA_PTR KRFields);
62 CSSM_RETURN (CSSMKRI *ProcessRecoveryFields)
63 (CSSM_KRSP_HANDLE KRSPHandle,
64 CSSM_CC_HANDLE KREnablementContextHandle,
65 const CSSM_CONTEXT *KREnablementContext,
66 CSSM_CC_HANDLE CryptoContextHandle,
67 const CSSM_CONTEXT *CryptoContext,
68 const CSSM_DATA *KRSPOptions,
69 CSSM_KR_POLICY_FLAGS KRFlags,
70 const CSSM_DATA *KRFields);
71 CSSM_RETURN (CSSMKRI *RecoveryRequest)
72 (CSSM_KRSP_HANDLE KRSPHandle,
73 CSSM_CC_HANDLE KRRequestContextHandle,
74 const CSSM_CONTEXT *KRRequestContext,
75 const CSSM_DATA *KRInData,
76 const CSSM_ACCESS_CREDENTIALS *AccessCredentials,
77 sint32 *EstimatedTime,
78 CSSM_HANDLE_PTR ReferenceHandle);
79 CSSM_RETURN (CSSMKRI *RecoveryRetrieve)
80 (CSSM_KRSP_HANDLE KRSPHandle,
81 CSSM_HANDLE ReferenceHandle,
82 sint32 *EstimatedTime,
83 CSSM_HANDLE_PTR CacheHandle,
84 uint32 *NumberOfRecoveredKeys);
85 CSSM_RETURN (CSSMKRI *GetRecoveredObject)
86 (CSSM_KRSP_HANDLE KRSPHandle,
87 CSSM_HANDLE CacheHandle,
88 uint32 IndexInResults,
89 CSSM_CSP_HANDLE CSPHandle,
90 const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
91 uint32 Flags,
92 CSSM_KEY_PTR RecoveredKey,
93 CSSM_DATA_PTR OtherInfo);
94 CSSM_RETURN (CSSMKRI *RecoveryRequestAbort)
95 (CSSM_KRSP_HANDLE KRSPHandle,
96 CSSM_HANDLE ResultsHandle);
97 CSSM_RETURN (CSSMKRI *PassThrough)
98 (CSSM_KRSP_HANDLE KRSPHandle,
99 CSSM_CC_HANDLE KeyRecoveryContextHandle,
100 const CSSM_CONTEXT *KeyRecoveryContext,
101 CSSM_CC_HANDLE CryptoContextHandle,
102 const CSSM_CONTEXT *CryptoContext,
103 uint32 PassThroughId,
104 const void *InputParams,
105 void **OutputParams);
106 } CSSM_SPI_KR_FUNCS, *CSSM_SPI_KR_FUNCS_PTR;
107
108 #ifdef __cplusplus
109 }
110 #endif
111
112 #endif /* _CSSMKRSPI_H_ */