2012-02-06 5 views
2

私はXMLDSIGをsign a configuration fileに使用しています。 CAにXML署名に使用できるキーを発行できるようにしたいと思います。 XMLが私のCAから発行された鍵で署名されていることを確認したいと思います。.NETでXMLDSIGチェーンを検証しますか?

SignedXmlオブジェクトから署名証明書を取得するにはどうすればよいですか。どのように特定のCAに証明書チェーンをフォローするのですか?

私のCAの公開鍵は、証明書ストアではなく実行可能ファイルに格納されることに注意してください。

答えて

2

任意の証明書をXML-DSIGファイルに添付するには、<X509Data> elementを追加します。 、.NETでこれを行うために使用します。

signedXml.KeyInfo.AddClause(
    new KeyInfoX509Data(certificate, X509IncludeOption.WholeChain)); 

は、XMLファイルから証明書を抽出するには、使用を:

var chain = new X509Chain(); 
chain.ChainPolicy.ExtraStore.AddRange(
    certificates.Cast<X509Certificate2>().ToArray()); 
var chainIsOk = chain.Build(signingCertificate); 

var certificates = signedXml.KeyInfo.OfType<KeyInfoX509Data>().Single(); 

あなたは、次を使用してチェーンを確認することができます

実際に署名に使用された証明書(したがって、signingCertificateの値)を把握するには、matches the keyが返された証明書をから返す必要があります。

+0

私は約1日の研究を保存しました。 :) – Spence

+1

@Spenceもっと3〜4日のように:) –

関連する問題