xref: /titanic_53/usr/src/lib/libkmf/include/kmfapi.h (revision 99ebb4ca412cb0a19d77a3899a87c055b9c30fa8)
1*99ebb4caSwyllys /*
2*99ebb4caSwyllys  * CDDL HEADER START
3*99ebb4caSwyllys  *
4*99ebb4caSwyllys  * The contents of this file are subject to the terms of the
5*99ebb4caSwyllys  * Common Development and Distribution License (the "License").
6*99ebb4caSwyllys  * You may not use this file except in compliance with the License.
7*99ebb4caSwyllys  *
8*99ebb4caSwyllys  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*99ebb4caSwyllys  * or http://www.opensolaris.org/os/licensing.
10*99ebb4caSwyllys  * See the License for the specific language governing permissions
11*99ebb4caSwyllys  * and limitations under the License.
12*99ebb4caSwyllys  *
13*99ebb4caSwyllys  * When distributing Covered Code, include this CDDL HEADER in each
14*99ebb4caSwyllys  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*99ebb4caSwyllys  * If applicable, add the following below this CDDL HEADER, with the
16*99ebb4caSwyllys  * fields enclosed by brackets "[]" replaced with your own identifying
17*99ebb4caSwyllys  * information: Portions Copyright [yyyy] [name of copyright owner]
18*99ebb4caSwyllys  *
19*99ebb4caSwyllys  * CDDL HEADER END
20*99ebb4caSwyllys  */
21*99ebb4caSwyllys /*
22*99ebb4caSwyllys  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
23*99ebb4caSwyllys  * Use is subject to license terms.
24*99ebb4caSwyllys  *
25*99ebb4caSwyllys  *
26*99ebb4caSwyllys  * Constant definitions and function prototypes for the KMF library.
27*99ebb4caSwyllys  * Commonly used data types are defined in "kmftypes.h".
28*99ebb4caSwyllys  */
29*99ebb4caSwyllys 
30*99ebb4caSwyllys #ifndef _KMFAPI_H
31*99ebb4caSwyllys #define	_KMFAPI_H
32*99ebb4caSwyllys 
33*99ebb4caSwyllys #pragma ident	"%Z%%M%	%I%	%E% SMI"
34*99ebb4caSwyllys 
35*99ebb4caSwyllys #include <kmftypes.h>
36*99ebb4caSwyllys #include <security/cryptoki.h>
37*99ebb4caSwyllys 
38*99ebb4caSwyllys #ifdef __cplusplus
39*99ebb4caSwyllys extern "C" {
40*99ebb4caSwyllys #endif
41*99ebb4caSwyllys 
42*99ebb4caSwyllys /*
43*99ebb4caSwyllys  * Setup operations.
44*99ebb4caSwyllys  */
45*99ebb4caSwyllys extern KMF_RETURN KMF_Initialize(KMF_HANDLE_T *, char *, char *);
46*99ebb4caSwyllys extern KMF_RETURN KMF_ConfigureKeystore(KMF_HANDLE_T, KMF_CONFIG_PARAMS *);
47*99ebb4caSwyllys extern KMF_RETURN KMF_Finalize(KMF_HANDLE_T);
48*99ebb4caSwyllys 
49*99ebb4caSwyllys /*
50*99ebb4caSwyllys  * Key operations.
51*99ebb4caSwyllys  */
52*99ebb4caSwyllys extern KMF_RETURN KMF_SignDataWithKey(KMF_HANDLE_T,
53*99ebb4caSwyllys 	KMF_KEY_HANDLE *, KMF_OID *,
54*99ebb4caSwyllys 	KMF_DATA *, KMF_DATA *);
55*99ebb4caSwyllys 
56*99ebb4caSwyllys extern KMF_RETURN KMF_VerifyDataWithKey(KMF_HANDLE_T,
57*99ebb4caSwyllys 	KMF_KEY_HANDLE *, KMF_ALGORITHM_INDEX, KMF_DATA *, KMF_DATA *);
58*99ebb4caSwyllys 
59*99ebb4caSwyllys extern KMF_RETURN KMF_CreateKeypair(KMF_HANDLE_T,
60*99ebb4caSwyllys 	KMF_CREATEKEYPAIR_PARAMS *, KMF_KEY_HANDLE *, KMF_KEY_HANDLE *);
61*99ebb4caSwyllys 
62*99ebb4caSwyllys extern KMF_RETURN KMF_DeleteKeyFromKeystore(KMF_HANDLE_T,
63*99ebb4caSwyllys 	KMF_DELETEKEY_PARAMS *, KMF_KEY_HANDLE *);
64*99ebb4caSwyllys 
65*99ebb4caSwyllys extern KMF_RETURN KMF_SignCertRecord(KMF_HANDLE_T, KMF_KEY_HANDLE *,
66*99ebb4caSwyllys 	KMF_X509_CERTIFICATE *, KMF_DATA *);
67*99ebb4caSwyllys 
68*99ebb4caSwyllys extern KMF_RETURN KMF_FindKey(KMF_HANDLE_T, KMF_FINDKEY_PARAMS *,
69*99ebb4caSwyllys 	KMF_KEY_HANDLE *, uint32_t *);
70*99ebb4caSwyllys 
71*99ebb4caSwyllys extern KMF_RETURN KMF_StorePrivateKey(KMF_HANDLE_T, KMF_STOREKEY_PARAMS *,
72*99ebb4caSwyllys 	KMF_RAW_KEY_DATA *);
73*99ebb4caSwyllys 
74*99ebb4caSwyllys extern KMF_RETURN KMF_CreateSymKey(KMF_HANDLE_T, KMF_CREATESYMKEY_PARAMS *,
75*99ebb4caSwyllys 	KMF_KEY_HANDLE *);
76*99ebb4caSwyllys 
77*99ebb4caSwyllys extern KMF_RETURN KMF_GetSymKeyValue(KMF_HANDLE_T, KMF_KEY_HANDLE *,
78*99ebb4caSwyllys 	KMF_RAW_SYM_KEY *);
79*99ebb4caSwyllys 
80*99ebb4caSwyllys /*
81*99ebb4caSwyllys  * Certificate operations.
82*99ebb4caSwyllys  */
83*99ebb4caSwyllys extern KMF_RETURN KMF_FindCert(KMF_HANDLE_T, KMF_FINDCERT_PARAMS *,
84*99ebb4caSwyllys 	KMF_X509_DER_CERT *, uint32_t *);
85*99ebb4caSwyllys 
86*99ebb4caSwyllys extern KMF_RETURN KMF_EncodeCertRecord(KMF_X509_CERTIFICATE *,
87*99ebb4caSwyllys 	KMF_DATA *);
88*99ebb4caSwyllys extern KMF_RETURN KMF_SignCertWithKey(KMF_HANDLE_T, const KMF_DATA *,
89*99ebb4caSwyllys 	KMF_KEY_HANDLE *, KMF_DATA *);
90*99ebb4caSwyllys extern KMF_RETURN KMF_SignCertWithCert(KMF_HANDLE_T,
91*99ebb4caSwyllys 	KMF_CRYPTOWITHCERT_PARAMS *,
92*99ebb4caSwyllys 	const KMF_DATA *, KMF_DATA *, KMF_DATA *);
93*99ebb4caSwyllys 
94*99ebb4caSwyllys extern KMF_RETURN KMF_SignDataWithCert(KMF_HANDLE_T,
95*99ebb4caSwyllys 	KMF_CRYPTOWITHCERT_PARAMS *, KMF_DATA *, KMF_DATA *, KMF_DATA *);
96*99ebb4caSwyllys 
97*99ebb4caSwyllys extern KMF_RETURN KMF_VerifyCertWithKey(KMF_HANDLE_T, KMF_KEY_HANDLE *,
98*99ebb4caSwyllys 	const KMF_DATA *);
99*99ebb4caSwyllys extern KMF_RETURN KMF_VerifyCertWithCert(KMF_HANDLE_T, const KMF_DATA *,
100*99ebb4caSwyllys 	const KMF_DATA *);
101*99ebb4caSwyllys extern KMF_RETURN KMF_VerifyDataWithCert(KMF_HANDLE_T, KMF_DATA *, KMF_DATA *,
102*99ebb4caSwyllys 	const KMF_DATA *);
103*99ebb4caSwyllys 
104*99ebb4caSwyllys extern KMF_RETURN KMF_EncryptWithCert(KMF_HANDLE_T, KMF_DATA *,
105*99ebb4caSwyllys 	KMF_DATA *, KMF_DATA *);
106*99ebb4caSwyllys 
107*99ebb4caSwyllys extern KMF_RETURN KMF_DecryptWithCert(KMF_HANDLE_T,
108*99ebb4caSwyllys 	KMF_CRYPTOWITHCERT_PARAMS *, KMF_DATA *, KMF_DATA *, KMF_DATA *);
109*99ebb4caSwyllys 
110*99ebb4caSwyllys extern KMF_RETURN KMF_StoreCert(KMF_HANDLE_T,
111*99ebb4caSwyllys 	KMF_STORECERT_PARAMS *, KMF_DATA *);
112*99ebb4caSwyllys extern KMF_RETURN KMF_ImportCert(KMF_HANDLE_T, KMF_IMPORTCERT_PARAMS *);
113*99ebb4caSwyllys extern KMF_RETURN KMF_DeleteCertFromKeystore(KMF_HANDLE_T,
114*99ebb4caSwyllys 	KMF_DELETECERT_PARAMS *);
115*99ebb4caSwyllys 
116*99ebb4caSwyllys extern KMF_RETURN KMF_ValidateCert(KMF_HANDLE_T,
117*99ebb4caSwyllys 	KMF_VALIDATECERT_PARAMS *, int  *);
118*99ebb4caSwyllys 
119*99ebb4caSwyllys extern KMF_RETURN KMF_CreateCertFile(KMF_DATA *, KMF_ENCODE_FORMAT, char *);
120*99ebb4caSwyllys 
121*99ebb4caSwyllys extern KMF_RETURN KMF_DownloadCert(KMF_HANDLE_T, char *, char *, int,
122*99ebb4caSwyllys 	unsigned int, char *, KMF_ENCODE_FORMAT *);
123*99ebb4caSwyllys extern KMF_RETURN KMF_IsCertFile(KMF_HANDLE_T, char *, KMF_ENCODE_FORMAT *);
124*99ebb4caSwyllys 
125*99ebb4caSwyllys extern KMF_RETURN KMF_CheckCertDate(KMF_HANDLE_T, KMF_DATA *);
126*99ebb4caSwyllys 
127*99ebb4caSwyllys /*
128*99ebb4caSwyllys  * CRL operations.
129*99ebb4caSwyllys  */
130*99ebb4caSwyllys extern KMF_RETURN KMF_ImportCRL(KMF_HANDLE_T, KMF_IMPORTCRL_PARAMS *);
131*99ebb4caSwyllys extern KMF_RETURN KMF_DeleteCRL(KMF_HANDLE_T, KMF_DELETECRL_PARAMS *);
132*99ebb4caSwyllys extern KMF_RETURN KMF_ListCRL(KMF_HANDLE_T, KMF_LISTCRL_PARAMS *, char **);
133*99ebb4caSwyllys extern KMF_RETURN KMF_FindCRL(KMF_HANDLE_T, KMF_FINDCRL_PARAMS *,
134*99ebb4caSwyllys 	char **, int *);
135*99ebb4caSwyllys 
136*99ebb4caSwyllys extern KMF_RETURN KMF_FindCertInCRL(KMF_HANDLE_T,
137*99ebb4caSwyllys 	KMF_FINDCERTINCRL_PARAMS *);
138*99ebb4caSwyllys extern KMF_RETURN KMF_VerifyCRLFile(KMF_HANDLE_T,
139*99ebb4caSwyllys 	KMF_VERIFYCRL_PARAMS *);
140*99ebb4caSwyllys 
141*99ebb4caSwyllys extern KMF_RETURN KMF_CheckCRLDate(KMF_HANDLE_T,
142*99ebb4caSwyllys 	KMF_CHECKCRLDATE_PARAMS *);
143*99ebb4caSwyllys extern KMF_RETURN KMF_DownloadCRL(KMF_HANDLE_T, char *, char *,
144*99ebb4caSwyllys 	int, unsigned int, char *, KMF_ENCODE_FORMAT *);
145*99ebb4caSwyllys extern KMF_RETURN KMF_IsCRLFile(KMF_HANDLE_T, char *, KMF_ENCODE_FORMAT *);
146*99ebb4caSwyllys 
147*99ebb4caSwyllys /*
148*99ebb4caSwyllys  * CSR operations.
149*99ebb4caSwyllys  */
150*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRPubKey(KMF_HANDLE_T,
151*99ebb4caSwyllys 	KMF_KEY_HANDLE *, KMF_CSR_DATA *);
152*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRVersion(KMF_CSR_DATA *, uint32_t);
153*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRSubjectName(KMF_CSR_DATA *, KMF_X509_NAME *);
154*99ebb4caSwyllys extern KMF_RETURN KMF_CreateCSRFile(KMF_DATA *, KMF_ENCODE_FORMAT, char *);
155*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRExtension(KMF_CSR_DATA *, KMF_X509_EXTENSION *);
156*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRSignatureAlgorithm(KMF_CSR_DATA *,
157*99ebb4caSwyllys 	KMF_ALGORITHM_INDEX);
158*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRSubjectAltName(KMF_CSR_DATA *, char *,
159*99ebb4caSwyllys 	int, KMF_GENERALNAMECHOICES);
160*99ebb4caSwyllys extern KMF_RETURN KMF_SetCSRKeyUsage(KMF_CSR_DATA *, int, uint16_t);
161*99ebb4caSwyllys extern KMF_RETURN KMF_SignCSR(KMF_HANDLE_T, const KMF_CSR_DATA *,
162*99ebb4caSwyllys 	KMF_KEY_HANDLE *, KMF_DATA *);
163*99ebb4caSwyllys 
164*99ebb4caSwyllys /*
165*99ebb4caSwyllys  * GetCert operations.
166*99ebb4caSwyllys  */
167*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertExtensionData(const KMF_DATA *, KMF_OID *,
168*99ebb4caSwyllys 	KMF_X509_EXTENSION *);
169*99ebb4caSwyllys 
170*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertCriticalExtensions(const KMF_DATA *,
171*99ebb4caSwyllys 	KMF_X509_EXTENSION **, int *);
172*99ebb4caSwyllys 
173*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertNonCriticalExtensions(const KMF_DATA *,
174*99ebb4caSwyllys 	KMF_X509_EXTENSION **, int *);
175*99ebb4caSwyllys 
176*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertKeyUsageExt(const KMF_DATA *,
177*99ebb4caSwyllys 	KMF_X509EXT_KEY_USAGE *);
178*99ebb4caSwyllys 
179*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertEKU(const KMF_DATA *, KMF_X509EXT_EKU *);
180*99ebb4caSwyllys 
181*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertBasicConstraintExt(const KMF_DATA *,
182*99ebb4caSwyllys 	KMF_BOOL *, KMF_X509EXT_BASICCONSTRAINTS *);
183*99ebb4caSwyllys 
184*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertPoliciesExt(const KMF_DATA *,
185*99ebb4caSwyllys 	KMF_BOOL *, KMF_X509EXT_CERT_POLICIES *);
186*99ebb4caSwyllys 
187*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertAuthInfoAccessExt(const KMF_DATA *,
188*99ebb4caSwyllys 	KMF_X509EXT_AUTHINFOACCESS *);
189*99ebb4caSwyllys 
190*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertCRLDistributionPointsExt(const KMF_DATA *,
191*99ebb4caSwyllys 	KMF_X509EXT_CRLDISTPOINTS *);
192*99ebb4caSwyllys 
193*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertVersionString(KMF_HANDLE_T,
194*99ebb4caSwyllys 	const KMF_DATA *, char **);
195*99ebb4caSwyllys 
196*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertSubjectNameString(KMF_HANDLE_T, const KMF_DATA *,
197*99ebb4caSwyllys 	char **);
198*99ebb4caSwyllys 
199*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertIssuerNameString(KMF_HANDLE_T,
200*99ebb4caSwyllys 	const KMF_DATA *, char **);
201*99ebb4caSwyllys 
202*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertSerialNumberString(KMF_HANDLE_T, const KMF_DATA *,
203*99ebb4caSwyllys 	char **);
204*99ebb4caSwyllys 
205*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertStartDateString(KMF_HANDLE_T,
206*99ebb4caSwyllys 	const KMF_DATA *, char **);
207*99ebb4caSwyllys 
208*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertEndDateString(KMF_HANDLE_T,
209*99ebb4caSwyllys 	const KMF_DATA *, char **);
210*99ebb4caSwyllys 
211*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertPubKeyAlgString(KMF_HANDLE_T,
212*99ebb4caSwyllys 	const KMF_DATA *, char **);
213*99ebb4caSwyllys 
214*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertSignatureAlgString(KMF_HANDLE_T,
215*99ebb4caSwyllys 	const KMF_DATA *, char **);
216*99ebb4caSwyllys 
217*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertPubKeyDataString(KMF_HANDLE_T,
218*99ebb4caSwyllys 	const KMF_DATA *, char **);
219*99ebb4caSwyllys 
220*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertEmailString(KMF_HANDLE_T,
221*99ebb4caSwyllys 	const KMF_DATA *, char **);
222*99ebb4caSwyllys 
223*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertExtensionString(KMF_HANDLE_T, const KMF_DATA *,
224*99ebb4caSwyllys 	KMF_PRINTABLE_ITEM, char **);
225*99ebb4caSwyllys 
226*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertIDData(const KMF_DATA *, KMF_DATA *);
227*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertIDString(const KMF_DATA *, char **);
228*99ebb4caSwyllys extern KMF_RETURN KMF_GetCertValidity(const KMF_DATA *, time_t *, time_t *);
229*99ebb4caSwyllys 
230*99ebb4caSwyllys /*
231*99ebb4caSwyllys  * SetCert operations
232*99ebb4caSwyllys  */
233*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertPubKey(KMF_HANDLE_T, KMF_KEY_HANDLE *,
234*99ebb4caSwyllys 	KMF_X509_CERTIFICATE *);
235*99ebb4caSwyllys 
236*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertSubjectName(KMF_X509_CERTIFICATE *,
237*99ebb4caSwyllys 	KMF_X509_NAME *);
238*99ebb4caSwyllys 
239*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertKeyUsage(KMF_X509_CERTIFICATE *, int, uint16_t);
240*99ebb4caSwyllys 
241*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertIssuerName(KMF_X509_CERTIFICATE *,
242*99ebb4caSwyllys 	KMF_X509_NAME *);
243*99ebb4caSwyllys 
244*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertSignatureAlgorithm(KMF_X509_CERTIFICATE *,
245*99ebb4caSwyllys 	KMF_ALGORITHM_INDEX);
246*99ebb4caSwyllys 
247*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertValidityTimes(KMF_X509_CERTIFICATE *,
248*99ebb4caSwyllys 	time_t, uint32_t);
249*99ebb4caSwyllys 
250*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertSerialNumber(KMF_X509_CERTIFICATE *,
251*99ebb4caSwyllys 	KMF_BIGINT *);
252*99ebb4caSwyllys 
253*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertVersion(KMF_X509_CERTIFICATE *, uint32_t);
254*99ebb4caSwyllys 
255*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertIssuerAltName(KMF_X509_CERTIFICATE *,
256*99ebb4caSwyllys 	int, KMF_GENERALNAMECHOICES, char *);
257*99ebb4caSwyllys 
258*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertSubjectAltName(KMF_X509_CERTIFICATE *,
259*99ebb4caSwyllys 	int, KMF_GENERALNAMECHOICES, char *);
260*99ebb4caSwyllys 
261*99ebb4caSwyllys extern KMF_RETURN KMF_AddCertEKU(KMF_X509_CERTIFICATE *, KMF_OID *, int);
262*99ebb4caSwyllys 
263*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertExtension(KMF_X509_CERTIFICATE *,
264*99ebb4caSwyllys 	KMF_X509_EXTENSION *);
265*99ebb4caSwyllys 
266*99ebb4caSwyllys extern KMF_RETURN KMF_SetCertBasicConstraintExt(KMF_X509_CERTIFICATE *,
267*99ebb4caSwyllys 	KMF_BOOL, KMF_X509EXT_BASICCONSTRAINTS *);
268*99ebb4caSwyllys 
269*99ebb4caSwyllys extern KMF_RETURN KMF_ExportPK12(KMF_HANDLE_T, KMF_EXPORTP12_PARAMS *, char *);
270*99ebb4caSwyllys extern KMF_RETURN KMF_ImportPK12(KMF_HANDLE_T, char *, KMF_CREDENTIAL *,
271*99ebb4caSwyllys 	KMF_DATA **, int *, KMF_RAW_KEY_DATA **, int *);
272*99ebb4caSwyllys 
273*99ebb4caSwyllys /*
274*99ebb4caSwyllys  * Get OCSP response operation.
275*99ebb4caSwyllys  */
276*99ebb4caSwyllys extern KMF_RETURN KMF_GetOCSPForCert(KMF_HANDLE_T, KMF_DATA *,	KMF_DATA *,
277*99ebb4caSwyllys 	KMF_DATA *);
278*99ebb4caSwyllys 
279*99ebb4caSwyllys extern KMF_RETURN KMF_CreateOCSPRequest(KMF_HANDLE_T, KMF_OCSPREQUEST_PARAMS *,
280*99ebb4caSwyllys 	char *);
281*99ebb4caSwyllys 
282*99ebb4caSwyllys extern KMF_RETURN KMF_GetEncodedOCSPResponse(KMF_HANDLE_T, char *, char *, int,
283*99ebb4caSwyllys 	char *, int, char *, unsigned int);
284*99ebb4caSwyllys 
285*99ebb4caSwyllys extern KMF_RETURN KMF_GetOCSPStatusForCert(KMF_HANDLE_T,
286*99ebb4caSwyllys 	KMF_OCSPRESPONSE_PARAMS_INPUT *,
287*99ebb4caSwyllys 	KMF_OCSPRESPONSE_PARAMS_OUTPUT *);
288*99ebb4caSwyllys 
289*99ebb4caSwyllys /*
290*99ebb4caSwyllys  * Policy Operations
291*99ebb4caSwyllys  */
292*99ebb4caSwyllys extern KMF_RETURN KMF_SetPolicy(KMF_HANDLE_T, char *, char *);
293*99ebb4caSwyllys 
294*99ebb4caSwyllys /*
295*99ebb4caSwyllys  * Error handling.
296*99ebb4caSwyllys  */
297*99ebb4caSwyllys extern KMF_RETURN KMF_GetPluginErrorString(KMF_HANDLE_T, char **);
298*99ebb4caSwyllys extern KMF_RETURN KMF_GetKMFErrorString(KMF_RETURN, char **);
299*99ebb4caSwyllys 
300*99ebb4caSwyllys /*
301*99ebb4caSwyllys  * Miscellaneous
302*99ebb4caSwyllys  */
303*99ebb4caSwyllys extern KMF_RETURN KMF_DNParser(char *, KMF_X509_NAME *);
304*99ebb4caSwyllys extern KMF_RETURN KMF_DN2Der(KMF_X509_NAME *, KMF_DATA *);
305*99ebb4caSwyllys extern KMF_RETURN KMF_ReadInputFile(KMF_HANDLE_T, char *, KMF_DATA *);
306*99ebb4caSwyllys extern KMF_RETURN KMF_Der2Pem(KMF_OBJECT_TYPE, unsigned char *,
307*99ebb4caSwyllys 	int, unsigned char **, int *);
308*99ebb4caSwyllys extern KMF_RETURN KMF_Pem2Der(unsigned char *, int, unsigned char **, int *);
309*99ebb4caSwyllys extern char *KMF_OID2String(KMF_OID *);
310*99ebb4caSwyllys extern KMF_RETURN KMF_String2OID(char *, KMF_OID *);
311*99ebb4caSwyllys extern int KMF_CompareRDNs(KMF_X509_NAME *, KMF_X509_NAME *);
312*99ebb4caSwyllys extern KMF_RETURN KMF_GetFileFormat(char *, KMF_ENCODE_FORMAT *);
313*99ebb4caSwyllys extern uint16_t KMF_StringToKeyUsage(char *);
314*99ebb4caSwyllys extern KMF_RETURN KMF_SetTokenPin(KMF_HANDLE_T, KMF_SETPIN_PARAMS *,
315*99ebb4caSwyllys 	KMF_CREDENTIAL *);
316*99ebb4caSwyllys extern KMF_RETURN KMF_HexString2Bytes(unsigned char *, unsigned char **,
317*99ebb4caSwyllys 	size_t *);
318*99ebb4caSwyllys 
319*99ebb4caSwyllys /*
320*99ebb4caSwyllys  * Memory cleanup operations
321*99ebb4caSwyllys  */
322*99ebb4caSwyllys extern void KMF_FreeDN(KMF_X509_NAME *);
323*99ebb4caSwyllys extern void KMF_FreeKMFCert(KMF_HANDLE_T, KMF_X509_DER_CERT *);
324*99ebb4caSwyllys extern void KMF_FreeData(KMF_DATA *);
325*99ebb4caSwyllys extern void KMF_FreeAlgOID(KMF_X509_ALGORITHM_IDENTIFIER *);
326*99ebb4caSwyllys extern void KMF_FreeExtension(KMF_X509_EXTENSION *);
327*99ebb4caSwyllys extern void KMF_FreeTBSCSR(KMF_TBS_CSR *);
328*99ebb4caSwyllys extern void KMF_FreeSignedCSR(KMF_CSR_DATA *);
329*99ebb4caSwyllys extern void KMF_FreeTBSCert(KMF_X509_TBS_CERT *);
330*99ebb4caSwyllys extern void KMF_FreeSignedCert(KMF_X509_CERTIFICATE *);
331*99ebb4caSwyllys extern void KMF_FreeString(char *);
332*99ebb4caSwyllys extern void KMF_FreeEKU(KMF_X509EXT_EKU *);
333*99ebb4caSwyllys extern void KMF_FreeSPKI(KMF_X509_SPKI *);
334*99ebb4caSwyllys extern void KMF_FreeKMFKey(KMF_HANDLE_T, KMF_KEY_HANDLE *);
335*99ebb4caSwyllys extern void KMF_FreeBigint(KMF_BIGINT *);
336*99ebb4caSwyllys extern void KMF_FreeRawKey(KMF_RAW_KEY_DATA *);
337*99ebb4caSwyllys extern void KMF_FreeRawSymKey(KMF_RAW_SYM_KEY *);
338*99ebb4caSwyllys extern void KMF_FreeCRLDistributionPoints(KMF_X509EXT_CRLDISTPOINTS *);
339*99ebb4caSwyllys 
340*99ebb4caSwyllys /* APIs for PKCS#11 token */
341*99ebb4caSwyllys extern KMF_RETURN KMF_PK11TokenLookup(KMF_HANDLE_T, char *, CK_SLOT_ID *);
342*99ebb4caSwyllys 
343*99ebb4caSwyllys #ifdef __cplusplus
344*99ebb4caSwyllys }
345*99ebb4caSwyllys #endif
346*99ebb4caSwyllys #endif /* _KMFAPI_H */
347