仅在Python中签署肥皂附件内容

问题描述

我一直试图在python中的请求中签名一个soap附件,最近,我设法修改了signxml的代码以引用CID并相应地构建引用节点。服务器还无法验证签名,并查看是否有人在解决此问题上有经验?

以下是将gzip文件作为MIME附件附加并以二进制形式发送而无需进行转换的代码:

            input = open(self._attachment_file,'rb').read()
            gzipped_content = open(self._attachment_gzipped_temp,'rb').read()

            # store attachment content
            document = MIMEApplication(_data=gzipped_content,_subtype='gzip',_encoder=encode_base64)

            # decompressed the payload to validate the content
            a = document.get_payload().encode('utf-8')
            b = base64.b64decode(a)
            decompressed = gzip.decompress(b)
            if list(decompressed) == list(input):
                logger.info("decompressed content matches input")
            else:
                logger.info("MIME content decompressed unsuccessfully")

            self._attachment_content = gzipped_content
            self._attachment_reference_dict["content"] = self._attachment_content
            _final_attachment_reference_list = self.attachment_reference_list

            del (document['mime-version'])
            del (document['Content-Transfer-Encoding'])
            document.add_header('Content-Transfer-Encoding','base64')
            document.add_header('Content-Disposition','attachment',filename='Part1')
            document.add_header('Content-ID','<' + self._attachment_id + '>')

从那里开始,self._attachment_content作为摘要输入直接输入,然后进行消化而无需规范化/转换(因为内容已经是二进制形式了?),然后从signxml库成功计算出签名参考节点,将我们引导至以下输出:

--==================MTOM==================
Content-Type: application/gzip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Part1"
Content-ID: <attachment1>

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

--==================MTOM==================--

,soap请求消息中的签名部分为:

<ds:Reference URI="cid:attachment1">
      <ds:Transforms>
       <ds:Transform Algorithm="http://docs.oasis-open.org/wss/oasis-wss-SwAProfile-1.1#Attachment-Content-Signature-Transform"/>
      </ds:Transforms>
      <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
      <ds:DigestValue>ZjefgSY2UDbrq/tH8JyWZgXd6X17sj6+n2k+yz/MPmY=</ds:DigestValue>
     </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>gCC5VQrp9SBc66K5E/LlaKoCb/q1IiS2vzfa+GwUFfI+VtVI6FtGqLb6gAdPOy1P0uj6qfKJ0PxMXFAzegRHP5HD8HA1/pVFLQkgrWKcfKi4FyBxalE5vsBqBqyK/C8pVMiq5Cya76MZ40znl43JO1l0xziCOMEAPfl96PMUHu1NiWx6kx7x9C3nOL//KJ+9YM630BIIz6HI5BEcEcJbI6rdToiGmDzVKgXlBQ7N12P7aThntiKYj579kAMZRhqphd/gJxH6XMfN3akO3sPglcAKOPHcGKojQGBNwvmMS8gXMEa4jWUS22SI5xABFiwfE9bbf2PjbE9s5zW82YVIcg==</ds:SignatureValue>
    <ds:KeyInfo>
     <wsse:SecurityTokenReference>
      <wsse:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#signingCert"/>
     </wsse:SecurityTokenReference>
    </ds:KeyInfo>
   </ds:Signature>
  </wsse:Security>
 </soapenv:Header>
 <soapenv:Body wsu:Id="soapbody"/>
</soapenv:Envelope>

我已经按照代码放置了预传输编码(在这种情况下,是prebase64)的内容进行消化。

任何人都想知道为什么这会导致签名验证错误?我可以确认所有签名密钥均正常运行,就好像仅对XML节点签名一样,服务器将返回有效响应。现在的问题确实出在已签名的附件中。

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...