diff options
| -rw-r--r-- | include/misc.h | 3 | ||||
| -rw-r--r-- | include/stick10_commands.h | 2 | ||||
| -rw-r--r-- | misc.cc | 23 | 
3 files changed, 16 insertions, 12 deletions
| diff --git a/include/misc.h b/include/misc.h index 5158de0..9e4659d 100644 --- a/include/misc.h +++ b/include/misc.h @@ -44,7 +44,8 @@ typename T::CommandPayload get_payload(){          CMDTYPE::CommandTransaction::run(stick, p);      } -    std::string hexdump(const char *p, size_t size, bool print_header=true); +    std::string hexdump(const char *p, size_t size, bool print_header=true, bool print_ascii=true, +        bool print_empty=true);      uint32_t stm_crc32(const uint8_t *data, size_t size);      std::vector<uint8_t> hex_string_to_byte(const char* hexString);  } diff --git a/include/stick10_commands.h b/include/stick10_commands.h index 9b72e92..fb362fb 100644 --- a/include/stick10_commands.h +++ b/include/stick10_commands.h @@ -332,7 +332,7 @@ class GetStatus : Command<CommandID::GET_STATUS> {      std::string get_card_serial_hex() const {          return ::nitrokey::misc::hexdump((const char *)(card_serial), -                sizeof card_serial, false); +                sizeof card_serial, false, false, false);      }      std::string dissect() const { @@ -36,7 +36,8 @@ std::vector<uint8_t> hex_string_to_byte(const char* hexString){  };  #include <cctype> -std::string hexdump(const char *p, size_t size, bool print_header) { +std::string hexdump(const char *p, size_t size, bool print_header, +        bool print_ascii, bool print_empty) {    std::stringstream out;    char formatbuf[128];    const char *pstart = p; @@ -53,18 +54,20 @@ std::string hexdump(const char *p, size_t size, bool print_header) {          snprintf(formatbuf, 128, "%02x ", uint8_t(*p));          out << formatbuf;        } else { -        out << "-- "; +          if(print_empty) +            out << "-- ";        }      } -    out << "\t"; - -    for (const char *le = pp + 16; pp < le && pp < pend; pp++) { -      if (std::isgraph(*pp)) -        out << uint8_t(*pp); -      else -        out << '.'; -    } +      if(print_ascii){ +        out << "\t"; +        for (const char *le = pp + 16; pp < le && pp < pend; pp++) { +          if (std::isgraph(*pp)) +            out << uint8_t(*pp); +          else +            out << '.'; +        } +      }      out << std::endl;    }    return out.str(); | 
