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