pkcs11: coding style

Signed-off-by: Viktor Tarasov <viktor.tarasov@gmail.com>
This commit is contained in:
Viktor Tarasov 2012-02-20 10:57:57 +01:00
parent 8f9bbbe780
commit c0072d16dd
1 changed files with 320 additions and 281 deletions

View File

@ -85,18 +85,22 @@
#define CKA_CERT_MD5_HASH (CKA_TRUST + 101)
static char *buf_spec(CK_VOID_PTR buf_addr, CK_ULONG buf_len)
static char *
buf_spec(CK_VOID_PTR buf_addr, CK_ULONG buf_len)
{
static char ret[64];
if (sizeof(CK_VOID_PTR) == 4) {
if (sizeof(CK_VOID_PTR) == 4)
sprintf(ret, "%08lx / %ld", (unsigned long) buf_addr, (CK_LONG) buf_len);
} else {
else
sprintf(ret, "%016lx / %ld", (unsigned long) buf_addr, (CK_LONG) buf_len);
}
return ret;
}
void print_enum(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
void
print_enum(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
{
enum_spec *spec = (enum_spec*)arg;
CK_ULONG i;
@ -111,19 +115,25 @@ void print_enum(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID
fprintf(f, "Value %lX not found for type %s\n", ctype, spec->name);
}
void print_boolean(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
void
print_boolean(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
{
CK_BYTE i = *((CK_BYTE *)value);
fprintf(f, i ? "True\n" : "False\n");
}
void print_generic(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
void
print_generic(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
{
CK_ULONG i;
if((CK_LONG)size != -1 && value != NULL) {
char hex[16*3+1], ascii[16+1];
char *hex_ptr = hex, *ascii_ptr = ascii;
int offset = 0;
memset(ascii, ' ', sizeof ascii);
ascii[sizeof ascii -1] = 0;
fprintf(f, "%s", buf_spec(value, size));
@ -149,11 +159,13 @@ void print_generic(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_V
*ascii_ptr = '.';
ascii_ptr++;
}
/* padd */
while (strlen(hex) < 3*16)
strcat(hex, " ");
fprintf(f, "\n %08X %s %s", offset, hex, ascii);
} else {
}
else {
if (value != NULL)
fprintf(f, "EMPTY");
else
@ -162,13 +174,16 @@ void print_generic(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_V
fprintf(f, "\n");
}
#ifdef ENABLE_OPENSSL
static void print_dn(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
static void
print_dn(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
{
print_generic(f, type, value, size, arg);
if(size && value) {
X509_NAME *name;
const unsigned char *tmp = value;
name = d2i_X509_NAME(NULL, &tmp, size);
if(name) {
BIO *bio = BIO_new(BIO_s_file());
@ -182,31 +197,37 @@ static void print_dn(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK
}
#endif
void print_print(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
void
print_print(FILE *f, CK_LONG type, CK_VOID_PTR value, CK_ULONG size, CK_VOID_PTR arg)
{
CK_ULONG i, j;
CK_BYTE c;
if((CK_LONG)size != -1) {
fprintf(f, "%s\n ", buf_spec(value, size));
for(i = 0; i < size; i += j) {
for(j = 0; ((i + j < size) && (j < 32)); j++) {
if (((j % 4) == 0) && (j != 0)) fprintf(f, " ");
if (((j % 4) == 0) && (j != 0))
fprintf(f, " ");
c = ((CK_BYTE *)value)[i+j];
fprintf(f, "%02X", c);
}
fprintf(f, "\n ");
for(j = 0; ((i + j < size) && (j < 32)); j++) {
if (((j % 4) == 0) && (j != 0)) fprintf(f, " ");
if (((j % 4) == 0) && (j != 0))
fprintf(f, " ");
c = ((CK_BYTE *)value)[i + j];
if((c > 32) && (c < 128)) {
if((c > 32) && (c < 128))
fprintf(f, " %c", c);
} else {
else
fprintf(f, " .");
}
}
if(j == 32) fprintf(f, "\n ");
if(j == 32)
fprintf(f, "\n ");
}
} else {
else {
fprintf(f, "EMPTY");
}
fprintf(f, "\n");
@ -713,35 +734,40 @@ type_spec ck_attribute_specs[] = {
CK_ULONG ck_attribute_num = sizeof(ck_attribute_specs)/sizeof(type_spec);
const char *lookup_enum_spec(enum_spec *spec, CK_ULONG value)
const char
lookup_enum_spec(enum_spec *spec, CK_ULONG value)
{
CK_ULONG i;
for(i = 0; i < spec->size; i++) {
if(spec->specs[i].type == value) {
for(i = 0; i < spec->size; i++)
if(spec->specs[i].type == value)
return spec->specs[i].name;
}
}
return NULL;
}
const char *lookup_enum(CK_ULONG type, CK_ULONG value)
const char *
lookup_enum(CK_ULONG type, CK_ULONG value)
{
CK_ULONG i;
for(i = 0; ck_types[i].type < ( sizeof(ck_types) / sizeof(enum_spec) ) ; i++) {
if(ck_types[i].type == type) {
for(i = 0; ck_types[i].type < ( sizeof(ck_types) / sizeof(enum_spec) ) ; i++)
if(ck_types[i].type == type)
return lookup_enum_spec(&(ck_types[i]), value);
}
}
return NULL;
}
void show_error( FILE *f, char *str, CK_RV rc )
void
show_error( FILE *f, char *str, CK_RV rc )
{
fprintf(f, "%s returned: %ld %s", str, (unsigned long) rc, lookup_enum ( RV_T, rc ));
fprintf(f, "\n");
}
void print_ck_info(FILE *f, CK_INFO *info)
void
print_ck_info(FILE *f, CK_INFO *info)
{
fprintf(f, " cryptokiVersion: %d.%d\n", info->cryptokiVersion.major, info->cryptokiVersion.minor );
fprintf(f, " manufacturerID: '%32.32s'\n", info->manufacturerID );
@ -750,19 +776,24 @@ void print_ck_info(FILE *f, CK_INFO *info)
fprintf(f, " libraryVersion: %d.%d\n", info->libraryVersion.major, info->libraryVersion.minor );
}
void print_slot_list(FILE *f, CK_SLOT_ID_PTR pSlotList, CK_ULONG ulCount)
void
print_slot_list(FILE *f, CK_SLOT_ID_PTR pSlotList, CK_ULONG ulCount)
{
CK_ULONG i;
if(pSlotList) {
for (i = 0; i < ulCount; i++) {
for (i = 0; i < ulCount; i++)
fprintf(f, "Slot %ld\n", pSlotList[i]);
}
} else {
else {
fprintf(f, "Count is %ld\n", ulCount);
}
}
void print_slot_info(FILE *f, CK_SLOT_INFO *info)
void
print_slot_info(FILE *f, CK_SLOT_INFO *info)
{
size_t i;
enum_specs ck_flags[] = {
@ -777,14 +808,15 @@ void print_slot_info(FILE *f, CK_SLOT_INFO *info)
fprintf(f, " hardwareVersion: %d.%d\n", info->hardwareVersion.major, info->hardwareVersion.minor );
fprintf(f, " firmwareVersion: %d.%d\n", info->firmwareVersion.major, info->firmwareVersion.minor );
fprintf(f, " flags: %0lx\n", info->flags );
for(i = 0; i < sizeof (ck_flags) / sizeof (*ck_flags); i++) {
if(info->flags & ck_flags[i].type) {
for(i = 0; i < sizeof (ck_flags) / sizeof (*ck_flags); i++)
if(info->flags & ck_flags[i].type)
fprintf(f, " %s\n", ck_flags[i].name);
}
}
}
void print_token_info(FILE *f, CK_TOKEN_INFO *info)
void
print_token_info(FILE *f, CK_TOKEN_INFO *info)
{
size_t i;
enum_specs ck_flags[] = {
@ -826,45 +858,46 @@ void print_token_info(FILE *f, CK_TOKEN_INFO *info)
fprintf(f, " firmwareVersion: %d.%d\n", info->firmwareVersion.major, info->firmwareVersion.minor );
fprintf(f, " time: '%16.16s'\n", info->utcTime );
fprintf(f, " flags: %0lx\n", info->flags );
for(i = 0; i < sizeof (ck_flags) / sizeof (*ck_flags); i++) {
if(info->flags & ck_flags[i].type) {
for(i = 0; i < sizeof (ck_flags) / sizeof (*ck_flags); i++)
if(info->flags & ck_flags[i].type)
fprintf(f, " %s\n", ck_flags[i].name);
}
}
}
void print_mech_list(FILE *f, CK_MECHANISM_TYPE_PTR pMechanismList,
CK_ULONG ulMechCount)
void
print_mech_list(FILE *f, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG ulMechCount)
{
CK_ULONG imech;
if(pMechanismList) {
for (imech = 0; imech < ulMechCount; imech++) {
const char *name = lookup_enum(MEC_T, pMechanismList[imech]);
if (name) {
if (name)
fprintf(f, "%30s \n", name);
} else {
else
fprintf(f, " Unknown Mechanism (%08lx) \n", pMechanismList[imech]);
}
}
} else {
else {
fprintf(f, "Count is %ld\n", ulMechCount);
}
}
void print_mech_info(FILE *f, CK_MECHANISM_TYPE type,
CK_MECHANISM_INFO_PTR minfo)
void
print_mech_info(FILE *f, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR minfo)
{
const char *name = lookup_enum(MEC_T, type);
CK_ULONG known_flags = CKF_HW | CKF_ENCRYPT | CKF_DECRYPT | CKF_DIGEST |
CKF_SIGN | CKF_SIGN_RECOVER | CKF_VERIFY | CKF_VERIFY_RECOVER |
CKF_GENERATE|CKF_GENERATE_KEY_PAIR|CKF_WRAP|CKF_UNWRAP|
CKF_DERIVE;
CKF_GENERATE | CKF_GENERATE_KEY_PAIR | CKF_WRAP | CKF_UNWRAP | CKF_DERIVE;
if (name) {
if (name)
fprintf(f, "%s : ", name);
} else {
else
fprintf(f, "Unknown Mechanism (%08lx) : ", type);
}
fprintf(f, "min:%lu max:%lu flags:0x%lX ",
(unsigned long) minfo->ulMinKeySize,
(unsigned long) minfo->ulMaxKeySize, minfo->flags);
@ -885,8 +918,9 @@ void print_mech_info(FILE *f, CK_MECHANISM_TYPE type,
(minfo->flags & ~known_flags) ? "Unknown " : "");
}
void print_attribute_list(FILE *f, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount)
void
print_attribute_list(FILE *f, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount)
{
CK_ULONG j, k;
int found;
@ -915,11 +949,13 @@ void print_attribute_list(FILE *f, CK_ATTRIBUTE_PTR pTemplate,
}
}
void print_attribute_list_req(FILE *f, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount)
void
print_attribute_list_req(FILE *f, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount)
{
CK_ULONG j, k;
int found;
for(j = 0; j < ulCount ; j++) {
found = 0;
for(k = 0; k < ck_attribute_num; k++) {
@ -930,6 +966,7 @@ void print_attribute_list_req(FILE *f, CK_ATTRIBUTE_PTR pTemplate,
k = ck_attribute_num;
}
}
if (!found) {
fprintf(f, " CKA_? (0x%08lx) ", pTemplate[j].type);
fprintf(f, "%s\n", buf_spec(pTemplate[j].pValue, pTemplate[j].ulValueLen));
@ -937,7 +974,9 @@ void print_attribute_list_req(FILE *f, CK_ATTRIBUTE_PTR pTemplate,
}
}
void print_session_info(FILE *f, CK_SESSION_INFO *info)
void
print_session_info(FILE *f, CK_SESSION_INFO *info)
{
size_t i;
enum_specs ck_flags[] = {
@ -948,10 +987,10 @@ void print_session_info(FILE *f, CK_SESSION_INFO *info)
fprintf(f, " slotID: %ld\n", info->slotID );
fprintf(f, " state: '%32.32s'\n", lookup_enum(STA_T, info->state));
fprintf(f, " flags: %0lx\n", info->flags );
for(i = 0; i < sizeof (ck_flags) / sizeof (*ck_flags); i++) {
if(info->flags & ck_flags[i].type) {
if(info->flags & ck_flags[i].type)
fprintf(f, " %s\n", ck_flags[i].name);
}
}
fprintf(f, " ulDeviceError: %0lx\n", info->ulDeviceError );
}