c.add :alternate_patina_color, Ncurses::COLOR_BLACK, Ncurses::COLOR_BLUE
     c.add :missing_message_color, Ncurses::COLOR_BLACK, Ncurses::COLOR_RED
     c.add :attachment_color, Ncurses::COLOR_CYAN, Ncurses::COLOR_BLACK
-    c.add :valid_cryptosig_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_BLACK, Ncurses::A_BOLD
-    c.add :invalid_cryptosig_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_RED, Ncurses::A_BOLD
+    c.add :cryptosig_valid_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_BLACK, Ncurses::A_BOLD
+    c.add :cryptosig_unknown_color, Ncurses::COLOR_CYAN, Ncurses::COLOR_BLACK
+    c.add :cryptosig_invalid_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_RED, Ncurses::A_BOLD
     c.add :quote_patina_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_BLACK
     c.add :sig_patina_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_BLACK
     c.add :quote_color, Ncurses::COLOR_YELLOW, Ncurses::COLOR_BLACK
 
       @lines = []
     end
 
-    def valid?; status == :valid end
-
     def status
-      return @status if @status
+      @status, @description = verify unless @status
+      @status
+    end
+
+    def description
+      @status, @description = verify unless @status
+      @description
+    end
+
+private
+
+    def verify
       payload = Tempfile.new "redwood.payload"
       signature = Tempfile.new "redwood.signature"
 
       #Redwood::log "got output: #{gpg_output.inspect}"
       @lines = gpg_output.split(/\n/)
 
-      @description =
-        if gpg_output =~ /^gpg: (.* signature from .*$)/
-          $1
-        else
-          "Unable to determine validity of cryptographic signature"
-        end
-
-      @status = ($? == 0 ? :valid : :invalid)
+      if gpg_output =~ /^gpg: (.* signature from .*$)/
+        $? == 0 ? [:valid, $1] : [:invalid, $1]
+      else
+        [:unknown, "Unable to determine validity of cryptographic signature"]
+      end
     end
   end
 
 
         [[[:sig_patina_color, "#{prefix}- (#{chunk.lines.length}-line signature)"]]] + chunk.lines.map { |line| [[:sig_color, "#{prefix}#{line}"]] }
       end
     when Message::CryptoSignature
-      color = chunk.valid? ? :valid_cryptosig_color : :invalid_cryptosig_color
+      color = 
+        case chunk.status
+          when :valid: :cryptosig_valid_color
+          when :invalid: :cryptosig_invalid_color
+          else :cryptosig_unknown_color
+        end
       case state
       when :closed
         [[[color, "#{prefix}+ #{chunk.description}"]]]