XMLファイルを受け取りました
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Envelope>
<OrgContent>
</OrgContent>
<Signature>
Y7z1Y+c+u80a9vhUSi`....`
`......`u80a9vhUSi==
</Signature>
<Certificate>
MIIExjCCA66gAwIBAgIJNv5`.......`
`.....`66gAwIBAgIJNv5=
</Certificate>
</Envelope>
私は<signature>
署名されたデータに渡し<certificate>
、バイト[]配列に変換した後、値をpubkeyに渡しました..次の関数に..
static bool Verify(byte[] signature, byte[] pubKeyBytes)
{
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAParameters RSAKeyInfo = RSA.ExportParameters(false);
RSAKeyInfo.Modulus = pubKeyBytes;
RSA.ImportParameters(RSAKeyInfo);
// Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
// byte[] data = encoding.GetBytes(text);
byte[] hash = sha1.ComputeHash(base64Decode());
// Verify the signature with the hash
return RSA.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature);
}
base64Decode()
メソッドは、元のコンテンツを に変換して返しますbyte[]
。
エラーは発生していませんが、まだ...verify()
メソッドが返さfalse
れ、署名が検証されていません..(署名は有効です)。このコードの何が問題なのか誰にもわかりますか..???