From 363a869b000ee1c9337bc0086108f6a5960da326 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Sun, 15 Nov 2009 20:26:16 +0000 Subject: Allow use of p11-tests as a library. --- src/p11-tests.h | 255 +++++--------------------------------------------------- 1 file changed, 21 insertions(+), 234 deletions(-) (limited to 'src/p11-tests.h') diff --git a/src/p11-tests.h b/src/p11-tests.h index 15c95b3..dcf327d 100644 --- a/src/p11-tests.h +++ b/src/p11-tests.h @@ -1,250 +1,37 @@ -#ifndef P11TESTST_H_ -#define P11TESTST_H_ - -#ifndef _WIN32 -#include "config.h" -#endif - -#ifdef _MSC_VER -#pragma warning(disable : 4996) -#endif +#ifndef P11TESTS_H_ +#define P11TESTS_H_ #include "pkcs11/pkcs11.h" -#include -#include - -#include -#include - -#define CK_INVALID ((CK_ULONG)-1) - -extern int p11t_test_unexpected; -extern int p11t_test_write_session; - -/* ------------------------------------------------------------------- - * certificate.c - */ - -const char* p11t_certificate_validate_dn(CK_BYTE_PTR der, CK_ULONG n_der); - -void p11t_certificate_tests(void); - -/* ------------------------------------------------------------------- - * check.c - */ - -enum -{ - STOP = 0, - CONTINUE = 1 +enum { + P11_TESTS_NONE, + P11_TESTS_INFO, + P11_TESTS_WARN, + P11_TESTS_FAIL }; -extern int p11t_check_verbose; - -#define P11T_SECTION(check) \ - p11t_msg_prefix(check) - -#define _P11T_BEGIN do { -#define _P11T_END } while(0) - -#define P11T_CHECK_FAIL(what) \ - _P11T_BEGIN p11t_check_fail("%s", (what)); return STOP; _P11T_END - -#define P11T_CHECK_FAIL_MSG(what, msg) \ - _P11T_BEGIN p11t_check_fail("%s: %s", (what), (msg)); return STOP; _P11T_END - -int p11t_check_fail(const char *message, ...); -int p11t_check_warn(const char *message, ...); -int p11t_check_info(const char *message, ...); - -#define P11T_CHECK_RV(what, have, want) \ - _P11T_BEGIN if(!_p11t_check_rv((what), (have), (want))) return STOP; _P11T_END - -int _p11t_check_rv(const char *what, CK_RV have, CK_RV want); - -#define P11T_CHECK_PADDED(what, padded) \ - _P11T_BEGIN if(!_p11t_check_padded((what), (padded), sizeof(padded))) return STOP; _P11T_END - -int _p11t_check_padded(const char *what, const CK_UTF8CHAR_PTR padded, CK_ULONG length); - -#define P11T_CHECK_ULONG(what, have, want) \ - _P11T_BEGIN if(!_p11t_check_ulong((what), (have), (want))) return STOP; _P11T_END - -int _p11t_check_ulong(const char *what, CK_ULONG have, CK_ULONG want); - -#define P11T_CHECK_MASK(what, have, want) \ - _P11T_BEGIN if(!_p11t_check_mask((what), (have), (want))) return STOP; _P11T_END - -int _p11t_check_mask(const char *what, CK_ULONG flags, CK_ULONG mask); - -#define P11T_CHECK_FLAG(what, have, want) \ - _P11T_BEGIN if(!_p11t_check_flag((what), (have), (want))) return STOP; _P11T_END - -int _p11t_check_flag(const char *what, CK_ULONG flags, CK_ULONG flag); - -#define P11T_CHECK_NFLAG(what, have, want) \ - _P11T_BEGIN if(!_p11t_check_nflag((what), (have), (want))) return STOP; _P11T_END - -int _p11t_check_nflag(const char *what, CK_ULONG flags, CK_ULONG nflag); - -#define P11T_CHECK_BOOL(what, value) \ - _P11T_BEGIN if(!_p11t_check_bool((what), (value))) return STOP; _P11T_END - -int _p11t_check_bool(const char *what, CK_BBOOL value); - -#define P11T_CHECK_STRING(what, value, length) \ - _P11T_BEGIN if(!_p11t_check_string((what), (value), (length))) return STOP; _P11T_END - -int _p11t_check_string(const char *what, CK_UTF8CHAR_PTR value, CK_ULONG length); - -#define P11T_CHECK_DATE(what, value) \ - _P11T_BEGIN if(!_p11t_check_date((what), (value))) return STOP; _P11T_END - -int _p11t_check_date(const char *what, CK_DATE* value); - -#define P11T_CHECK_NOTE(what) - -/* ------------------------------------------------------------------- - * config.c - */ - -void p11t_config_parse(const char* filename); -void p11t_config_cleanup(void); - -/* ------------------------------------------------------------------- - * crypto.c - */ - -int p11t_crypto_test_encrypt (CK_SESSION_HANDLE session, CK_MECHANISM_TYPE mech); -int p11t_crypto_test_decrypt (CK_SESSION_HANDLE session, CK_MECHANISM_TYPE mech); -int p11t_crypto_test_sign (CK_SESSION_HANDLE session, CK_MECHANISM_TYPE mech); -int p11t_crypto_test_verify (CK_SESSION_HANDLE session, CK_MECHANISM_TYPE mech); - -/* ------------------------------------------------------------------- - * dsa.c - */ - -void p11t_dsa_tests(void); - -void p11t_dsa_test_public_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE handle); -void p11t_dsa_test_private_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE handle); - -/* ------------------------------------------------------------------- - * key.c - */ - -CK_OBJECT_HANDLE p11t_key_get_public(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key); - -CK_OBJECT_HANDLE p11t_key_get_private(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key); - -CK_MECHANISM_TYPE_PTR p11t_key_get_mechanisms(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key, CK_ULONG_PTR n_mechanisms); - -RSA* p11t_key_export_public_rsa(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key); -DSA* p11t_key_export_public_dsa(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key); - -CK_RV p11t_key_login_context_specific (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key); - -void p11t_key_tests(void); - -/* ------------------------------------------------------------------- - * msg.c - */ - -const char* p11t_msg_rv(CK_RV rv); -const char* p11t_msg_os(void); -const char* p11t_msg_openssl(void); - -void p11t_msg_va(const char *message, va_list va); -void p11t_msg_code(const char* code, const char *message, va_list va); -void p11t_msg_print(const char *message, ...); -void p11t_msg_fatal(const char *message, ...); -const char* p11t_msg_prefix(const char *prefix); - -#define p11t_msg_here() \ - (__func__ "() at " __FILE__ ":" __LINE__) - -/* ------------------------------------------------------------------- - * module.c - */ - -extern CK_FUNCTION_LIST_PTR p11t_module_funcs; - -void p11t_module_config(const char *name, const char *value); - -int p11t_module_load(const char *filename); -int p11t_module_unload(void); - -int p11t_module_initialize(void); -int p11t_module_finalize(void); - -/* ------------------------------------------------------------------- - * object.c - */ - -CK_OBJECT_HANDLE_PTR p11t_object_find(CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR attrs, - CK_ULONG n_attrs, CK_ULONG_PTR n_objects); - -int p11t_object_get(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, - CK_ATTRIBUTE_PTR attrs, CK_ULONG count); - -CK_OBJECT_HANDLE p11t_object_find_one(CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR attrs, - CK_ULONG n_attrs); - -void p11t_object_tests(void); - -/* ------------------------------------------------------------------- - * rsa.c - */ - -void p11t_rsa_tests (void); -void p11t_rsa_test_public_key (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE handle); -void p11t_rsa_test_private_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE handle); - -/* ------------------------------------------------------------------- - * session.c - */ - -CK_SESSION_HANDLE p11t_session_open(CK_SLOT_ID slot, int readwrite); -int p11t_session_login(CK_SESSION_HANDLE handle); -int p11t_session_logout(CK_SESSION_HANDLE handle); -int p11t_session_close(CK_SESSION_HANDLE handle); -int p11t_session_close_all(CK_SLOT_ID slot); -CK_UTF8CHAR_PTR p11t_session_get_pin(CK_SLOT_ID slot, CK_USER_TYPE user, CK_ULONG_PTR n_pin); - -void p11t_session_config(const char *name, const char *value); - -void p11t_session_tests(void); +typedef void (*P11TestsLogFunc) (int level, + const char *section, + const char *message); -/* ------------------------------------------------------------------- - * slot.c - */ +int p11_tests_get_unexpected (void); -extern CK_ULONG p11t_slot_count; -extern int p11t_slot_virtual; +void p11_tests_set_unexpected (int value); -void p11t_slot_tests(void); +int p11_tests_get_write_session (void); -void p11t_slot_cleanup(void); +void p11_tests_set_write_session (int value); -CK_SLOT_ID p11t_slot_get_id(int index); -CK_SLOT_INFO_PTR p11t_slot_get_info(CK_SLOT_ID slot); -CK_TOKEN_INFO_PTR p11t_slot_get_token_info(CK_SLOT_ID slot); +int p11_tests_get_verbose (void); -typedef void (*P11tSlotMechCallback)(CK_SLOT_ID slot, CK_MECHANISM_TYPE mech_type, - CK_MECHANISM_INFO_PTR mech_info); +void p11_tests_set_verbose (int value); -void p11t_slot_for_each_mech(CK_MECHANISM_TYPE mech_type, P11tSlotMechCallback callback); +int p11_tests_load_config (const char *config); -CK_MECHANISM_INFO_PTR p11t_slot_get_mech_info(CK_SLOT_ID slot, CK_MECHANISM_TYPE mech_type); +P11TestsLogFunc p11_tests_get_log_func (void); -/* ------------------------------------------------------------------ - * test-data.c - */ +void p11_tests_set_log_func (P11TestsLogFunc func); -#define P11T_BLOCK 10240 -extern const CK_BYTE p11t_test_data[]; -extern const CK_ULONG p11t_test_data_size; -extern const CK_ULONG p11t_test_data_bits; +void p11_tests_perform (CK_FUNCTION_LIST_PTR module); -#endif /* P11TESTST_H_ */ +#endif /* P11TESTS_H_ */ -- cgit v1.2.3