PIV準拠のスマートカードでアクティブカード認証を実行しようとしています。詳細については、this documentの付録A.2を参照してください。.NETでPKCS#1 v1.5でデータをエンコードする方法
私は関連するX.509証明書から公開鍵を持っています。カードに秘密鍵で署名するランダムなデータを送る必要があります。公開鍵で署名を検証する必要があります。
私が提出した文書の例は、署名するために送信するデータが「PKCS#1 v1.5署名パディングスキームに従ってコード化されている」ことに注意しています。どのようにランダムなデータをエンコードするのですか?データの埋め込みはRSA署名プロセスの一部であると私は考えました。
// Generate random data
byte[] randomData = new byte[128];
Random random = new Random();
random.NextBytes(randomData);
// Hash the random data
SHA1Managed sha1 = new SHA1Managed();
byte[] hash = sha1.ComputeHash(randomData);
// Send the hash to the Smart Card and get back signed data
byte[] signature = SendToSmartCardForSignature(hash);
// Verify the data and the signature match using the public key
RSACryptoServiceProvider rsa = smartCardCertificate.PublicKey;
bool verified = rsa.VerifyData(randomData, CryptoConfig.MapNameToOID("SHA1"), signature);
// verified is false...why?
恐ろしい。私はそれが働いているが、それは混乱のビットです。私はそれを掃除するためにこれを実装しようとします。ありがとう。 – Ben