2010-12-13 13 views
3

ホストしているサーバーだけ文句を言わない実行:Medium Trustホスティングで文書にデジタル署名する方法はありますか?

SignedXml.ComputeSignature(); 

を、私は完全な信頼を必要とfromXMLとtoXML方法を考えました。しかし、これは驚きであった。現在、どの文書にもデジタル署名することは不可能です。 Using RSA Public Key Encryption in a Shared Web Hosting Environment

誰もが前にこれを使用したり、アウトその他の方法:私はこれを見つけたネットの検索の

+0

私がチェックしましたEZRSA(あなたのCodeProjectへのリンク)を外して、私がやろうとしていたことに対してうまくいきました。しかし、私はSHA256のサポートを追加しなければなりませんでしたが、これは提供されませんでした。私は変更されたソースコードをポール・サンダースに寄付しました(多くのおかげで)。 –

答えて

1

最終的にBounty CastleセキュリティAPIを使用してオンラインアクティベーションシステムを開発することができました。

利用可能な直接的な方法はありませんが、ベースAPIを使用してデジタル署名を生成できます。

0

作者は、基本的に、いくつかの作業コードを得るために、別々の部分をまとめてホイールを再発明しています。彼らのアプローチはうまくいくはずですが、あなたは同じようなアプローチを自分で作り出すことができます(ここでいくつかのコードを取り、それを有効にしようとする)、彼らは修正されたバグがあることを確認しますそこ。

JFYI:限定された環境で動作するXML security componentsを提供しています。すべてのコードが自分たちで作成され、アセンブリに含まれているからです。

+1

ありがとうございますが、価格はちょうど私に合っていません。 –

+0

@Assem XMLBlackboxパッケージの価格を個別にチェックしたことを確認してください。それはかなり妥当です。 –

1

私はこの記事が古いです知っているが、おそらく誰かが役に立つことがあります: ソリューションは、メディアの信頼にASP .NET 3.5で動作します:

private XmlDocument GetSignedDoc(XmlDocument doc) 
{ 
     X509Certificate2 certificate = null; 
        try 
        { 
         certificate = new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + licenceFile, licenceFilePass, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable); 

         if (certificate == null) 
          throw new Exception("The certificate i 

s null!!!"); 
       } 
       catch (Exception ex) 
       { 
        exception += "X509Certificate2 fail! Did not get certificate " + AppDomain.CurrentDomain.BaseDirectory + licenceFile; 
        exception += FormatException(ex); 
        goto SetError; 
       } 
      RSACryptoServiceProvider myRSASigner = null; 

      try 
      { 
       myRSASigner = (RSACryptoServiceProvider)certificate.PrivateKey; 

       if (myRSASigner == null) 
       { 
        throw new Exception("No valid cert was found"); 
       } 


        doc = SignXmlFile(doc, myRSASigner); 

      catch (Exception ex) 
       { 
        exception += "SignXmlFile failed"; 
        exception += FormatException(ex); 
        goto SetError; 
       } 

}

private static XmlDocument SignXmlFile(XmlDocument doc, RSACryptoServiceProvider myRSA) 
      { 
       byte[] sign_this = Encoding.UTF8.GetBytes(doc.InnerXml); 
       byte[] signature = myRSA.SignData(sign_this, new SHA1CryptoServiceProvider()); 
       string base64_string = Convert.ToBase64String(signature); 

       XmlElement Signature = doc.CreateElement("Signature"); 
       Signature.AppendChild(doc.CreateTextNode(base64_string)); 
       doc.DocumentElement.AppendChild(doc.ImportNode(Signature, true)); 

       return doc; 
      } 
関連する問題