/* * COPYRIGHT (c) International Business Machines Corp. 2001-2017 * * This program is provided under the terms of the Common Public License, * version 1.0 (CPL-1.0). Any use, reproduction or distribution for this * software constitutes recipient's acceptance of CPL-1.0 terms which can be * found in the file LICENSE file or at * https://opensource.org/licenses/cpl1.0.php */ #ifndef _P11UTIL_H_ #define _P11UTIL_H_ #include "pkcs11types.h" // // p11_get_ckr - return textual interpretation of a CKR_ error code // @rc is the CKR_.. error // char *p11_get_ckr(CK_RV rc); // // p11_get_ckm - return textual interpretation of a CKM_ mechanism code // @rc is the CKM_.. as a string // char *p11_get_ckm(CK_ULONG); // is_attribute_defined() // // determine whether the specified attribute is defined by Cryptoki // CK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE type); // Allocates memory on *dst and puts hex dump from ptr // with len bytes. // *dst must be freed by the caller char *p11_ahex_dump(char **dst, CK_BYTE_PTR ptr, CK_ULONG len); /* p11_bigint_trim() - trim a big integer. Returns pointer that is * contained within 'in' + '*size' that represents * the same number, but without leading zeros. * @in points to a sequence of bytes forming a big integer, * unsigned, right-aligned and big-endian * @size points to the size of @in on input, and the minimum * size that can represent it on output */ CK_BYTE_PTR p11_bigint_trim(CK_BYTE_PTR in, CK_ULONG_PTR size); /* p11_attribute_trim() - trim a PKCS#11 CK_ATTRIBUTE in place, * using memmove() to move the data and adjusting * ulValueLen. The resulting "pValue" pointer stays the * same so that the caller can free() it normally * @attr is the pointer to the CK_ATTRIBUTE to be trimmed */ void p11_attribute_trim(CK_ATTRIBUTE *attr); #endif // #ifndef _P11UTIL_H_