0

HardwareIdentification.GetPackageSpecificToken によって発行された HardwareToken を Azure (.net 4.5) サービスで検証しようとしています。公式のガイダンスに従いました。しかし、私は最後のチェックで立ち往生しています。署名のチェックが常に失敗する理由がわかりません (証明書チェーンのチェック、重み付けされたハードウェア トークンの比較、ルート証明書の publicKey の照合など、他のすべてのチェックは正常に機能しています)。

署名の検証を実行するために使用しているコードは次のとおりです。

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

ASHWID で使用される署名の種類は、.net では PSS を使用するためサポートされていないため、NCryptVerifySignature をネイティブに呼び出す必要がありました。

于 2012-12-21T13:08:14.643 に答える