// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.AsymmetricCryptoSession
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 1D4D5564-A025-490C-AF1D-DF4FBB709D1F
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00001-msil\Virus.Win32.Expiro.w-f8f9f26e940480624825f6bddbea86e70fc4aa746c4dd8efa7d98dcb477000ed.exe

using System;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;
using System.Security.Principal;

namespace Microsoft.InfoCards
{
  internal class AsymmetricCryptoSession : CryptoSession
  {
    private RSACryptoServiceProvider m_provider;

    public AsymmetricCryptoSession(
      Process process,
      DateTime expirationTime,
      WindowsIdentity identity,
      RSACryptoServiceProvider key)
      : base(process, expirationTime, identity, (object) key, CryptoSession.SessionType.Asymmetric)
    {
      this.m_provider = key;
    }

    protected override void OnWrite(BinaryWriter bwriter)
    {
      bwriter.Write(this.m_provider.KeySize);
      Utility.SerializeString(bwriter, this.m_provider.KeyExchangeAlgorithm);
      Utility.SerializeString(bwriter, this.m_provider.SignatureAlgorithm);
    }

    protected override void OnDispose()
    {
      this.m_provider.Clear();
      this.m_provider.Dispose();
      this.m_provider = (RSACryptoServiceProvider) null;
    }

    public byte[] Encrypt(bool fOAEP, byte[] inData)
    {
      this.ThrowIfDisposed();
      return this.m_provider.Encrypt(inData, fOAEP);
    }

    public byte[] Decrypt(bool fOAEP, byte[] inData)
    {
      this.ThrowIfDisposed();
      return this.m_provider.Decrypt(inData, fOAEP);
    }

    public byte[] SignHash(byte[] hash, string hashAlgOid)
    {
      this.ThrowIfDisposed();
      return this.m_provider.SignHash(hash, hashAlgOid);
    }

    public bool VerifyHash(byte[] hash, string hashAlgOid, byte[] sig)
    {
      this.ThrowIfDisposed();
      return this.m_provider.VerifyHash(hash, hashAlgOid, sig);
    }
  }
}