static void print_cert_info(const struct sc_pkcs15_object *obj) { struct sc_pkcs15_cert_info *cert_info = (struct sc_pkcs15_cert_info *) obj->data; struct sc_pkcs15_cert *cert_parsed = NULL; char guid[39]; int rv; printf("X.509 Certificate [%s]\n", obj->label); print_common_flags(obj); printf("\tAuthority : %s\n", cert_info->authority ? "yes" : "no"); printf("\tPath : %s\n", sc_print_path(&cert_info->path)); printf("\tID : %s\n", sc_pkcs15_print_id(&cert_info->id)); rv = sc_pkcs15_get_guid(p15card, obj, guid, sizeof(guid)); if (!rv) printf("\tGUID : %s\n", guid); print_access_rules(obj->access_rules, SC_PKCS15_MAX_ACCESS_RULES); rv = sc_pkcs15_read_certificate(p15card, cert_info, &cert_parsed); if (rv >= 0 && cert_parsed) { printf("\tEncoded serial : %02X %02X ", *(cert_parsed->serial), *(cert_parsed->serial + 1)); util_hex_dump(stdout, cert_parsed->serial + 2, cert_parsed->serial_len - 2, ""); printf("\n"); sc_pkcs15_free_certificate(cert_parsed); } }
static void print_prkey_info(const struct sc_pkcs15_object *obj) { unsigned int i; struct sc_pkcs15_prkey_info *prkey = (struct sc_pkcs15_prkey_info *) obj->data; const char *types[] = { "", "RSA", "DSA", "GOSTR3410", "EC", "", "", "" }; const char *usages[] = { "encrypt", "decrypt", "sign", "signRecover", "wrap", "unwrap", "verify", "verifyRecover", "derive", "nonRepudiation" }; const size_t usage_count = NELEMENTS(usages); const char *access_flags[] = { "sensitive", "extract", "alwaysSensitive", "neverExtract", "local" }; const unsigned int af_count = NELEMENTS(access_flags); char guid[39]; printf("Private %s Key [%s]\n", types[7 & obj->type], obj->label); print_common_flags(obj); printf("\tUsage : [0x%X]", prkey->usage); for (i = 0; i < usage_count; i++) if (prkey->usage & (1 << i)) { printf(", %s", usages[i]); } printf("\n"); printf("\tAccess Flags : [0x%X]", prkey->access_flags); for (i = 0; i < af_count; i++) if (prkey->access_flags & (1 << i)) printf(", %s", access_flags[i]); printf("\n"); print_access_rules(obj->access_rules, SC_PKCS15_MAX_ACCESS_RULES); if (prkey->modulus_length) printf("\tModLength : %lu\n", (unsigned long)prkey->modulus_length); else printf("\tFieldLength : %lu\n", (unsigned long)prkey->field_length); printf("\tKey ref : %d (0x%X)\n", prkey->key_reference, prkey->key_reference); printf("\tNative : %s\n", prkey->native ? "yes" : "no"); if (prkey->path.len || prkey->path.aid.len) printf("\tPath : %s\n", sc_print_path(&prkey->path)); if (obj->auth_id.len != 0) printf("\tAuth ID : %s\n", sc_pkcs15_print_id(&obj->auth_id)); printf("\tID : %s\n", sc_pkcs15_print_id(&prkey->id)); if (!sc_pkcs15_get_guid(p15card, obj, guid, sizeof(guid))) printf("\tGUID : %s\n", guid); }
static void print_iocb(struct tcb *tcp, const struct iocb *cb) { enum iocb_sub sub = print_iocb_header(tcp, cb); switch (sub) { case SUB_COMMON: if (cb->aio_lio_opcode == 1 && iocb_is_valid(cb)) { tprints(", str="); printstr(tcp, (unsigned long) cb->aio_buf, (unsigned long) cb->aio_nbytes); } else { tprintf(", buf=%#" PRIx64, (uint64_t) cb->aio_buf); } tprintf(", nbytes=%" PRIu64 ", offset=%" PRId64, (uint64_t) cb->aio_nbytes, (int64_t) cb->aio_offset); print_common_flags(tcp, cb); break; case SUB_VECTOR: if (iocb_is_valid(cb)) { tprints(", iovec="); tprint_iov(tcp, cb->aio_nbytes, cb->aio_buf, cb->aio_lio_opcode == 8 ? IOV_DECODE_STR : IOV_DECODE_ADDR); } else { tprintf(", buf=%#" PRIx64 ", nbytes=%" PRIu64, (uint64_t) cb->aio_buf, (uint64_t) cb->aio_nbytes); } tprintf(", offset=%" PRId64, (int64_t) cb->aio_offset); print_common_flags(tcp, cb); break; case SUB_NONE: break; } }
static void print_pubkey_info(const struct sc_pkcs15_object *obj) { unsigned int i; const struct sc_pkcs15_pubkey_info *pubkey = (const struct sc_pkcs15_pubkey_info *) obj->data; const char *types[] = { "", "RSA", "DSA", "GOSTR3410" }; const char *usages[] = { "encrypt", "decrypt", "sign", "signRecover", "wrap", "unwrap", "verify", "verifyRecover", "derive", "nonRepudiation" }; const unsigned int usage_count = NELEMENTS(usages); const char *access_flags[] = { "sensitive", "extract", "alwaysSensitive", "neverExtract", "local" }; const unsigned int af_count = NELEMENTS(access_flags); printf("Public %s Key [%s]\n", types[3 & obj->type], obj->label); print_common_flags(obj); printf("\tUsage : [0x%X]", pubkey->usage); for (i = 0; i < usage_count; i++) if (pubkey->usage & (1 << i)) { printf(", %s", usages[i]); } printf("\n"); printf("\tAccess Flags : [0x%X]", pubkey->access_flags); for (i = 0; i < af_count; i++) { if (pubkey->access_flags & (1 << i)) { printf(", %s", access_flags[i]); } } print_access_rules(obj->access_rules, SC_PKCS15_MAX_ACCESS_RULES); printf("\n"); printf("\tModLength : %lu\n", (unsigned long)pubkey->modulus_length); printf("\tKey ref : %d\n", pubkey->key_reference); printf("\tNative : %s\n", pubkey->native ? "yes" : "no"); printf("\tPath : %s\n", sc_print_path(&pubkey->path)); if (obj->auth_id.len != 0) printf("\tAuth ID : %s\n", sc_pkcs15_print_id(&obj->auth_id)); printf("\tID : %s\n", sc_pkcs15_print_id(&pubkey->id)); }
int sys_io_submit(struct tcb *tcp) { long nr; if (entering(tcp)) { tprintf("%lu, %ld, ", tcp->u_arg[0], tcp->u_arg[1]); nr = tcp->u_arg[1]; /* and if nr is negative? */ if (nr == 0) tprints("{}"); else { #ifdef HAVE_LIBAIO_H long i; struct iocb *iocbp, **iocbs = (void *)tcp->u_arg[2]; for (i = 0; i < nr; i++, iocbs++) { enum iocb_sub sub; struct iocb iocb; if (i == 0) tprints("{"); else tprints(", "); if (umove(tcp, (unsigned long)iocbs, &iocbp) || umove(tcp, (unsigned long)iocbp, &iocb)) { tprints("{...}"); continue; } tprints("{"); if (iocb.data) tprintf("data:%p, ", iocb.data); if (iocb.key) tprintf("key:%u, ", iocb.key); tprintf("%s, ", iocb_cmd_lookup(iocb.aio_lio_opcode, &sub)); if (iocb.aio_reqprio) tprintf("reqprio:%d, ", iocb.aio_reqprio); tprintf("filedes:%d", iocb.aio_fildes); switch (sub) { case SUB_COMMON: #if HAVE_DECL_IO_CMD_PWRITE if (iocb.aio_lio_opcode == IO_CMD_PWRITE) { tprints(", str:"); printstr(tcp, (unsigned long)iocb.u.c.buf, iocb.u.c.nbytes); } else #endif tprintf(", buf:%p", iocb.u.c.buf); tprintf(", nbytes:%lu, offset:%lld", iocb.u.c.nbytes, iocb.u.c.offset); print_common_flags(&iocb); break; case SUB_VECTOR: tprintf(", %lld", iocb.u.v.offset); print_common_flags(&iocb); tprints(", "); tprint_iov(tcp, iocb.u.v.nr, (unsigned long)iocb.u.v.vec, #if HAVE_DECL_IO_CMD_PWRITEV iocb.aio_lio_opcode == IO_CMD_PWRITEV #else 0 #endif ); break; case SUB_POLL: tprintf(", %x", iocb.u.poll.events); break; case SUB_NONE: break; } tprints("}"); } if (i) tprints("}"); #else #warning "libaio.h is not available => no io_submit decoding" tprintf("%#lx", tcp->u_arg[2]); #endif } } return 0; }