]> git.saurik.com Git - apple/security.git/blob - cdsa/cdsa/cssmcspi.h
52b7a50527f036a320de6ba0873e7fbc32356d34
[apple/security.git] / cdsa / cdsa / cssmcspi.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: cssmcspi.h
21
22 Contains: Service Provider Interface for
23 Cryptographic Service Provider Modules
24
25 Copyright: (c) 1999-2000 Apple Computer, Inc., all rights reserved.
26 */
27
28 #ifndef _CSSMCSPI_H_
29 #define _CSSMCSPI_H_ 1
30
31 #include <Security/cssmspi.h>
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 typedef struct cssm_spi_csp_funcs {
38 CSSM_RETURN (CSSMCSPI *EventNotify)
39 (CSSM_CSP_HANDLE CSPHandle,
40 CSSM_CONTEXT_EVENT Event,
41 CSSM_CC_HANDLE CCHandle,
42 const CSSM_CONTEXT *Context);
43 CSSM_RETURN (CSSMCSPI *QuerySize)
44 (CSSM_CSP_HANDLE CSPHandle,
45 CSSM_CC_HANDLE CCHandle,
46 const CSSM_CONTEXT *Context,
47 CSSM_BOOL Encrypt,
48 uint32 QuerySizeCount,
49 CSSM_QUERY_SIZE_DATA_PTR DataBlock);
50 CSSM_RETURN (CSSMCSPI *SignData)
51 (CSSM_CSP_HANDLE CSPHandle,
52 CSSM_CC_HANDLE CCHandle,
53 const CSSM_CONTEXT *Context,
54 const CSSM_DATA *DataBufs,
55 uint32 DataBufCount,
56 CSSM_ALGORITHMS DigestAlgorithm,
57 CSSM_DATA_PTR Signature);
58 CSSM_RETURN (CSSMCSPI *SignDataInit)
59 (CSSM_CSP_HANDLE CSPHandle,
60 CSSM_CC_HANDLE CCHandle,
61 const CSSM_CONTEXT *Context);
62 CSSM_RETURN (CSSMCSPI *SignDataUpdate)
63 (CSSM_CSP_HANDLE CSPHandle,
64 CSSM_CC_HANDLE CCHandle,
65 const CSSM_DATA *DataBufs,
66 uint32 DataBufCount);
67 CSSM_RETURN (CSSMCSPI *SignDataFinal)
68 (CSSM_CSP_HANDLE CSPHandle,
69 CSSM_CC_HANDLE CCHandle,
70 CSSM_DATA_PTR Signature);
71 CSSM_RETURN (CSSMCSPI *VerifyData)
72 (CSSM_CSP_HANDLE CSPHandle,
73 CSSM_CC_HANDLE CCHandle,
74 const CSSM_CONTEXT *Context,
75 const CSSM_DATA *DataBufs,
76 uint32 DataBufCount,
77 CSSM_ALGORITHMS DigestAlgorithm,
78 const CSSM_DATA *Signature);
79 CSSM_RETURN (CSSMCSPI *VerifyDataInit)
80 (CSSM_CSP_HANDLE CSPHandle,
81 CSSM_CC_HANDLE CCHandle,
82 const CSSM_CONTEXT *Context);
83 CSSM_RETURN (CSSMCSPI *VerifyDataUpdate)
84 (CSSM_CSP_HANDLE CSPHandle,
85 CSSM_CC_HANDLE CCHandle,
86 const CSSM_DATA *DataBufs,
87 uint32 DataBufCount);
88 CSSM_RETURN (CSSMCSPI *VerifyDataFinal)
89 (CSSM_CSP_HANDLE CSPHandle,
90 CSSM_CC_HANDLE CCHandle,
91 const CSSM_DATA *Signature);
92 CSSM_RETURN (CSSMCSPI *DigestData)
93 (CSSM_CSP_HANDLE CSPHandle,
94 CSSM_CC_HANDLE CCHandle,
95 const CSSM_CONTEXT *Context,
96 const CSSM_DATA *DataBufs,
97 uint32 DataBufCount,
98 CSSM_DATA_PTR Digest);
99 CSSM_RETURN (CSSMCSPI *DigestDataInit)
100 (CSSM_CSP_HANDLE CSPHandle,
101 CSSM_CC_HANDLE CCHandle,
102 const CSSM_CONTEXT *Context);
103 CSSM_RETURN (CSSMCSPI *DigestDataUpdate)
104 (CSSM_CSP_HANDLE CSPHandle,
105 CSSM_CC_HANDLE CCHandle,
106 const CSSM_DATA *DataBufs,
107 uint32 DataBufCount);
108 CSSM_RETURN (CSSMCSPI *DigestDataClone)
109 (CSSM_CSP_HANDLE CSPHandle,
110 CSSM_CC_HANDLE CCHandle,
111 CSSM_CC_HANDLE ClonedCCHandle);
112 CSSM_RETURN (CSSMCSPI *DigestDataFinal)
113 (CSSM_CSP_HANDLE CSPHandle,
114 CSSM_CC_HANDLE CCHandle,
115 CSSM_DATA_PTR Digest);
116 CSSM_RETURN (CSSMCSPI *GenerateMac)
117 (CSSM_CSP_HANDLE CSPHandle,
118 CSSM_CC_HANDLE CCHandle,
119 const CSSM_CONTEXT *Context,
120 const CSSM_DATA *DataBufs,
121 uint32 DataBufCount,
122 CSSM_DATA_PTR Mac);
123 CSSM_RETURN (CSSMCSPI *GenerateMacInit)
124 (CSSM_CSP_HANDLE CSPHandle,
125 CSSM_CC_HANDLE CCHandle,
126 const CSSM_CONTEXT *Context);
127 CSSM_RETURN (CSSMCSPI *GenerateMacUpdate)
128 (CSSM_CSP_HANDLE CSPHandle,
129 CSSM_CC_HANDLE CCHandle,
130 const CSSM_DATA *DataBufs,
131 uint32 DataBufCount);
132 CSSM_RETURN (CSSMCSPI *GenerateMacFinal)
133 (CSSM_CSP_HANDLE CSPHandle,
134 CSSM_CC_HANDLE CCHandle,
135 CSSM_DATA_PTR Mac);
136 CSSM_RETURN (CSSMCSPI *VerifyMac)
137 (CSSM_CSP_HANDLE CSPHandle,
138 CSSM_CC_HANDLE CCHandle,
139 const CSSM_CONTEXT *Context,
140 const CSSM_DATA *DataBufs,
141 uint32 DataBufCount,
142 const CSSM_DATA *Mac);
143 CSSM_RETURN (CSSMCSPI *VerifyMacInit)
144 (CSSM_CSP_HANDLE CSPHandle,
145 CSSM_CC_HANDLE CCHandle,
146 const CSSM_CONTEXT *Context);
147 CSSM_RETURN (CSSMCSPI *VerifyMacUpdate)
148 (CSSM_CSP_HANDLE CSPHandle,
149 CSSM_CC_HANDLE CCHandle,
150 const CSSM_DATA *DataBufs,
151 uint32 DataBufCount);
152 CSSM_RETURN (CSSMCSPI *VerifyMacFinal)
153 (CSSM_CSP_HANDLE CSPHandle,
154 CSSM_CC_HANDLE CCHandle,
155 const CSSM_DATA *Mac);
156 CSSM_RETURN (CSSMCSPI *EncryptData)
157 (CSSM_CSP_HANDLE CSPHandle,
158 CSSM_CC_HANDLE CCHandle,
159 const CSSM_CONTEXT *Context,
160 const CSSM_DATA *ClearBufs,
161 uint32 ClearBufCount,
162 CSSM_DATA_PTR CipherBufs,
163 uint32 CipherBufCount,
164 uint32 *bytesEncrypted,
165 CSSM_DATA_PTR RemData,
166 CSSM_PRIVILEGE Privilege);
167 CSSM_RETURN (CSSMCSPI *EncryptDataInit)
168 (CSSM_CSP_HANDLE CSPHandle,
169 CSSM_CC_HANDLE CCHandle,
170 const CSSM_CONTEXT *Context,
171 CSSM_PRIVILEGE Privilege);
172 CSSM_RETURN (CSSMCSPI *EncryptDataUpdate)
173 (CSSM_CSP_HANDLE CSPHandle,
174 CSSM_CC_HANDLE CCHandle,
175 const CSSM_DATA *ClearBufs,
176 uint32 ClearBufCount,
177 CSSM_DATA_PTR CipherBufs,
178 uint32 CipherBufCount,
179 uint32 *bytesEncrypted);
180 CSSM_RETURN (CSSMCSPI *EncryptDataFinal)
181 (CSSM_CSP_HANDLE CSPHandle,
182 CSSM_CC_HANDLE CCHandle,
183 CSSM_DATA_PTR RemData);
184 CSSM_RETURN (CSSMCSPI *DecryptData)
185 (CSSM_CSP_HANDLE CSPHandle,
186 CSSM_CC_HANDLE CCHandle,
187 const CSSM_CONTEXT *Context,
188 const CSSM_DATA *CipherBufs,
189 uint32 CipherBufCount,
190 CSSM_DATA_PTR ClearBufs,
191 uint32 ClearBufCount,
192 uint32 *bytesDecrypted,
193 CSSM_DATA_PTR RemData,
194 CSSM_PRIVILEGE Privilege);
195 CSSM_RETURN (CSSMCSPI *DecryptDataInit)
196 (CSSM_CSP_HANDLE CSPHandle,
197 CSSM_CC_HANDLE CCHandle,
198 const CSSM_CONTEXT *Context,
199 CSSM_PRIVILEGE Privilege);
200 CSSM_RETURN (CSSMCSPI *DecryptDataUpdate)
201 (CSSM_CSP_HANDLE CSPHandle,
202 CSSM_CC_HANDLE CCHandle,
203 const CSSM_DATA *CipherBufs,
204 uint32 CipherBufCount,
205 CSSM_DATA_PTR ClearBufs,
206 uint32 ClearBufCount,
207 uint32 *bytesDecrypted);
208 CSSM_RETURN (CSSMCSPI *DecryptDataFinal)
209 (CSSM_CSP_HANDLE CSPHandle,
210 CSSM_CC_HANDLE CCHandle,
211 CSSM_DATA_PTR RemData);
212 CSSM_RETURN (CSSMCSPI *QueryKeySizeInBits)
213 (CSSM_CSP_HANDLE CSPHandle,
214 CSSM_CC_HANDLE CCHandle,
215 const CSSM_CONTEXT *Context,
216 const CSSM_KEY *Key,
217 CSSM_KEY_SIZE_PTR KeySize);
218 CSSM_RETURN (CSSMCSPI *GenerateKey)
219 (CSSM_CSP_HANDLE CSPHandle,
220 CSSM_CC_HANDLE CCHandle,
221 const CSSM_CONTEXT *Context,
222 uint32 KeyUsage,
223 uint32 KeyAttr,
224 const CSSM_DATA *KeyLabel,
225 const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
226 CSSM_KEY_PTR Key,
227 CSSM_PRIVILEGE Privilege);
228 CSSM_RETURN (CSSMCSPI *GenerateKeyPair)
229 (CSSM_CSP_HANDLE CSPHandle,
230 CSSM_CC_HANDLE CCHandle,
231 const CSSM_CONTEXT *Context,
232 uint32 PublicKeyUsage,
233 uint32 PublicKeyAttr,
234 const CSSM_DATA *PublicKeyLabel,
235 CSSM_KEY_PTR PublicKey,
236 uint32 PrivateKeyUsage,
237 uint32 PrivateKeyAttr,
238 const CSSM_DATA *PrivateKeyLabel,
239 const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
240 CSSM_KEY_PTR PrivateKey,
241 CSSM_PRIVILEGE Privilege);
242 CSSM_RETURN (CSSMCSPI *GenerateRandom)
243 (CSSM_CSP_HANDLE CSPHandle,
244 CSSM_CC_HANDLE CCHandle,
245 const CSSM_CONTEXT *Context,
246 CSSM_DATA_PTR RandomNumber);
247 CSSM_RETURN (CSSMCSPI *GenerateAlgorithmParams)
248 (CSSM_CSP_HANDLE CSPHandle,
249 CSSM_CC_HANDLE CCHandle,
250 const CSSM_CONTEXT *Context,
251 uint32 ParamBits,
252 CSSM_DATA_PTR Param,
253 uint32 *NumberOfUpdatedAttibutes,
254 CSSM_CONTEXT_ATTRIBUTE_PTR *UpdatedAttributes);
255 CSSM_RETURN (CSSMCSPI *WrapKey)
256 (CSSM_CSP_HANDLE CSPHandle,
257 CSSM_CC_HANDLE CCHandle,
258 const CSSM_CONTEXT *Context,
259 const CSSM_ACCESS_CREDENTIALS *AccessCred,
260 const CSSM_KEY *Key,
261 const CSSM_DATA *DescriptiveData,
262 CSSM_WRAP_KEY_PTR WrappedKey,
263 CSSM_PRIVILEGE Privilege);
264 CSSM_RETURN (CSSMCSPI *UnwrapKey)
265 (CSSM_CSP_HANDLE CSPHandle,
266 CSSM_CC_HANDLE CCHandle,
267 const CSSM_CONTEXT *Context,
268 const CSSM_KEY *PublicKey,
269 const CSSM_WRAP_KEY *WrappedKey,
270 uint32 KeyUsage,
271 uint32 KeyAttr,
272 const CSSM_DATA *KeyLabel,
273 const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
274 CSSM_KEY_PTR UnwrappedKey,
275 CSSM_DATA_PTR DescriptiveData,
276 CSSM_PRIVILEGE Privilege);
277 CSSM_RETURN (CSSMCSPI *DeriveKey)
278 (CSSM_CSP_HANDLE CSPHandle,
279 CSSM_CC_HANDLE CCHandle,
280 const CSSM_CONTEXT *Context,
281 CSSM_DATA_PTR Param,
282 uint32 KeyUsage,
283 uint32 KeyAttr,
284 const CSSM_DATA *KeyLabel,
285 const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
286 CSSM_KEY_PTR DerivedKey);
287 CSSM_RETURN (CSSMCSPI *FreeKey)
288 (CSSM_CSP_HANDLE CSPHandle,
289 const CSSM_ACCESS_CREDENTIALS *AccessCred,
290 CSSM_KEY_PTR KeyPtr,
291 CSSM_BOOL Delete);
292 CSSM_RETURN (CSSMCSPI *PassThrough)
293 (CSSM_CSP_HANDLE CSPHandle,
294 CSSM_CC_HANDLE CCHandle,
295 const CSSM_CONTEXT *Context,
296 uint32 PassThroughId,
297 const void *InData,
298 void **OutData);
299 CSSM_RETURN (CSSMCSPI *Login)
300 (CSSM_CSP_HANDLE CSPHandle,
301 const CSSM_ACCESS_CREDENTIALS *AccessCred,
302 const CSSM_DATA *LoginName,
303 const void *Reserved);
304 CSSM_RETURN (CSSMCSPI *Logout)
305 (CSSM_CSP_HANDLE CSPHandle);
306 CSSM_RETURN (CSSMCSPI *ChangeLoginAcl)
307 (CSSM_CSP_HANDLE CSPHandle,
308 const CSSM_ACCESS_CREDENTIALS *AccessCred,
309 const CSSM_ACL_EDIT *AclEdit);
310 CSSM_RETURN (CSSMCSPI *ObtainPrivateKeyFromPublicKey)
311 (CSSM_CSP_HANDLE CSPHandle,
312 const CSSM_KEY *PublicKey,
313 CSSM_KEY_PTR PrivateKey);
314 CSSM_RETURN (CSSMCSPI *RetrieveUniqueId)
315 (CSSM_CSP_HANDLE CSPHandle,
316 CSSM_DATA_PTR UniqueID);
317 CSSM_RETURN (CSSMCSPI *RetrieveCounter)
318 (CSSM_CSP_HANDLE CSPHandle,
319 CSSM_DATA_PTR Counter);
320 CSSM_RETURN (CSSMCSPI *VerifyDevice)
321 (CSSM_CSP_HANDLE CSPHandle,
322 const CSSM_DATA *DeviceCert);
323 CSSM_RETURN (CSSMCSPI *GetTimeValue)
324 (CSSM_CSP_HANDLE CSPHandle,
325 CSSM_ALGORITHMS TimeAlgorithm,
326 CSSM_DATA *TimeData);
327 CSSM_RETURN (CSSMCSPI *GetOperationalStatistics)
328 (CSSM_CSP_HANDLE CSPHandle,
329 CSSM_CSP_OPERATIONAL_STATISTICS *Statistics);
330 CSSM_RETURN (CSSMCSPI *GetLoginAcl)
331 (CSSM_CSP_HANDLE CSPHandle,
332 const CSSM_STRING *SelectionTag,
333 uint32 *NumberOfAclInfos,
334 CSSM_ACL_ENTRY_INFO_PTR *AclInfos);
335 CSSM_RETURN (CSSMCSPI *GetKeyAcl)
336 (CSSM_CSP_HANDLE CSPHandle,
337 const CSSM_KEY *Key,
338 const CSSM_STRING *SelectionTag,
339 uint32 *NumberOfAclInfos,
340 CSSM_ACL_ENTRY_INFO_PTR *AclInfos);
341 CSSM_RETURN (CSSMCSPI *ChangeKeyAcl)
342 (CSSM_CSP_HANDLE CSPHandle,
343 const CSSM_ACCESS_CREDENTIALS *AccessCred,
344 const CSSM_ACL_EDIT *AclEdit,
345 const CSSM_KEY *Key);
346 CSSM_RETURN (CSSMCSPI *GetKeyOwner)
347 (CSSM_CSP_HANDLE CSPHandle,
348 const CSSM_KEY *Key,
349 CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
350 CSSM_RETURN (CSSMCSPI *ChangeKeyOwner)
351 (CSSM_CSP_HANDLE CSPHandle,
352 const CSSM_ACCESS_CREDENTIALS *AccessCred,
353 const CSSM_KEY *Key,
354 const CSSM_ACL_OWNER_PROTOTYPE *NewOwner);
355 CSSM_RETURN (CSSMCSPI *GetLoginOwner)
356 (CSSM_CSP_HANDLE CSPHandle,
357 CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
358 CSSM_RETURN (CSSMCSPI *ChangeLoginOwner)
359 (CSSM_CSP_HANDLE CSPHandle,
360 const CSSM_ACCESS_CREDENTIALS *AccessCred,
361 const CSSM_ACL_OWNER_PROTOTYPE *NewOwner);
362 } CSSM_SPI_CSP_FUNCS, *CSSM_SPI_CSP_FUNCS_PTR;
363
364 #ifdef __cplusplus
365 }
366 #endif
367
368 #endif /* _CSSMCSPI_H_ */