From b99f6998626bff678ac74fc4a05b31e450aa5e1f Mon Sep 17 00:00:00 2001 From: David Rose Date: Tue, 17 Feb 2009 18:55:38 +0000 Subject: [PATCH] output signature too --- dtool/src/prc/configPage.cxx | 27 +++++++++++++++++++++++++++ dtool/src/prc/configPage.h | 1 + dtool/src/prc/configPageManager.cxx | 16 ++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/dtool/src/prc/configPage.cxx b/dtool/src/prc/configPage.cxx index 568ac145a2..7eccee0dde 100644 --- a/dtool/src/prc/configPage.cxx +++ b/dtool/src/prc/configPage.cxx @@ -363,6 +363,33 @@ output(ostream &out) const { << " declarations."; } +//////////////////////////////////////////////////////////////////// +// Function: ConfigPage::output_brief_signature +// Access: Published +// Description: Outputs the first few hex digits of the signature. +//////////////////////////////////////////////////////////////////// +void ConfigPage:: +output_brief_signature(ostream &out) const { + size_t num_bytes = min(_signature.size(), (size_t)8); + for (size_t p = 0; p < num_bytes; ++p) { + unsigned int byte = _signature[p]; + + unsigned int hi = (byte >> 4) & 0xf; + if (hi >= 10) { + out << (char)((hi - 10) + 'a'); + } else { + out << (char)(hi + '0'); + } + + unsigned int lo = byte & 0xf; + if (lo >= 10) { + out << (char)((lo - 10) + 'a'); + } else { + out << (char)(lo + '0'); + } + } +} + //////////////////////////////////////////////////////////////////// // Function: ConfigPage::write // Access: Published diff --git a/dtool/src/prc/configPage.h b/dtool/src/prc/configPage.h index a1e5dff7de..c0b6a117b1 100644 --- a/dtool/src/prc/configPage.h +++ b/dtool/src/prc/configPage.h @@ -67,6 +67,7 @@ PUBLISHED: bool is_variable_used(int n) const; void output(ostream &out) const; + void output_brief_signature(ostream &out) const; void write(ostream &out) const; private: diff --git a/dtool/src/prc/configPageManager.cxx b/dtool/src/prc/configPageManager.cxx index 81df13c45c..d313597885 100644 --- a/dtool/src/prc/configPageManager.cxx +++ b/dtool/src/prc/configPageManager.cxx @@ -432,9 +432,13 @@ write(ostream &out) const { const ConfigPage *page = (*pi); out << " " << page->get_name(); if (page->get_trust_level() > 0) { - out << " (signed " << page->get_trust_level() << ")\n"; + out << " (signed " << page->get_trust_level() << ": "; + page->output_brief_signature(out); + out << ")\n"; } else if (!page->get_signature().empty()) { - out << " (invalid signature)\n"; + out << " (invalid signature: "; + page->output_brief_signature(out); + out << ")\n"; } else { out << "\n"; } @@ -445,9 +449,13 @@ write(ostream &out) const { const ConfigPage *page = (*pi); out << " " << page->get_name(); if (page->get_trust_level() > 0) { - out << " (signed " << page->get_trust_level() << ")\n"; + out << " (signed " << page->get_trust_level() << ": "; + page->output_brief_signature(out); + out << ")\n"; } else if (!page->get_signature().empty()) { - out << " (invalid signature)\n"; + out << " (invalid signature: "; + page->output_brief_signature(out); + out << ")\n"; } else { out << "\n"; }