#include "p11-tests.h" #include #include int p11t_check_fail(const char *message, ...) { va_list va; va_start(va, message); p11t_msg_va(message, va); va_end(va); return 0; } int p11t_check_returns(const char *message, CK_RV have, CK_RV want) { if(have != want) { p11t_msg_print("%s: expected %s but got %s", message, p11t_msg_rv(want), p11t_msg_rv(have)); return 0; } return 1; } int p11t_check_padded_len(const char *message, const CK_UTF8CHAR_PTR padded, CK_ULONG length) { CK_ULONG i; for(i = 0; i < length; ++i) { if(!isprint(padded[i])) { p11t_msg_print("%s: non printable character: %d", message, padded[i]); return 0; } if(!padded[i]) { p11t_msg_print("%s: not blank padded", message); return 0; } } return 1; } int p11t_check_ulong(const char *message, CK_ULONG have, CK_ULONG want) { if(have != want) { p11t_msg_print("%s: expected 0x%08x but have 0x%08x", message, want, have); return 0; } return 1; } int p11t_check_bool(const char *message, CK_BBOOL value) { if(value != CK_FALSE && value != CK_TRUE) { p11t_msg_print("%s: expected CK_TRUE or CK_FALSE but got 0x%02x", message, (int)value); return 0; } return 1; } int p11t_check_string(const char *message, CK_UTF8CHAR_PTR value, CK_ULONG length) { CK_ULONG i; for(i = 0; i < length; ++i) { if(!value[i]) { p11t_msg_print("%s: is null terminated", message); return 0; } } return 1; } int p11t_check_mask(const char *message, CK_ULONG flags, CK_ULONG mask) { if((flags & ~mask) != 0) { p11t_msg_print("%s: extra flags outside of mask: 0x%08x", message, (flags & ~mask)); return 0; } return 1; } int p11t_check_flag(const char *message, CK_ULONG flags, CK_ULONG flag) { if((flags & flag) != flag) { p11t_msg_print("%s: flag 0x%08x should be set in: 0x%08x", message, flag, flags); return 0; } return 1; } int p11t_check_nflag(const char *message, CK_ULONG flags, CK_ULONG nflag) { if((flags & nflag) != 0) { p11t_msg_print("%s: flag 0x%08x should not be set in: 0x%08x", message, nflag, flags); return 0; } return 1; }