2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
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
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.
22 Contains: Service Provider Interface for Key Recovery Modules
24 Copyright: (c) 1999-2000 Apple Computer, Inc., all rights reserved.
28 #define _CSSMKRSPI_H_ 1
30 #include <Security/cssmtype.h>
36 /* Data types for Key Recovery SPI */
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
,
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
;
112 #endif /* _CSSMKRSPI_H_ */