0

我正在尝试使用 azure (.net 4.5) 服务验证 HardwareIdentification.GetPackageSpecificToken 颁发的 HardwareToken。我遵循了官方的指导。但我被困在最后一次检查中。我不明白为什么签名检查总是失败(所有其他检查,如检查证书链、加权硬件令牌比较或根证书公钥匹配都工作正常)。

这是我用来执行签名验证的代码: 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(无论我是否使用随机数)。

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

有人遇到/解决了这个问题吗?

最好的祝福,

4

1 回答 1

0

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

于 2012-12-21T13:08:14.643 回答