25
多くのフォーラムや例を見直しましたが、何も助けませんでした。私は任意のwebserviceから署名を確認する必要があります。私は検証のための公開鍵を持つtest.crtファイルを持っています。パブリックキーをCRTファイルから読み込み、署名を確認する方法は?
static bool Verify(string text, string signature)
{
X509Certificate2 cert = new X509Certificate2(
HttpContext.Current.Server.MapPath("test-server.cert"));
RSACryptoServiceProvider csp = (RSACryptoServiceProvider) cert.PublicKey.Key;
// Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] sign = Convert.FromBase64String(signature);
byte[] hash = sha1.ComputeHash(data);
return csp.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), sign);
}
しかし、結果は常に偽である:(
私は、OpenSSLの例があります。
openssl base64 -d -in signature -out signature.bin
openssl dgst -sha1 -verify test-server.pub -signature signature.bin from_gateway
私は、テキストのための署名を生成し、それをすぐに確認するシンプルなアプリを作成しました。ここで確認できます:https://dl.dropbox.com/u/1171045/11221877/Program.cs –
上記の方法はOKです。署名と確認に適切な証明書を使用していますか? –
ウェブアプリでも同じことをやったので、ウェブではありません。どのようにWebサービスからあなたのアプリケーションに署名を渡すのですか? –