13089Swyllys /*
23089Swyllys  * CDDL HEADER START
33089Swyllys  *
43089Swyllys  * The contents of this file are subject to the terms of the
53089Swyllys  * Common Development and Distribution License (the "License").
63089Swyllys  * You may not use this file except in compliance with the License.
73089Swyllys  *
83089Swyllys  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
93089Swyllys  * or http://www.opensolaris.org/os/licensing.
103089Swyllys  * See the License for the specific language governing permissions
113089Swyllys  * and limitations under the License.
123089Swyllys  *
133089Swyllys  * When distributing Covered Code, include this CDDL HEADER in each
143089Swyllys  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
153089Swyllys  * If applicable, add the following below this CDDL HEADER, with the
163089Swyllys  * fields enclosed by brackets "[]" replaced with your own identifying
173089Swyllys  * information: Portions Copyright [yyyy] [name of copyright owner]
183089Swyllys  *
193089Swyllys  * CDDL HEADER END
203089Swyllys  */
213089Swyllys /*
223408Swyllys  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
233089Swyllys  * Use is subject to license terms.
243089Swyllys  *
253089Swyllys  *
263089Swyllys  * Constant definitions and function prototypes for the KMF library.
273089Swyllys  * Commonly used data types are defined in "kmftypes.h".
283089Swyllys  */
293089Swyllys 
303089Swyllys #ifndef _KMFAPI_H
313089Swyllys #define	_KMFAPI_H
323089Swyllys 
333089Swyllys #pragma ident	"%Z%%M%	%I%	%E% SMI"
343089Swyllys 
353089Swyllys #include <kmftypes.h>
363089Swyllys #include <security/cryptoki.h>
373089Swyllys 
383089Swyllys #ifdef __cplusplus
393089Swyllys extern "C" {
403089Swyllys #endif
413089Swyllys 
423089Swyllys /*
433089Swyllys  * Setup operations.
443089Swyllys  */
455051Swyllys extern KMF_RETURN kmf_initialize(KMF_HANDLE_T *, char *, char *);
465051Swyllys extern KMF_RETURN kmf_configure_keystore(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
475051Swyllys extern KMF_RETURN kmf_finalize(KMF_HANDLE_T);
483089Swyllys 
493089Swyllys /*
503089Swyllys  * Key operations.
513089Swyllys  */
525051Swyllys extern KMF_RETURN kmf_create_keypair(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
533089Swyllys 
545051Swyllys extern KMF_RETURN kmf_delete_key_from_keystore(KMF_HANDLE_T, int,
555051Swyllys 	KMF_ATTRIBUTE *);
563089Swyllys 
575051Swyllys extern KMF_RETURN kmf_find_key(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
583089Swyllys 
595051Swyllys extern KMF_RETURN kmf_find_prikey_by_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
603089Swyllys 
615051Swyllys extern KMF_RETURN kmf_store_key(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
623089Swyllys 
635051Swyllys extern KMF_RETURN kmf_create_sym_key(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
643089Swyllys 
655051Swyllys extern KMF_RETURN kmf_get_sym_key_value(KMF_HANDLE_T, KMF_KEY_HANDLE *,
663089Swyllys 	KMF_RAW_SYM_KEY *);
673089Swyllys 
683089Swyllys /*
693089Swyllys  * Certificate operations.
703089Swyllys  */
715051Swyllys extern KMF_RETURN kmf_find_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
725051Swyllys 
735051Swyllys extern KMF_RETURN kmf_encode_cert_record(KMF_X509_CERTIFICATE *, KMF_DATA *);
745051Swyllys 
755051Swyllys extern KMF_RETURN kmf_import_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
765051Swyllys 
775051Swyllys extern KMF_RETURN kmf_store_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
785051Swyllys 
795051Swyllys extern KMF_RETURN kmf_delete_cert_from_keystore(KMF_HANDLE_T, int,
805051Swyllys 	KMF_ATTRIBUTE *);
815051Swyllys 
825051Swyllys extern KMF_RETURN kmf_validate_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
835051Swyllys 
845051Swyllys extern KMF_RETURN kmf_create_cert_file(const KMF_DATA *, KMF_ENCODE_FORMAT,
855051Swyllys 	char *);
865051Swyllys 
875051Swyllys extern KMF_RETURN kmf_download_cert(KMF_HANDLE_T, char *, char *, int,
885051Swyllys 	unsigned int, char *, KMF_ENCODE_FORMAT *);
895051Swyllys 
905051Swyllys extern KMF_RETURN kmf_is_cert_file(KMF_HANDLE_T, char *, KMF_ENCODE_FORMAT *);
915051Swyllys 
925051Swyllys extern KMF_RETURN kmf_check_cert_date(KMF_HANDLE_T, const KMF_DATA *);
935051Swyllys 
945051Swyllys /*
955051Swyllys  * Crypto operations with key or cert.
965051Swyllys  */
975051Swyllys extern KMF_RETURN kmf_encrypt(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
985051Swyllys extern KMF_RETURN kmf_decrypt(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
995051Swyllys extern KMF_RETURN kmf_sign_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1005051Swyllys extern KMF_RETURN kmf_sign_data(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1015051Swyllys extern KMF_RETURN kmf_verify_cert(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1025051Swyllys extern KMF_RETURN kmf_verify_data(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1035051Swyllys 
1045051Swyllys /*
1055051Swyllys  * CRL operations.
1065051Swyllys  */
1075051Swyllys extern KMF_RETURN kmf_import_crl(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1085051Swyllys extern KMF_RETURN kmf_delete_crl(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1095051Swyllys extern KMF_RETURN kmf_list_crl(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1105051Swyllys extern KMF_RETURN kmf_find_crl(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1115051Swyllys extern KMF_RETURN kmf_find_cert_in_crl(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
1125051Swyllys extern KMF_RETURN kmf_verify_crl_file(KMF_HANDLE_T, char *, KMF_DATA *);
1135051Swyllys extern KMF_RETURN kmf_check_crl_date(KMF_HANDLE_T, char *);
1145051Swyllys extern KMF_RETURN kmf_download_crl(KMF_HANDLE_T, char *, char *,
1155051Swyllys 	int, unsigned int, char *, KMF_ENCODE_FORMAT *);
1165051Swyllys extern KMF_RETURN kmf_is_crl_file(KMF_HANDLE_T, char *, KMF_ENCODE_FORMAT *);
1175051Swyllys 
1185051Swyllys /*
1195051Swyllys  * CSR operations.
1205051Swyllys  */
1215051Swyllys extern KMF_RETURN kmf_create_csr_file(KMF_DATA *, KMF_ENCODE_FORMAT, char *);
1225051Swyllys extern KMF_RETURN kmf_set_csr_pubkey(KMF_HANDLE_T,
1235051Swyllys 	KMF_KEY_HANDLE *, KMF_CSR_DATA *);
1245051Swyllys extern KMF_RETURN kmf_set_csr_version(KMF_CSR_DATA *, uint32_t);
1255051Swyllys extern KMF_RETURN kmf_set_csr_subject(KMF_CSR_DATA *, KMF_X509_NAME *);
1265051Swyllys extern KMF_RETURN kmf_set_csr_extn(KMF_CSR_DATA *, KMF_X509_EXTENSION *);
1275051Swyllys extern KMF_RETURN kmf_set_csr_sig_alg(KMF_CSR_DATA *, KMF_ALGORITHM_INDEX);
1285051Swyllys extern KMF_RETURN kmf_set_csr_subject_altname(KMF_CSR_DATA *, char *,
1295051Swyllys 	int, KMF_GENERALNAMECHOICES);
1305051Swyllys extern KMF_RETURN kmf_set_csr_ku(KMF_CSR_DATA *, int, uint16_t);
1315051Swyllys extern KMF_RETURN kmf_sign_csr(KMF_HANDLE_T, const KMF_CSR_DATA *,
1325051Swyllys 	KMF_KEY_HANDLE *, KMF_DATA *);
1335051Swyllys 
1345051Swyllys /*
1355051Swyllys  * GetCert operations.
1365051Swyllys  */
1375051Swyllys extern KMF_RETURN kmf_get_cert_extn(const KMF_DATA *, KMF_OID *,
1385051Swyllys 	KMF_X509_EXTENSION *);
1395051Swyllys 
1405051Swyllys extern KMF_RETURN kmf_get_cert_extns(const KMF_DATA *, KMF_FLAG_CERT_EXTN,
1415051Swyllys 	KMF_X509_EXTENSION **, int *);
1425051Swyllys 
1435051Swyllys extern KMF_RETURN kmf_get_cert_ku(const KMF_DATA *, KMF_X509EXT_KEY_USAGE *);
1445051Swyllys 
1455051Swyllys extern KMF_RETURN kmf_get_cert_eku(const KMF_DATA *, KMF_X509EXT_EKU *);
1465051Swyllys 
1475051Swyllys extern KMF_RETURN kmf_get_cert_basic_constraint(const KMF_DATA *,
1485051Swyllys 	KMF_BOOL *, KMF_X509EXT_BASICCONSTRAINTS *);
1495051Swyllys 
1505051Swyllys extern KMF_RETURN kmf_get_cert_policies(const KMF_DATA *,
1515051Swyllys 	KMF_BOOL *, KMF_X509EXT_CERT_POLICIES *);
1525051Swyllys 
1535051Swyllys extern KMF_RETURN kmf_get_cert_auth_info_access(const KMF_DATA *,
1545051Swyllys 	KMF_X509EXT_AUTHINFOACCESS *);
1555051Swyllys 
1565051Swyllys extern KMF_RETURN kmf_get_cert_crl_dist_pts(const KMF_DATA *,
1575051Swyllys 	KMF_X509EXT_CRLDISTPOINTS *);
1585051Swyllys 
1595051Swyllys extern KMF_RETURN kmf_get_cert_version_str(KMF_HANDLE_T, const KMF_DATA *,
1605051Swyllys 	char **);
1615051Swyllys 
1625051Swyllys extern KMF_RETURN kmf_get_cert_subject_str(KMF_HANDLE_T, const KMF_DATA *,
1635051Swyllys 	char **);
1645051Swyllys 
1655051Swyllys extern KMF_RETURN kmf_get_cert_issuer_str(KMF_HANDLE_T,	const KMF_DATA *,
1665051Swyllys 	char **);
1675051Swyllys 
1685051Swyllys extern KMF_RETURN kmf_get_cert_serial_str(KMF_HANDLE_T, const KMF_DATA *,
1695051Swyllys 	char **);
1705051Swyllys 
1715051Swyllys extern KMF_RETURN kmf_get_cert_start_date_str(KMF_HANDLE_T, const KMF_DATA *,
1725051Swyllys 	char **);
1735051Swyllys 
1745051Swyllys extern KMF_RETURN kmf_get_cert_end_date_str(KMF_HANDLE_T, const KMF_DATA *,
1755051Swyllys 	char **);
1765051Swyllys 
1775051Swyllys extern KMF_RETURN kmf_get_cert_pubkey_alg_str(KMF_HANDLE_T, const KMF_DATA *,
1785051Swyllys 	char **);
1795051Swyllys 
1805051Swyllys extern KMF_RETURN kmf_get_cert_sig_alg_str(KMF_HANDLE_T, const KMF_DATA *,
1815051Swyllys 	char **);
1825051Swyllys 
1835051Swyllys extern KMF_RETURN kmf_get_cert_pubkey_str(KMF_HANDLE_T,	const KMF_DATA *,
1845051Swyllys 	char **);
1855051Swyllys 
1865051Swyllys extern KMF_RETURN kmf_get_cert_email_str(KMF_HANDLE_T, const KMF_DATA *,
1875051Swyllys 	char **);
1885051Swyllys 
1895051Swyllys extern KMF_RETURN kmf_get_cert_extn_str(KMF_HANDLE_T, const KMF_DATA *,
1905051Swyllys 	KMF_PRINTABLE_ITEM, char **);
1915051Swyllys 
1925051Swyllys extern KMF_RETURN kmf_get_cert_id_data(const KMF_DATA *, KMF_DATA *);
1935051Swyllys 
1945051Swyllys extern KMF_RETURN kmf_get_cert_id_str(const KMF_DATA *, char **);
1955051Swyllys 
1965051Swyllys extern KMF_RETURN kmf_get_cert_validity(const KMF_DATA *, time_t *, time_t *);
1975051Swyllys 
1985051Swyllys 
1995051Swyllys /*
2005051Swyllys  * SetCert operations
2015051Swyllys  */
2025051Swyllys extern KMF_RETURN kmf_set_cert_pubkey(KMF_HANDLE_T, KMF_KEY_HANDLE *,
2035051Swyllys 	KMF_X509_CERTIFICATE *);
2045051Swyllys 
2055051Swyllys extern KMF_RETURN kmf_set_cert_subject(KMF_X509_CERTIFICATE *,
2065051Swyllys 	KMF_X509_NAME *);
2075051Swyllys 
2085051Swyllys extern KMF_RETURN kmf_set_cert_ku(KMF_X509_CERTIFICATE *, int, uint16_t);
2095051Swyllys 
2105051Swyllys extern KMF_RETURN kmf_set_cert_issuer(KMF_X509_CERTIFICATE *,
2115051Swyllys 	KMF_X509_NAME *);
2125051Swyllys 
2135051Swyllys extern KMF_RETURN kmf_set_cert_sig_alg(KMF_X509_CERTIFICATE *,
2145051Swyllys 	KMF_ALGORITHM_INDEX);
2155051Swyllys 
2165051Swyllys extern KMF_RETURN kmf_set_cert_validity(KMF_X509_CERTIFICATE *,
2175051Swyllys 	time_t, uint32_t);
2185051Swyllys 
2195051Swyllys extern KMF_RETURN kmf_set_cert_serial(KMF_X509_CERTIFICATE *,
2205051Swyllys 	KMF_BIGINT *);
2215051Swyllys 
2225051Swyllys extern KMF_RETURN kmf_set_cert_version(KMF_X509_CERTIFICATE *, uint32_t);
2235051Swyllys 
2245051Swyllys extern KMF_RETURN kmf_set_cert_issuer_altname(KMF_X509_CERTIFICATE *,
2255051Swyllys 	int, KMF_GENERALNAMECHOICES, char *);
2265051Swyllys 
2275051Swyllys extern KMF_RETURN kmf_set_cert_subject_altname(KMF_X509_CERTIFICATE *,
2285051Swyllys 	int, KMF_GENERALNAMECHOICES, char *);
2295051Swyllys 
2305051Swyllys extern KMF_RETURN kmf_add_cert_eku(KMF_X509_CERTIFICATE *, KMF_OID *, int);
2315051Swyllys 
2325051Swyllys extern KMF_RETURN kmf_set_cert_extn(KMF_X509_CERTIFICATE *,
2335051Swyllys 	KMF_X509_EXTENSION *);
2345051Swyllys 
2355051Swyllys extern KMF_RETURN kmf_set_cert_basic_constraint(KMF_X509_CERTIFICATE *,
2365051Swyllys 	KMF_BOOL, KMF_X509EXT_BASICCONSTRAINTS *);
2375051Swyllys 
2385051Swyllys 
2395051Swyllys /*
2405051Swyllys  *  PK12 operations
2415051Swyllys  */
2425051Swyllys extern KMF_RETURN kmf_export_pk12(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
2435051Swyllys 
2445051Swyllys extern KMF_RETURN kmf_build_pk12(KMF_HANDLE_T, int, KMF_X509_DER_CERT *,
2455051Swyllys 	int, KMF_KEY_HANDLE *, KMF_CREDENTIAL *, char *);
2465051Swyllys 
2475051Swyllys extern KMF_RETURN kmf_import_objects(KMF_HANDLE_T, char *, KMF_CREDENTIAL *,
248*5536Swyllys 	KMF_X509_DER_CERT **, int *, KMF_RAW_KEY_DATA **, int *);
2495051Swyllys 
2505051Swyllys /*
2515051Swyllys  * OCSP operations
2525051Swyllys  */
2535051Swyllys extern KMF_RETURN kmf_get_ocsp_for_cert(KMF_HANDLE_T, KMF_DATA *, KMF_DATA *,
2545051Swyllys 	KMF_DATA *);
2555051Swyllys 
2565051Swyllys extern KMF_RETURN kmf_create_ocsp_request(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
2575051Swyllys 
2585051Swyllys extern KMF_RETURN kmf_get_encoded_ocsp_response(KMF_HANDLE_T, char *,
2595051Swyllys 	char *, int, char *, int, char *, unsigned int);
2605051Swyllys 
2615051Swyllys extern KMF_RETURN kmf_get_ocsp_status_for_cert(KMF_HANDLE_T, int,
2625051Swyllys 	KMF_ATTRIBUTE *);
2635051Swyllys 
2645051Swyllys /*
2655051Swyllys  * Policy Operations
2665051Swyllys  */
2675051Swyllys extern KMF_RETURN kmf_set_policy(KMF_HANDLE_T, char *, char *);
2685051Swyllys 
2695051Swyllys /*
2705051Swyllys  * Error handling.
2715051Swyllys  */
2725051Swyllys extern KMF_RETURN kmf_get_plugin_error_str(KMF_HANDLE_T, char **);
2735051Swyllys extern KMF_RETURN kmf_get_kmf_error_str(KMF_RETURN, char **);
2745051Swyllys 
2755051Swyllys /*
2765051Swyllys  * Miscellaneous
2775051Swyllys  */
2785051Swyllys extern KMF_RETURN kmf_dn_parser(char *, KMF_X509_NAME *);
2795051Swyllys extern KMF_RETURN kmf_read_input_file(KMF_HANDLE_T, char *, KMF_DATA *);
2805051Swyllys extern KMF_RETURN kmf_der_to_pem(KMF_OBJECT_TYPE, unsigned char *,
2815051Swyllys 	int, unsigned char **, int *);
2825051Swyllys extern KMF_RETURN kmf_pem_to_der(unsigned char *, int, unsigned char **, int *);
2835051Swyllys extern char *kmf_oid_to_string(KMF_OID *);
2845051Swyllys extern KMF_RETURN kmf_string_to_oid(char *, KMF_OID *);
2855051Swyllys extern int kmf_compare_rdns(KMF_X509_NAME *, KMF_X509_NAME *);
2865051Swyllys extern KMF_RETURN kmf_get_file_format(char *, KMF_ENCODE_FORMAT *);
2875051Swyllys extern uint32_t kmf_string_to_ku(char *);
2885051Swyllys extern char *kmf_ku_to_string(uint32_t);
2895051Swyllys extern KMF_RETURN kmf_hexstr_to_bytes(unsigned char *, unsigned char **,
2905051Swyllys 	size_t *);
2915051Swyllys 
2925051Swyllys #define	KMF_CompareRDNs kmf_compare_rdns
2935051Swyllys 
2945051Swyllys /*
2955051Swyllys  * Memory cleanup operations
2965051Swyllys  */
2975051Swyllys extern void kmf_free_dn(KMF_X509_NAME *);
2985051Swyllys extern void kmf_free_kmf_cert(KMF_HANDLE_T, KMF_X509_DER_CERT *);
2995051Swyllys extern void kmf_free_data(KMF_DATA *);
3005051Swyllys extern void kmf_free_algoid(KMF_X509_ALGORITHM_IDENTIFIER *);
3015051Swyllys extern void kmf_free_extn(KMF_X509_EXTENSION *);
3025051Swyllys extern void kmf_free_tbs_csr(KMF_TBS_CSR *);
3035051Swyllys extern void kmf_free_signed_csr(KMF_CSR_DATA *);
3045051Swyllys extern void kmf_free_tbs_cert(KMF_X509_TBS_CERT *);
3055051Swyllys extern void kmf_free_signed_cert(KMF_X509_CERTIFICATE *);
3065051Swyllys extern void kmf_free_str(char *);
3075051Swyllys extern void kmf_free_eku(KMF_X509EXT_EKU *);
3085051Swyllys extern void kmf_free_spki(KMF_X509_SPKI *);
3095051Swyllys extern void kmf_free_kmf_key(KMF_HANDLE_T, KMF_KEY_HANDLE *);
3105051Swyllys extern void kmf_free_bigint(KMF_BIGINT *);
3115051Swyllys extern void kmf_free_raw_key(KMF_RAW_KEY_DATA *);
3125051Swyllys extern void kmf_free_raw_sym_key(KMF_RAW_SYM_KEY *);
3135051Swyllys extern void kmf_free_crl_dist_pts(KMF_X509EXT_CRLDISTPOINTS *);
3145051Swyllys 
3155051Swyllys /* APIs for PKCS#11 token */
3165051Swyllys extern KMF_RETURN kmf_pk11_token_lookup(KMF_HANDLE_T, char *, CK_SLOT_ID *);
3175051Swyllys extern KMF_RETURN kmf_set_token_pin(KMF_HANDLE_T, int, KMF_ATTRIBUTE *);
3185051Swyllys extern CK_SESSION_HANDLE kmf_get_pk11_handle(KMF_HANDLE_T);
3195051Swyllys 
3205051Swyllys /*
3215051Swyllys  * Attribute management routines.
3225051Swyllys  */
3235051Swyllys int kmf_find_attr(KMF_ATTR_TYPE, KMF_ATTRIBUTE *, int);
3245051Swyllys void *kmf_get_attr_ptr(KMF_ATTR_TYPE, KMF_ATTRIBUTE *, int);
3255051Swyllys KMF_RETURN kmf_get_attr(KMF_ATTR_TYPE, KMF_ATTRIBUTE *, int, void *,
3265051Swyllys 	uint32_t *);
3275051Swyllys KMF_RETURN kmf_get_string_attr(KMF_ATTR_TYPE, KMF_ATTRIBUTE *, int, char **);
3285051Swyllys KMF_RETURN kmf_set_attr(KMF_ATTRIBUTE *, int, KMF_ATTR_TYPE, void *, uint32_t);
3295051Swyllys void kmf_set_attr_at_index(KMF_ATTRIBUTE *, int, KMF_ATTR_TYPE,
3305051Swyllys 	void *, uint32_t);
3315051Swyllys 
3325051Swyllys /*
3335051Swyllys  * Legacy support only - do not use these APIs - they can be removed at any
3345051Swyllys  * time.
3355051Swyllys  */
3365051Swyllys extern KMF_RETURN KMF_ConfigureKeystore(KMF_HANDLE_T, KMF_CONFIG_PARAMS *);
3375051Swyllys extern KMF_RETURN KMF_CreateCSRFile(KMF_DATA *, KMF_ENCODE_FORMAT, char *);
3385051Swyllys extern KMF_RETURN KMF_CreateKeypair(KMF_HANDLE_T,
3395051Swyllys 	KMF_CREATEKEYPAIR_PARAMS *, KMF_KEY_HANDLE *, KMF_KEY_HANDLE *);
3405051Swyllys extern KMF_RETURN KMF_DNParser(char *, KMF_X509_NAME *);
3415051Swyllys extern KMF_RETURN KMF_Finalize(KMF_HANDLE_T);
3423089Swyllys extern KMF_RETURN KMF_FindCert(KMF_HANDLE_T, KMF_FINDCERT_PARAMS *,
3433089Swyllys 	KMF_X509_DER_CERT *, uint32_t *);
3445051Swyllys extern KMF_RETURN KMF_FindKey(KMF_HANDLE_T, KMF_FINDKEY_PARAMS *,
3455051Swyllys 	KMF_KEY_HANDLE *, uint32_t *);
3465051Swyllys extern void KMF_FreeData(KMF_DATA *);
3475051Swyllys extern void KMF_FreeKMFCert(KMF_HANDLE_T, KMF_X509_DER_CERT *);
3485051Swyllys extern void KMF_FreeKMFKey(KMF_HANDLE_T, KMF_KEY_HANDLE *);
3495051Swyllys extern void KMF_FreeSignedCSR(KMF_CSR_DATA *);
3505051Swyllys extern KMF_RETURN KMF_GetCertIDString(const KMF_DATA *, char **);
3515051Swyllys extern KMF_RETURN KMF_GetCertIssuerNameString(KMF_HANDLE_T,
3525051Swyllys 	const KMF_DATA *, char **);
3535051Swyllys extern KMF_RETURN KMF_GetCertSubjectNameString(KMF_HANDLE_T,
3545051Swyllys 	const KMF_DATA *, char **);
3555051Swyllys extern KMF_RETURN KMF_GetKMFErrorString(KMF_RETURN, char **);
3565051Swyllys extern KMF_RETURN KMF_Initialize(KMF_HANDLE_T *, char *, char *);
3575051Swyllys extern KMF_RETURN KMF_ReadInputFile(KMF_HANDLE_T, char *, KMF_DATA *);
3585051Swyllys extern KMF_RETURN KMF_SetCSRPubKey(KMF_HANDLE_T, KMF_KEY_HANDLE *,
3595051Swyllys 	KMF_CSR_DATA *);
3605051Swyllys extern KMF_RETURN KMF_SetCSRSignatureAlgorithm(KMF_CSR_DATA *,
3615051Swyllys 	KMF_ALGORITHM_INDEX);
3625051Swyllys extern KMF_RETURN KMF_SetCSRSubjectName(KMF_CSR_DATA *, KMF_X509_NAME *);
3635051Swyllys extern KMF_RETURN KMF_SetCSRVersion(KMF_CSR_DATA *, uint32_t);
3645051Swyllys extern KMF_RETURN KMF_SignCSR(KMF_HANDLE_T, const KMF_CSR_DATA *,
3653089Swyllys 	KMF_KEY_HANDLE *, KMF_DATA *);
3665051Swyllys extern KMF_RETURN KMF_SignDataWithKey(KMF_HANDLE_T, KMF_KEY_HANDLE *,
3675051Swyllys 	KMF_OID *, KMF_DATA *, KMF_DATA *);
3683089Swyllys extern KMF_RETURN KMF_VerifyCertWithCert(KMF_HANDLE_T, const KMF_DATA *,
3693089Swyllys 	const KMF_DATA *);
3703754Swyllys extern KMF_RETURN KMF_VerifyDataWithCert(KMF_HANDLE_T,
3713754Swyllys 	KMF_KEYSTORE_TYPE, KMF_ALGORITHM_INDEX, KMF_DATA *, KMF_DATA *,
3723089Swyllys 	const KMF_DATA *);
3733089Swyllys 
3743089Swyllys #ifdef __cplusplus
3753089Swyllys }
3763089Swyllys #endif
3773089Swyllys #endif /* _KMFAPI_H */
378