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