据我所知,TLS 1.1要求使用MD5和SHA1两个哈希算法的连接来对CertificateVerify消息的内容进行数字签名。在.NET中,使用RSACryptoServiceProvider是否可以实现此操作?
以下方法不可行:
using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(...);
rsa.SignData(data, new MD5SHA1());
}
这也不起作用:
using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(...);
rsa.SignHash(new MD5SHA1().ComputeHash(data), "MD5SHA1");
}
(MD5SHA1 是 HashAlgorithm 的一个实现。)
可能这并不起作用,因为签名嵌入了哈希算法的 OID,而 MD5-SHA1 没有一个有效的 OID。这在 .NET 中可能是可能的吗?难道我误解了 TLS 1.1 吗?