Commit 8f9a2b3

mo <mo.khan@gmail.com>
2017-11-17 22:34:30
embed http-redirect serialization logic in url builder.
1 parent 397009c
Changed files (2)
lib/saml/kit/content.rb
@@ -1,10 +1,6 @@
 module Saml
   module Kit
     class Content
-      def self.serialize(xml, compress: false)
-        compress ? encode(deflate(xml)) : encode(xml)
-      end
-
       def self.deserialize(xml)
         decoded = decode(xml)
         begin
lib/saml/kit/url_builder.rb
@@ -20,13 +20,26 @@ module Saml
 
       def canonicalize(saml_document, relay_state)
         {
-          saml_document.query_string_parameter => Content.serialize(saml_document.to_xml, compress: true),
+          saml_document.query_string_parameter => serialize(saml_document.to_xml),
           'RelayState' => relay_state,
           'SigAlg' => Saml::Kit::Namespaces::SHA256,
         }.map do |(key, value)|
           value.present? ? "#{key}=#{CGI.escape(value)}" : nil
         end.compact.join('&')
       end
+
+      def serialize(value)
+        encode(deflate(value))
+      end
+
+      # drop header and checksum as per spec.
+      def deflate(value, level: Zlib::BEST_COMPRESSION)
+        Zlib::Deflate.deflate(value, level)[2..-5]
+      end
+
+      def encode(value)
+        Base64.strict_encode64(value)
+      end
     end
   end
 end