diff --git a/src/libopensc/opensc.h b/src/libopensc/opensc.h index cac8f69f..e9af28e8 100644 --- a/src/libopensc/opensc.h +++ b/src/libopensc/opensc.h @@ -804,6 +804,7 @@ int sc_file_set_type_attr(struct sc_file *file, const u8 *type_attr, size_t type_attr_len); void sc_format_path(const char *path_in, struct sc_path *path_out); +const char *sc_print_path(const sc_path_t *path_in); int sc_append_path(struct sc_path *dest, const struct sc_path *src); int sc_append_path_id(struct sc_path *dest, const u8 *id, size_t idlen); int sc_hex_to_bin(const char *in, u8 *out, size_t *outlen); diff --git a/src/libopensc/sc.c b/src/libopensc/sc.c index 55efc0df..b948369b 100644 --- a/src/libopensc/sc.c +++ b/src/libopensc/sc.c @@ -192,6 +192,20 @@ int sc_append_path_id(struct sc_path *dest, const u8 *id, size_t idlen) return 0; } +const char *sc_print_path(const sc_path_t *path) +{ + static char buffer[64]; + size_t n, len; + + buffer[0] = '\0'; + if ((len = path->len) >= sizeof(buffer)/2) + len = sizeof(buffer)/2; + for (n = 0; n < len; n++) + sprintf(buffer + 2*n, "%02x", path->value[n]); + + return buffer; +} + int sc_file_add_acl_entry(struct sc_file *file, unsigned int operation, unsigned int method, unsigned long key_ref) {