Commit c0c2d5c
Changed files (3)
lib
saml
kit
lib/saml/kit/cli/decode.rb
@@ -0,0 +1,38 @@
+module Saml
+ module Kit
+ module Cli
+ class Decode < Thor
+ desc "redirect uri", "Decodes the uri using the HTTP Redirect binding"
+ def redirect(uri)
+ binding = Saml::Kit::Bindings::HttpRedirect.new(location: '')
+ uri = URI.parse(uri)
+ query_params = Hash[uri.query.split('&').map { |x| x.split('=', 2) }]
+ document = binding.deserialize(query_params)
+
+ 2.times { say "" }
+ say_status :success, "Decoded #{document.class}"
+ print_table [
+ ["ID", "Issuer", "Version", "Issue instant"],
+ [document.id, document.issuer, document.version, document.issue_instant.iso8601 ]
+ ]
+ say ""
+ say document.to_xml(pretty: true), :green
+ end
+
+ desc "post saml", "Decodes the SAMLRequest/SAMLResponse using the HTTP Post binding"
+ def post(saml_request)
+ binding = Saml::Kit::Bindings::HttpPost.new(location: '')
+ document = binding.deserialize('SAMLRequest' => saml_request)
+ 2.times { say "" }
+ say_status :success, "Decoded #{document.class}"
+ print_table [
+ ["ID", "Issuer", "Version", "Issue instant"],
+ [document.id, document.issuer, document.version, document.issue_instant.iso8601 ]
+ ]
+ say ""
+ say document.to_xml(pretty: true), :green
+ end
+ end
+ end
+ end
+end
lib/saml/kit/cli/generate.rb
@@ -0,0 +1,34 @@
+module Saml
+ module Kit
+ module Cli
+ class Generate < Thor
+ desc "keypair", "Create a key pair using a self signed certificate."
+ method_option :format, default: "pem", required: false, enum: ["pem", "env"]
+ method_option :passphrase, default: nil, required: false
+ def keypair
+ passphrase = options[:passphrase]
+ format = options[:format]
+ generator = ::Xml::Kit::SelfSignedCertificate.new
+ certificate, private_key = generator.create(passphrase: passphrase)
+
+ if "pem" == format
+ say "** BEGIN PEM Format **", :green
+ print certificate
+ say private_key
+ say "***********************", :green
+ else
+ say "** BEGIN ENV Format **", :green
+ say "X509_CERTIFICATE=" + certificate.inspect
+ say
+ say "PRIVATE_KEY=" + private_key.inspect
+ say "***********************", :green
+ end
+
+ say
+ say "Private Key Passphrase:", :green
+ say passphrase.inspect
+ end
+ end
+ end
+ end
+end
lib/saml/kit/cli.rb
@@ -1,72 +1,13 @@
require "saml/kit"
-require "saml/kit/cli/version"
require "thor"
+require "saml/kit/cli/version"
+require "saml/kit/cli/decode"
+require "saml/kit/cli/generate"
+
module Saml
module Kit
module Cli
- class Decode < Thor
- desc "redirect uri", "Decodes the uri using the HTTP Redirect binding"
- def redirect(uri)
- binding = Saml::Kit::Bindings::HttpRedirect.new(location: '')
- uri = URI.parse(uri)
- query_params = Hash[uri.query.split('&').map { |x| x.split('=', 2) }]
- document = binding.deserialize(query_params)
-
- 2.times { say "" }
- say_status :success, "Decoded #{document.class}"
- print_table [
- ["ID", "Issuer", "Version", "Issue instant"],
- [document.id, document.issuer, document.version, document.issue_instant.iso8601 ]
- ]
- say ""
- say document.to_xml(pretty: true), :green
- end
-
- desc "post saml", "Decodes the SAMLRequest/SAMLResponse using the HTTP Post binding"
- def post(saml_request)
- binding = Saml::Kit::Bindings::HttpPost.new(location: '')
- document = binding.deserialize('SAMLRequest' => saml_request)
- 2.times { say "" }
- say_status :success, "Decoded #{document.class}"
- print_table [
- ["ID", "Issuer", "Version", "Issue instant"],
- [document.id, document.issuer, document.version, document.issue_instant.iso8601 ]
- ]
- say ""
- say document.to_xml(pretty: true), :green
- end
- end
-
- class Generate < Thor
- desc "keypair", "Create a key pair using a self signed certificate."
- method_option :format, default: "pem", required: false, enum: ["pem", "env"]
- method_option :passphrase, default: nil, required: false
- def keypair
- passphrase = options[:passphrase]
- format = options[:format]
- generator = ::Xml::Kit::SelfSignedCertificate.new
- certificate, private_key = generator.create(passphrase: passphrase)
-
- if "pem" == format
- say "** BEGIN PEM Format **", :green
- print certificate
- say private_key
- say "***********************", :green
- else
- say "** BEGIN ENV Format **", :green
- say "X509_CERTIFICATE=" + certificate.inspect
- say
- say "PRIVATE_KEY=" + private_key.inspect
- say "***********************", :green
- end
-
- say
- say "Private Key Passphrase:", :green
- say passphrase.inspect
- end
- end
-
class Application < Thor
desc "decode SUBCOMMAND ...ARGS", "decode SAMLRequest/SAMLResponse."
subcommand "decode", Decode