2

私は、.NET Core (現時点での最新バージョンは 1.1.) と C# (実際には Omnisharp) を使用して、SOAP Web サービスとのクライアント側通信に取り組んでいます。要求は、RSA-SHA1 署名方法を使用してエンベロープ署名でデジタル署名する必要があり、最終的に次のような構造になります。

<soap:Envelope> 
  <soap:Body> 
    <MyRootElement>
      <MyData>
          ...
      </MyData> 
     <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
       <SignedInfo>
         <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
         <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
         <Reference URI="#G0xcabf5080-4D">
           <Transforms>
             <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
             <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
           </Transforms>
           <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
           <DigestValue>4j9JKFMvg6Mmfx7ERu8R3WkZTtQ=</DigestValue>
         </Reference>
       </SignedInfo>
       <SignatureValue>....</SignatureValue>
       <KeyInfo>
         <X509Data>
           <X509Certificate>....</X509Certificate> 
           <X509IssuerSerial>
             <X509IssuerName>...</X509IssuerName>
             <X509SerialNumber>72672627</X509SerialNumber>
           </X509IssuerSerial>
         </X509Data>
       </KeyInfo>
     </Signature>
   </MyRootElement>
  </soap:Body>
</soap:Envelope>

私が見つけたすべてのドキュメントは、.NET Core では利用できない SignedXml クラスの使用を参照しています。SignedXml クラスを使用せずにこの署名 (および必要な正規化) を作成する方法を共有するための提案やリンクはありますか? または、私が認識していない SignedXml の非公式バージョンがあるのでしょうか?

4

1 に答える 1

2

SignedXml はhttps://github.com/dotnet/corefxのツリーにあり、おそらく次の 2.0 リリースで利用できるようになります (共有フレームワーク バンドルではなく、nuget パッケージとして)。

2.0 型に多くの依存関係があるため、1.1 に移植するのは難しいでしょう。しかし、特定のニーズに合わせて切り分けることができるかもしれません。

または、2.0 プレビュー リリースを試して、問題なく動作するかどうかを確認してください。

于 2017-05-27T21:00:32.247 に答える