1 //----------------------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //----------------------------------------------------------------------------- 4 5 namespace System.IdentityModel.Selectors 6 { 7 using System; 8 using System.Security.Cryptography; 9 10 internal class InfoCardRSAPKCS1SignatureDeformatter : RSAPKCS1SignatureDeformatter 11 { 12 private RSA m_rsaKey; // RSA Key value to do decrypt operation 13 private string m_strOID; // OID value for the HASH algorithm 14 15 // 16 // public constructors 17 // 18 InfoCardRSAPKCS1SignatureDeformatter()19 public InfoCardRSAPKCS1SignatureDeformatter() : base() { } InfoCardRSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key)20 public InfoCardRSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key) 21 : base(key) 22 { 23 m_rsaKey = (RSA)key; 24 } 25 26 // 27 // public methods 28 // 29 SetKey(AsymmetricAlgorithm key)30 public override void SetKey(AsymmetricAlgorithm key) 31 { 32 base.SetKey(key); 33 m_rsaKey = (RSA)key; 34 } 35 SetHashAlgorithm(string strName)36 public override void SetHashAlgorithm(string strName) 37 { 38 base.SetHashAlgorithm(strName); 39 m_strOID = CryptoConfig.MapNameToOID(strName); 40 } 41 VerifySignature(byte[] rgbHash, byte[] rgbSignature)42 public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) 43 { 44 if (!(m_strOID == null || m_rsaKey == null || rgbHash == null || rgbSignature == null) 45 && m_rsaKey is InfoCardRSACryptoProvider) 46 { 47 return ((InfoCardRSACryptoProvider)m_rsaKey).VerifyHash(rgbHash, m_strOID, rgbSignature); 48 } 49 else 50 { 51 return base.VerifySignature(rgbHash, rgbSignature); 52 } 53 } 54 } 55 } 56