void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (cert != null)
         {
             cert.Dispose();
         }
         if (key != null)
         {
             key.Dispose();
         }
         if (keyContainer != null)
         {
             keyContainer.Dispose();
         }
         if (keyContainerName != null)
         {
             CryptAcquireContext(out keyContainer,
                                 keyContainerName,
                                 null,
                                 ProviderType.RsaSecureChannel,
                                 ContextFlags.DeleteKeySet);
             Utility.CloseInvalidOutSafeHandle(keyContainer);
         }
         GC.SuppressFinalize(this);
     }
 }