@@ -107,7 +107,6 @@ def uuid
107107 #</Signature>
108108 def sign_document ( private_key , certificate , signature_method = RSA_SHA1 , digest_method = SHA1 )
109109 noko = Nokogiri . parse ( self . to_s )
110- canon_doc = noko . canonicalize ( canon_algorithm ( C14N ) )
111110
112111 signature_element = REXML ::Element . new ( "ds:Signature" ) . add_namespace ( 'ds' , DSIG )
113112 signed_info_element = signature_element . add_element ( "ds:SignedInfo" )
@@ -120,10 +119,14 @@ def sign_document(private_key, certificate, signature_method = RSA_SHA1, digest_
120119 # Add Transforms
121120 transforms_element = reference_element . add_element ( "ds:Transforms" )
122121 transforms_element . add_element ( "ds:Transform" , { "Algorithm" => ENVELOPED_SIG } )
123- transforms_element . add_element ( "ds:Transform" , { "Algorithm" => C14N } )
124- transforms_element . add_element ( "ds:InclusiveNamespaces" , { "xmlns" => C14N , "PrefixList" => INC_PREFIX_LIST } )
125-
122+ #transforms_element.add_element("ds:Transform", {"Algorithm" => C14N})
123+ #transforms_element.add_element("ds:InclusiveNamespaces", {"xmlns" => C14N, "PrefixList" => INC_PREFIX_LIST})
124+ c14element = transforms_element . add_element ( "ds:Transform" , { "Algorithm" => C14N } )
125+ c14element . add_element ( "ec:InclusiveNamespaces" , { "xmlns:ec" => C14N , "PrefixList" => INC_PREFIX_LIST } )
126+
126127 digest_method_element = reference_element . add_element ( "ds:DigestMethod" , { "Algorithm" => digest_method } )
128+ inclusive_namespaces = INC_PREFIX_LIST . split ( " " )
129+ canon_doc = noko . canonicalize ( canon_algorithm ( C14N ) , inclusive_namespaces )
127130 reference_element . add_element ( "ds:DigestValue" ) . text = compute_digest ( canon_doc , algorithm ( digest_method_element ) )
128131
129132 # add SignatureValue
0 commit comments