Commit 5a7e864

mo <mo.khan@gmail.com>
2018-02-18 02:38:33
print signature and cert details.
1 parent 8dfdaa1
Changed files (1)
lib
saml
kit
lib/saml/kit/cli/report.rb
@@ -10,21 +10,17 @@ module Saml
 
         def print(shell)
           shell.say_status :success, "Decoded #{document.send(:name)}"
-          shell.print_table [
-            ['ID', document.id],
-            ['Issuer', document.issuer],
-            ['Version', document.version],
-            ['Issue Instant', document.issue_instant.iso8601],
-            ['Type', document.send(:name)],
-            ['Valid', document.valid?],
-            ['Signed?', document.signed?],
-            ['Trusted?', document.trusted?],
-          ]
-          document.errors.full_messages.each do |error|
-            shell.say_status :error, error, :red
+          shell.print_table build_table_for(document)
+          shell.say ""
+          if document.signature.present? && document.signature.certificate.present?
+            shell.say(document.signature.certificate.x509.to_text)
           end
           shell.say ""
           shell.say document.to_xml(pretty: true), :green
+          shell.say ""
+          document.errors.full_messages.each do |error|
+            shell.say_status :error, error, :red
+          end
         end
 
         private
@@ -36,6 +32,33 @@ module Saml
             text
           end
         end
+
+        def build_table_for(document)
+          table = [
+            ['ID', document.id],
+            ['Issuer', document.issuer],
+            ['Version', document.version],
+            ['Issue Instant', document.issue_instant.iso8601],
+            ['Type', document.send(:name)],
+            ['Valid', document.valid?],
+            ['Signed?', !!document.signed?],
+            ['Trusted?', !!document.trusted?],
+          ]
+          case document
+          when Saml::Kit::AuthenticationRequest
+            table.push(['ACS', document.assertion_consumer_service_url])
+            table.push(['NameId Format', document.name_id_format])
+          end
+          if document.signature.present?
+            table.push(['Digest Value', document.signature.digest_value])
+            table.push(['Digest Method', document.signature.digest_method])
+            table.push(['Signature Value', truncate(document.signature.signature_value)])
+            table.push(['Signature Method', document.signature.signature_method])
+            table.push(['Canonicalization Method', document.signature.canonicalization_method])
+            table.push(['Certificate', document.signature.certificate.x509.to_text])
+          end
+          table
+        end
       end
     end
   end