在云中验证ASHWID(HardwareToken)的问题

时间:2012-11-29 15:07:48

标签: windows-8 windows-runtime cryptoapi rsacryptoserviceprovider

我尝试使用azure(.net 4.5)服务验证HardwareIdentification.GetPackageSpecificToken发出的HardwareToken。我跟着官方guidance。但我在最后一次检查中陷入困境。我无法确定签名检查始终失败的原因(每次其他检查,如检验证书链,加权硬件令牌比较或根证书公钥匹配都正常工作)。

以下是我用于执行签名验证的代码:     var publicKeyProvider = leaf.PublicKey.Key as System.Security.Cryptography.RSACryptoServiceProvider;

var signedData = nonce.Concat(token).ToArray();
SHA1Managed hash = new SHA1Managed();
byte[] hashedData;
hashedData = hash.ComputeHash(signedData);

if (!publicKeyProvider.VerifyHash(hashedData, CryptoConfig.MapNameToOID("SHA1"), signature))
   throw new Exception("Invalid or Corrupted HardwareToken");

我也尝试使用具有相同结果的VerifyData,它总是返回False(无论我是否使用nonce)。

我在这里上传了一个非常基本的示例项目:https://github.com/sandorfr/sandor/tree/master/W8/HardwareTokenSample

有人面对/解决了这个问题吗?

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

.net不支持ASHWID使用的签名类型,因为它使用PSS,因此我必须对NCryptVerifySignature进行本机调用。