<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Steven Cheng's MSDN Notes</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/stcheng/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/stcheng/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:31:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>简易旅游攻略手册（Windows Phone）应用程序隐私策略声明</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/windows-phone</link>
      <pubDate>Tue, 19 Mar 2013 07:07:29 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2013/03/19/windows-phone/</guid>
      <description><![CDATA[简易旅游攻略手册旨在为喜欢旅游（尤其自由行）的朋友们提供一些简单快速的信息指南。目前版本暂时只包含新加坡，香港两个地区的旅游攻略，其他地区的旅游攻略有待后续版本逐步完善。
本隐私策略声明函盖了用户对...]]></description>
      <content:encoded><![CDATA[<p>简易旅游攻略手册旨在为喜欢旅游（尤其自由行）的朋友们提供一些简单快速的信息指南。目前版本暂时只包含新加坡，香港两个地区的旅游攻略，其他地区的旅游攻略有待后续版本逐步完善。</p>
<p>本隐私策略声明函盖了用户对于简易旅游攻略手册应用程序中所有功能的使用。</p>
<p>简易旅游攻略手册不会收集、存储、分享用户的任何个人信息；也不会收集、存储、分享用户用于安装本应用的设备相关的信息。我们不会通过简易旅游攻略手册应用程序收集任何统计数据和分析数据，也不会跟踪用户的行为。</p>
<p>简易旅游攻略手册（Windows Phone）应用程序隐私策略声明的修改及更新权均属于本应用的开发者所有。</p>]]></content:encoded>
    </item>
    <item>
      <title>SimpleTileCreator (Windows Phone) application Privacy Statement</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/simpletilecreator-windows-phone-application-privacy-statement</link>
      <pubDate>Wed, 13 Mar 2013 23:02:32 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2013/03/13/simpletilecreator-windows-phone-application-privacy-statement/</guid>
      <description><![CDATA[SimpleTileCreator (Windows Phone) application Privacy Statement  Last updated: Mar 2013
This...]]></description>
      <content:encoded><![CDATA[<p align="left"><strong><span style="font-family: Calibri Light;">SimpleTileCreator (Windows Phone) application Privacy Statement </span></strong><br /><span style="font-size: small;"> Last updated: <em>Mar 2013</em></span></p>
<p align="left"><br /><span style="font-size: small;">This privacy statement covers the usage of all features in the SimpleTileCreator (Windows Phone) application.</span></p>
<p align="left"><span style="font-size: small;">The SimpleTileCreator (Windows Phone) application does not collect, store, and share any personal information of the application users; also does not collect, store, and share user device-dependent information (used to install the application). We will not collect any other user related data in the application, also does not track users ' behavior. </span></p>
<p align="left"><span style="font-size: small;">This privacy statement will be occasionally modified to reflect changes in the SimpleTileCreator (Windows Phone) application. When we post any changes, we will revise the "last updated" date at the top of this statement. </span></p>
<p align="left"><span style="font-size: small;">Steven Cheng</span></p>]]></content:encoded>
    </item>
    <item>
      <title>[Windows Store App]How to perform RSA data encryption with x509 certificate based key in Windows Store application</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/windows-store-apphow-to-perform-rsa-data-encryption-with-x509-certificate-based-key-in-windows-store-application</link>
      <pubDate>Tue, 12 Mar 2013 06:55:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2013/03/12/windows-store-apphow-to-perform-rsa-data-encryption-with-x509-certificate-based-key-in-windows-store-application/</guid>
      <description><![CDATA[How to perform RSA data encryption with x509 certificate based key in Windows Store...]]></description>
      <content:encoded><![CDATA[<p><strong><span style="font-size: large;"><span style="font-family: Calibri Light;">How to perform RSA data encryption with x509 certificate based key in Windows Store application&nbsp;&nbsp;&nbsp; </span></span></strong></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">Windows Store application (Windows Runtime) has provided rich support on cryptography and PKI programming. We can use the built-in classes to perform common crypto operations like symmetric &amp; asymmetric encryption, digital signing, hashing, etc&hellip; (see reference below): </span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">#Crypto and PKI application capabilities (Windows)</span></span></p>
<p><a href="https://msdn.microsoft.com/en-us/library/windows/apps/hh464922.aspx"><span style="color: #0563c1; font-family: Calibri; font-size: large;">https://msdn.microsoft.com/en-us/library/windows/apps/hh464922.aspx</span></a></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">And the Windows SDK sample collection has also provided a detailed sample to demonstrate various crypto programming cases supported in Windows Store application.</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">#CryptoWinRT sample</span></span></p>
<p><a href="https://code.msdn.microsoft.com/windowsapps/CryptoWinRT-54ff3d9f"><span style="color: #0563c1; font-family: Calibri; font-size: large;">https://code.msdn.microsoft.com/windowsapps/CryptoWinRT-54ff3d9f</span></a></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">However, the document and sample haven&rsquo;t provided more information about how we can connect the crypto code to the X509 certificate which is usually used in PKI based crypto programming scenario. In a recent thread, someone has asked the question about how to load the public key from a x509 certificate (with RSA sha1 algorithm) and perform asymmetric encryption/signing with the key (see thread below):</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><a href="https://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/17e1467a-2de7-47d2-8d8c-130518eaac68"><span style="color: #0563c1; font-family: Calibri; font-size: large;">https://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/17e1467a-2de7-47d2-8d8c-130518eaac68</span></a></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">At first, I think the solution should be quite straightforward and might be resolved by a simple built-in function. But after some research, I found that there is no built-in class/method (in the current Windows Store/Windows Runtime library) which can directly extract the public key (or key pairs) from a given X509 certificate (.cer or .pfx file). Therefore, in this blog entry, I&rsquo;ll try summarizing two approaches we can use for performing asymmetric encryption by using the public key from an x509 certificate in Windows Store application. </span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<h1><span style="font-size: x-large;"><span style="font-family: Calibri;">Pre-extract the public key in x509 certificate and save it in file (or code) for windows store app </span></span></h1>
<p><span style="font-size: large;"><span style="font-family: Calibri;">In this case, we need to write some standard .NET code to extract the public key data from X509 certificate and save it (for later using in windows store app). Here is the sample code (in a standard .NET Winform app) for extracting and displaying the public key (in base64 format):</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="553">
<p>private void btnFindCert_Click(object sender, EventArgs e)</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);</p>
<p>&nbsp;&nbsp;&nbsp; store.Open(OpenFlags.ReadOnly);</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; var certs = store.Certificates.Find(X509FindType.FindBySubjectName, txtSubjectName.Text, false);</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; if (certs.Count &lt;= 0)</p>
<p>&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox.Show("No Certificate found!");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; var cert = certs[0];</p>
<p>&nbsp;&nbsp;&nbsp; var sb = new StringBuilder();</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; sb.AppendFormat("\r\nSubject Name:{0}\r\nThumbprint:{1}\r\nIssuer:{2}\r\n", cert.SubjectName.Name, cert.Thumbprint, cert.Issuer);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; var pubKeyStr = Convert.ToBase64String(cert.GetPublicKey());</p>
<p>&nbsp;&nbsp;&nbsp; sb.AppendFormat("\r\nPublic Key (can be used in WinRT):{0}\r\n", pubKeyStr);</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; txtOutput.AppendText(sb.ToString());</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; store.Close();</p>
<p>}</p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">After getting the public key data (bytes), we can directly load it in Windows Store app through AsymmetricAlgorithmProvider.importPublicKey method. Here is the complete code for loading the public key (bytes) and use it for data encryption in Windows Store app (javascript):</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="553">
<p align="left">document.getElementById("btnEncryptByRawKey").addEventListener("click", function () {</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get from the WinFormCertTool</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var pubKeyStr = "MIGJAoGBAN34SRLiTkVvaUXXhLir3eGmEzV8M8x1Qf+WX6U67ML6tyzWN3oaMya94C1/G5VaG4fut9LpR/047rjuCJFZ3fItgOZXJJqzP6cX4lqVLj954IBQAJMrzzZrGhmBLuPjx9DcISYG+v0DlAj9gstxPPGFwjG2yJK9ADG/hIsi84OZAgMBAAE=";</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var pubKeyBytes = cryptoNS.CryptographicBuffer.decodeFromBase64String(pubKeyStr);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var alg = cryptoNS.Core.AsymmetricKeyAlgorithmProvider.openAlgorithm(cryptoNS.Core.AsymmetricAlgorithmNames.rsaPkcs1);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var pubKey = alg.importPublicKey(pubKeyBytes, cryptoNS.Core.CryptographicPublicKeyBlobType.pkcs1RsaPublicKey);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dataToEncrypt = document.getElementById("txtDataToSecure").value;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dataBytes = cryptoNS.CryptographicBuffer.convertStringToBinary(dataToEncrypt, cryptoNS.BinaryStringEncoding.utf8);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var encryptedBytes = cryptoNS.Core.CryptographicEngine.encrypt(pubKey, dataBytes, null);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var encryptedData = cryptoNS.CryptographicBuffer.encodeToBase64String(encryptedBytes);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtOutput.value = "Encrypted data:" + encryptedData;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log(txtOutput.value);</p>
<p align="left">&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<h1><span style="font-size: x-large;"><span style="font-family: Calibri;">Manually parse the X509 certificate content (.cer file) and extract the public key in Windows Store app</span></span></h1>
<p><span style="font-size: large;"><span style="font-family: Calibri;">If we cannot pre-extract the public key information from certificate and have to load the key info in Windows Store app directly, then we have to manually parse the X509 certificate data (.cer file). Thanks for Carlos who has provided a helper class which can be used in Windows Store app (in a Windows Runtime library) for extracting public key from x509 certificate binary content:</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><a href="https://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/17e1467a-2de7-47d2-8d8c-130518eaac68"><span style="color: #0563c1; font-family: Calibri; font-size: large;">https://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/17e1467a-2de7-47d2-8d8c-130518eaac68</span></a></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">Here is the complete code of the class/functions:</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="553">
<p align="left">using System;</p>
<p align="left">using System.Collections.Generic;</p>
<p align="left">using System.Linq;</p>
<p align="left">using System.Runtime.InteropServices.WindowsRuntime;</p>
<p align="left">using System.Text;</p>
<p align="left">using System.Threading.Tasks;</p>
<p align="left">using Windows.Security.Cryptography;</p>
<p align="left">using Windows.Security.Cryptography.Certificates;</p>
<p align="left">using Windows.Security.Cryptography.Core;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left">namespace RSACertLib</p>
<p align="left">{</p>
<p align="left">&nbsp;&nbsp;&nbsp; public sealed class RSAUtils</p>
<p align="left">&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static CryptographicKey GetCryptographicPublicKeyFromCert(string strCert)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int length;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CryptographicKey CryptKey = null;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] bCert = Convert.FromBase64String(strCert);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Assume Cert contains RSA public key</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Find matching OID in the certificate and return public key</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] rsaOID = EncodeOID("1.2.840.113549.1.1.1");</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index = FindX509PubKeyIndex(bCert, rsaOID, out length);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Found X509PublicKey in certificate so copy it.</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (index &gt; -1)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] X509PublicKey = new byte[length];</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array.Copy(bCert, index, X509PublicKey, 0, length);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AsymmetricKeyAlgorithmProvider AlgProvider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CryptKey = AlgProvider.ImportPublicKey(CryptographicBuffer.CreateFromByteArray(X509PublicKey));</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CryptKey;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static int FindX509PubKeyIndex(byte[] Reference, byte[] value, out int length)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index = -1;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool found;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length = 0;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int n = 0; n &lt; Reference.Length; n++)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Reference[n] == value[0]) &amp;&amp; (n + value.Length &lt; Reference.Length))</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index = n;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; found = true;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int m = 1; m &lt; value.Length; m++)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Reference[n + m] != value[m])</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;found = false;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (found) break;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else index = -1;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (index &gt; -1)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Find outer Sequence</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (index &gt; 0 &amp;&amp; Reference[index] != 0x30) index--;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index--;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (index &gt; 0 &amp;&amp; Reference[index] != 0x30) index--;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (index &gt; -1)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Find the length of encoded Public Key</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((Reference[index + 1] &amp; 0x80) == 0x80)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int numBytes = Reference[index + 1] &amp; 0x7F;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int m = 0; m &lt; numBytes; m++)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length += (Reference[index + 2 + m] &lt;&lt; ((numBytes - 1 - m) * 8));</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length += 4;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length = Reference[index + 1] + 2;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return index;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static public byte[] EncodeOID(string szOID)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] OIDNums;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] pbEncodedTemp = new byte[64];</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] pbEncoded = null;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n, index, num, count;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OIDNums = ParseOID(szOID);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[0] = 6;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[2] = Convert.ToByte(OIDNums[0] * 40 + OIDNums[1]);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count = 1;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (n = 2, index = 3; n &lt; OIDNums.Length; n++)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num = OIDNums[n];</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (num &gt;= 16384)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[index++] = Convert.ToByte(num / 16384 | 0x80);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;num = num % 16384;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (num &gt;= 128)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[index++] = Convert.ToByte(num / 128 | 0x80);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num = num % 128;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[index++] = Convert.ToByte(num);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncodedTemp[1] = Convert.ToByte(count);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pbEncoded = new byte[count + 2];</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.Copy(pbEncodedTemp, 0, pbEncoded, 0, count + 2);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return pbEncoded;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static public int[] ParseOID(string szOID)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nlast, n = 0;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool fFinished = false;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] dwNums = null;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nlast = n;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = szOID.IndexOf(".", nlast);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (n == -1) fFinished = true;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while (fFinished == false);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwNums = new int[count];</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count = 0;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fFinished = false;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nlast = n;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = szOID.IndexOf(".", nlast);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (n != -1)</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwNums[count] = Convert.ToInt32(szOID.Substring(nlast, n - nlast), 10);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fFinished = true;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dwNums[count] = Convert.ToInt32(szOID.Substring(nlast, szOID.Length - nlast), 10);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while (fFinished == false);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dwNums;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">Then, we can use this class in our Windows Store app to extract public key (from a given x509 certificate file) and perform RSA encryption (see javascript code below):</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="553">
<p align="left">document.getElementById("btnEncryptByCertFile").addEventListener("click", function () {</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; // Use file picker to select a x509 certificate file (.cer file)</p>
<p align="left">&nbsp;&nbsp;&nbsp; var openPicker = new Windows.Storage.Pickers.FileOpenPicker();</p>
<p align="left">&nbsp;&nbsp;&nbsp; openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.list;</p>
<p align="left">&nbsp;&nbsp;&nbsp; openPicker.fileTypeFilter.replaceAll([".cer"]);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; openPicker.pickSingleFileAsync().then(function (file) {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Windows.Storage.FileIO.readBufferAsync(file);</p>
<p align="left">&nbsp;&nbsp;&nbsp; }).done(</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function (buffer) {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var isBase64Cert = document.getElementById("rdCertBASE64").checked;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var certStr = "";</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isBase64Cert) {</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Base 64 format cer, need to extract the binary part</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; certStr = cryptoNS.CryptographicBuffer.convertBinaryToString(cryptoNS.BinaryStringEncoding.utf8, buffer);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; certStr = certStr.replace("-----BEGIN CERTIFICATE-----", "");</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; certStr = certStr.replace("-----END CERTIFICATE-----", "");</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; certStr = certStr.trim();</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // For DER binary format .cer file</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; certStr = cryptoNS.CryptographicBuffer.encodeToBase64String(buffer);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Extract the public key from cert binary</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var pubKey = RSACertLib.RSAUtils.getCryptographicPublicKeyFromCert(certStr);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var dataToEncrypt = "This is an apple!";</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var bytesToEncrypt = cryptoNS.CryptographicBuffer.convertStringToBinary(dataToEncrypt, cryptoNS.BinaryStringEncoding.utf8);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var encryptedBytes = cryptoNS.Core.CryptographicEngine.encrypt(pubKey, bytesToEncrypt, null);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var encryptedData = cryptoNS.CryptographicBuffer.encodeToBase64String(encryptedBytes);</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtOutput.value = "encryptedData:" + encryptedData;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log("encryptedData:" + encryptedData);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function (err) {</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtOutput.value = err;</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log(err);</p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p align="left">&nbsp;&nbsp;&nbsp; );</p>
<p align="left">&nbsp;</p>
<p>});</p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">For how to create Windows Runtime library and use it in Windows Store javascript app, you can refer to the following reference:</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><strong><span style="font-size: large;"><span style="font-family: Calibri;">#Walkthrough: Creating a simple component in C# or Visual Basic and calling it from JavaScript</span></span></strong></p>
<p><a href="https://msdn.microsoft.com/en-us/library/windows/apps/hh779077.aspx"><span style="color: #0563c1; font-family: Calibri; font-size: large;">https://msdn.microsoft.com/en-us/library/windows/apps/hh779077.aspx</span></a><span style="font-size: large;"><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<h1><span style="font-size: x-large;"><span style="font-family: Calibri;">Test certificates and code used here</span></span></h1>
<p><span style="font-size: large;"><span style="font-family: Calibri;">The certificate used in the sample code above can be generated via the following command (using makecert.exe too):</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="553">
<p align="left"><strong>#Creating a Root Certificate Authority</strong></p>
<p align="left">&nbsp;</p>
<p align="left">makecert.exe -n "CN=RSA TEST CA,O=Organization,OU=Org Unit,L=Test Center,S=CA,C=US" -pe -ss my -sr LocalMachine -sky exchange -m 96 -a sha1 -len 2048 -r C:\workspace\demo\WinStoreRSACertificateDemo\RSA_TEST_CA.cer</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
<p align="left"><strong>#Create a Server Certificate issued from the previously created Certificate Authority </strong></p>
<p align="left">&nbsp;</p>
<p align="left">makecert.exe -n "CN=RSA TEST SERVER" -pe -ss my -sr LocalMachine -sky exchange -m 96 -in "RSA TEST CA" -is my -ir LocalMachine -a sha1 -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 C:\workspace\demo\WinStoreRSACertificateDemo\RSA_TEST_SERVER.cer</p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><span style="font-size: large;"><span style="font-family: Calibri;">All the .NET and Windows Store sample code mentioned above can be got in the attached package in this blog entry.</span></span></p>
<p><span style="font-family: Calibri; font-size: large;">&nbsp;</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/40/15/94/WinStoreRSACertificateDemo.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-40-15-94/WinStoreRSACertificateDemo.zip">WinStoreRSACertificateDemo.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>[Microsoft Windows Store App] 团购信息汇 （微软Windows 8 商店应用）简介</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/microsoft-windows-store-app-windows-8</link>
      <pubDate>Fri, 07 Dec 2012 00:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/12/07/microsoft-windows-store-app-windows-8/</guid>
      <description><![CDATA[随着第二代网络团购的兴起和发展，越来越多的消费者会通过团购网站来寻找一些自己喜爱的团购信息。然而，由于团购站点越来越多，使得消费者访问团购信息的方式变得越来越繁琐。尤其在智能移动设备高速发展的今天，移...]]></description>
      <content:encoded><![CDATA[<p>随着第二代网络团购的兴起和发展，越来越多的消费者会通过团购网站来寻找一些自己喜爱的团购信息。然而，由于团购站点越来越多，使得消费者访问团购信息的方式变得越来越繁琐。尤其在智能移动设备高速发展的今天，移动设备上始终缺乏能够让用户同时访问各个团购站点信息的有效途径。</p>
<p>针对这样的情况，我们计划专门为团购爱好者打造一个简单，快速，统一的团购信息浏览和查找途径；并且主要考虑了针对用户在一些新型智能移动设备上的使用体验。随着微软公司新发布的Windows 8 操作系统逐渐在PC和移动平板中广泛应用，我们将首先推出基于Windows&nbsp;商店应用的&ldquo;团购信息汇&ldquo;应用程序。该程序将方便用户在Windows 8系统的PC或者移动设备中从各大主流团购站点中获取和查找最新的团购信息。</p>
<p>当前版本的团购信息汇应用程序将支持<strong>大众点评网，美团网，拉手网，</strong><strong>F</strong><strong>团，糯米网，嘀嗒团，爽团网和满座网</strong>这八大知名的团购网站。</p>
<p>&nbsp;</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7180.HomePage1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7180.HomePage1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7180.HomePage1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7180.HomePage1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>同时Windows 8 应用商店程序的横竖屏多样化的视角使得用户可以很方便地在各种模式下切换团购站点。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/6443.HomePage2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/6443.HomePage2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/6443.HomePage2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/6443.HomePage2.png" alt="" border="0" /></a></p>
<p>更为重要的的是，团购信息汇程序将会覆盖20多个国内的大城市（包括北京，上海，广州，杭州，南京，郑州等）以满足尽可能多的团购爱好者。用户可以很方便地在应用程序中随时切换想要关注的城市。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4300.CityListPage1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4300.CityListPage1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4300.CityListPage1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4300.CityListPage1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>每当用户选择了具体的团购站点以及关注的城市后，便可以在相应的团购列表中浏览所有相关的团购信息。所有团购信息都将根据时间定期刷新，用户也可以随时根据需要手工刷新信息。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/6237.DealsPage4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/6237.DealsPage4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/6237.DealsPage4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/6237.DealsPage4.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>与团购站点导航界面类似，用户在Windows 8 设备上可以根据需要在各种不同的视角模式中浏览团购信息。如在手持平板中纵向地浏览。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4606.DealsPage2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4606.DealsPage2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4606.DealsPage2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4606.DealsPage2.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>或者是通过Windows 8 应用程序独有的侧边贴靠模式在系统浏览器中同步查看团购网站上的原始信息。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7356.DealsPage3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7356.DealsPage3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7356.DealsPage3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7356.DealsPage3.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>为了便于用户快速的查找自己感兴趣的团购信息，应用程序在所有模式下都提供了搜索功能。这样用户可以通过关键字来快速地定位到包含特定内容的团购信息。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5305.DealsPage1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5305.DealsPage1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5305.DealsPage1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5305.DealsPage1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>如今的互联网已经是Social的世界，用户可以方便的在各种不同的网站或者应用程序间（通过电脑或者是各种移动设备）分享和交流各种信息和话题。作为一款坚固移动设备的应用，团购信息汇同样集成了信息分享功能。用户可以随时将自己发现的团购信息通过设备上的其他互联网应用分享给朋友.</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/2500.SharingPage1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/2500.SharingPage1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/2500.SharingPage1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/2500.SharingPage1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>比如我们可以很方便地把某条特定的团购信息通过新浪微博分享给朋友。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5126.SharingPage2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5126.SharingPage2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5126.SharingPage2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5126.SharingPage2.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>对于Windows 8 的用户来说，动态此贴一定不会陌生。通过动态磁铁我们可以第一时间在屏幕上获得Windows 商店应用的最新动态信息。团购信息汇同样提供了动态磁铁提示功能，用户可以在还没打开应用程序时就了解到一些最新的团购信息；文字+图片结合的动态磁铁无疑也使得我们的系统桌面更加的丰富多彩。</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4075.LiveTile3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4075.LiveTile3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/4075.LiveTile3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/4075.LiveTile3.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>总的来说，团购信息汇将致力于成为团购爱好者浏览和查找团购信息的好帮手。同时，对于当前的初始版本，其中一定会存在着诸多的缺陷和不足；因此我们非常欢迎大家随时向我们提供宝贵意见和建议；也希望团购信息汇能够在广大团购爱好者和用户的帮助和鼓励中不断成长。</p>]]></content:encoded>
    </item>
    <item>
      <title>团购信息汇（微软Windows 商店 应用程序）隐私策略声明</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/windows</link>
      <pubDate>Thu, 06 Dec 2012 06:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/12/06/windows/</guid>
      <description><![CDATA[团购信息汇为团购爱好者即时获取各种团购信息提供了一个一站式的平台。用户可以根据具体需要自行选择所感兴趣的团购站点（包括大众点评网，美团网，拉手网，F团，糯米网，满座网，嘀嗒团，爽团）以及所在城市（支持...]]></description>
      <content:encoded><![CDATA[<p>团购信息汇为团购爱好者即时获取各种团购信息提供了一个一站式的平台。用户可以根据具体需要自行选择所感兴趣的团购站点（包括大众点评网，美团网，拉手网，F团，糯米网，满座网，嘀嗒团，爽团）以及所在城市（支持全国20多个大城市）并查看相应的团购信息。</p>
<p>本隐私策略声明函盖了用户对于团购信息汇应用程序中所有功能的使用。</p>
<p>团购信息汇不会收集、存储、分享用户的任何个人信息；也不会收集、存储、分享用户用于安装本应用的设备相关的信息。我们不会通过团购信息汇应用程序收集任何统计数据和分析数据，也不会跟踪用户的行为。本应用程序中所涉及的所有网络访问都用于从服务器端获取团购信息，绝不会发送任何用户的隐私或者个人数据，也不会下载任何会侵犯用户隐私的程序。</p>
<p>团购信息汇（Microsoft Windows 商店 应用程序）隐私策略声明的修改及更新权均属于本应用的开发者所有。</p>]]></content:encoded>
    </item>
    <item>
      <title>法语学习小手册（Microsoft Windows 商店 应用程序）隐私策略声明</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/microsoft-windows</link>
      <pubDate>Fri, 09 Nov 2012 22:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/11/09/microsoft-windows/</guid>
      <description><![CDATA[法语学习小手册（Microsoft Windows 商店...]]></description>
      <content:encoded><![CDATA[<p style="text-align: center;"><span style="font-size: medium;"><strong>法语学习小手册（Microsoft Windows 商店 应用程序）隐私策略声明</strong></span></p>
<p>法语学习小手册为法语初学者提供了一些必备的知识点和技巧总结。按照知识点的内容和类别，本手册一共分为：音标基础，发音技巧，动词变位，基本语法，时间数字，在线资源这六大模块。用户可以根据具体需要自行选择所需要查看的内容。</p>
<p>本隐私策略声明函盖了用户对于法语学习小手册应用程序中所有内容的使用。</p>
<p>法语学习小手册不会收集、存储、分享用户的任何个人信息；也不会收集、存储、分享用户用于安装本应用的设备相关的信息。我们不会通过法语学习小手册应用程序收集任何统计数据和分析数据，也不会跟踪用户的行为。本应用程序中所显示的所有文档内容都已经随程序静态安装，绝不会动态地使用用户的网络连接去下载获取任何额外的内容或资源。</p>
<p>法语学习小手册（Microsoft Windows 商店 应用程序）隐私策略声明的修改及更新权均属于本应用的开发者所有。</p>]]></content:encoded>
    </item>
    <item>
      <title>Another good news from Packt to win a surprise gift</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/another-good-news-from-packt-to-win-a-surprise-gift</link>
      <pubDate>Thu, 20 Sep 2012 18:52:53 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/09/20/another-good-news-from-packt-to-win-a-surprise-gift/</guid>
      <description><![CDATA[Packt Publishing reaches 1000 IT titles and celebrates with an open invitation
Birmingham-based IT...]]></description>
      <content:encoded><![CDATA[<p><b>Packt Publishing reaches 1000<sup> </sup>IT titles and celebrates with an open invitation</b></p>
<p>Birmingham-based IT publisher <a href="https://www.packtpub.com/">Packt Publishing</a> is about to publish its 1000<sup>th</sup> title. Packt books are renowned among developers for being uniquely practical and focused.&nbsp; Packt books cover highly specific tools and technologies which IT professionals might not expect to see a high quality book on.</p>
<p>Packt would like you to join them in celebrating this milestone with a surprise gift &ndash; to get involved you just need to have already registered, or sign up for a free Packt account before 30<sup>th </sup>September 2012.</p>
<p>Packt published their first book&nbsp;in April 2004. One of the most prolific and fastest growing tech book publishers in the world, they now have books on everything from web development to web graphics, e-learning to e-commerce, IT architecture to games, and app development.</p>
<p>Packt supports many of the Open Source projects covered by its books through a project royalty donation, which has contributed over &pound;300,000 to Open Source projects up to now. As part of the celebration Packt is<br />allocating $30,000 to share between projects and authors in a genuinely unique way, soon to be disclosed on their <a href="https://www.packtpub.com/">website</a>.</p>
<p>Dave Maclean, founder of Packt Publishing explains, &ldquo;At Packt we set out 8 years ago to bring practical, up to date and easy to use technical books to the specialist tools and technologies that had been largely overlooked by IT publishers. Today, I am really proud that with our authors and partners we have been able to make useful books available on over 1000 topics and make our contribution to the development community.&rdquo;</p>
<p>For more information about Packt, the kind of books they publish, and to sign-up for a free account before the 30th of September, 2012, please visit their website: <a href="https://www.PacktPub.com">www.PacktPub.com</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Free Copy of Packt's book for .NET Developers</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/free-copy-of-packts-book-for-net-developers</link>
      <pubDate>Fri, 14 Sep 2012 19:44:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/09/14/free-copy-of-packts-book-for-net-developers/</guid>
      <description><![CDATA[I&rsquo;m pleased to announce that we are organizing a giveaway with Packt Publishing especially...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">
<p>I&rsquo;m pleased to announce that we are organizing a giveaway with Packt Publishing especially for you. All you need to do is just comment below the post and win a free copy of <a href="https://www.packtpub.com/open-data-protocol-programming-for-dot-net-developers-cookbook/book">OData Programming Cookbook for .NET Developers</a>. Three lucky winners stand a chance to win an e-copy of the book. Keep reading to find out how you can be one of the Lucky One.</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5265.odatacb.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5265.odatacb.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5265.odatacb.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5265.odatacb.png" width="254" height="308" /></a></p>
<h1>Overview of OData Programming Cookbook for .NET Developers</h1>
<ul>
<li>Master OData programming concepts and skills by implementing practical examples and apply them in real-world scenarios</li>
<li>Explore the new OData programming features in latest and future versions of WCF Data Service</li>
</ul>
<p>Read more about this book and download free Sample Chapter: <a href="https://www.packtpub.com/open-data-protocol-programming-for-dot-net-developers-cookbook/book">www.packtpub.com/open-data-protocol-programming-for-dot-net-developers-cookbook/book</a><b></b></p>
<p><b>How to Enter?</b></p>
<p>All you need to do is head on over to <a href="https://www.packtpub.com/open-data-protocol-programming-for-dot-net-developers-cookbook/book">this</a> page and look through the product description of these books and drop a line via the <b>comments below to let us know what interests you the most about these books</b>. It&rsquo;s that simple</p>
<p><strong></strong>&nbsp;</p>
<p><strong>Note:</strong> You can provide your email address (within the comment) in the following form:<br /><br /><strong>username (at) xxx.com</strong> or <strong>username _AT_ xxx.com</strong></p>
<p>&nbsp;</p>
<p><strong>DeadLine:</strong></p>
</div>
<p><b>The<br />contest will close on 10/11/2012. Winners will be contacted by email, so be<br />sure to use your real email address when you comment!</b></p>
<p><b></b>&nbsp;</p>
<p><b>Result:</b></p>
<p><b>Thank you all for your participation, here is the Lucky list:</b></p>
<p>Albert Rugel (<a href="mailto:a.rugel@verizon.net">a.rugel AT verizon.net</a>)</p>
<p>Greg Duncan (<a href="mailto:gduncan411@Hotmail.com">gduncan411 AT Hotmail.com</a>)</p>
<p>Jayson Rowe (<a href="mailto:jayson.rowe@gmail.com">jayson.rowe AT gmail.com</a>)</p>
<p><b>An ecopy of the book will be send to you from the publisher :).</b></p>]]></content:encoded>
    </item>
    <item>
      <title>Packt Publishing Celebrates its range of Microsoft books/e-books all this May!</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/packt-publishing-celebrates-its-range-of-microsoft-bookse-books-all-this-may</link>
      <pubDate>Mon, 07 May 2012 00:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/05/07/packt-publishing-celebrates-its-range-of-microsoft-bookse-books-all-this-may/</guid>
      <description><![CDATA[&nbsp;
Packt Microsoft Carnival
Packt Publishing Celebrates its range of Microsoft books/e-books...]]></description>
      <content:encoded><![CDATA[<p class="Standard">&nbsp;</p>
<h1>Packt Microsoft Carnival</h1>
<p class="Standard"><b>Packt Publishing Celebrates its range of Microsoft books/e-books all this May!</b></p>
<p class="Standard">Packt Publishing&rsquo;s Microsoft Carnival is here! The readers can avail colourful discounts on Packt&rsquo;s range of Microsoft books and e-books.</p>
<p class="Standard">Packt&rsquo;s Microsoft Carnival includes a variety of titles on BizTalk, SharePoint, SQL Server, Silverlight, .NET Framework stack, XNA, Forefront, System Center and more.</p>
<p class="Standard">Packt has slashed the cover prices on its selected Microsoft titles by up to 30%. Go get the book you have always wanted now and get the best out of this Carnival. Packt&rsquo;s recent published titles on Microsoft include:</p>
<ul>
<li>Microsoft Windows Identity Foundation Cookbook</li>
<li>Microsoft Silverlight 5 Data and Services Cookbook BizTalk Server 2010 Cookbook</li>
<li>Microsoft Application Virtualization Advanced Guide</li>
<li>Entity Framework 4.1: Expert's Cookbook</li>
<li>iPhone with Microsoft Exchange Server 2010: Business Integration and Deployment</li>
<li>Managing Data and Media in Microsoft Silverlight 4: A mashup</li>
</ul>
<p class="Standard">More titles coming through!</p>
<p class="Standard">For further information on Packt Microsoft Carnival, visit: <a href="https://www.packtpub.com/news/packt-microsoft-carnival">https://www.packtpub.com/news/packt-microsoft-carnival</a>.</p>
<p class="Standard">&nbsp;</p>
<p class="Standard"><i>BTW, </i><i>in case you use Windows Communication Foundation and are interested in my book below, then now is a great time to get it from Packt".</i></p>
<p class="Standard">&nbsp;<a href="https://www.packtpub.com/microsoft-wcf-4-0-cookbook/book" moz-do-not-send="true">Microsoft Windows Communication Foundation 4.0 Cookbook for Developing SOA Applications</a></p>
<p class="Standard">&nbsp;</p>
<p class="Standard">For constant updates on Packt news and content on Microsoft tools and technologies, follow Packt on Twitter: <a href="https://twitter.com/">PacktMSServers</a></p>
<p class="Standard"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/2158.packtpub.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/2158.packtpub.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/2158.packtpub.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/2158.packtpub.png" width="271" height="67" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>[ForumMobile]Glad to introduce the Microsoft Forums mobile service</title>
      <link>https://docs.microsoft.com/archive/blogs/stcheng/forummobileglad-to-introduce-the-microsoft-forums-mobile-service</link>
      <pubDate>Mon, 27 Feb 2012 22:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Steven Cheng - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stcheng/2012/02/27/forummobileglad-to-introduce-the-microsoft-forums-mobile-service/</guid>
      <description><![CDATA[Really glad to introduce this Microsoft Forums mobile service to you. If you are developers of IT...]]></description>
      <content:encoded><![CDATA[<p>Really glad to introduce this Microsoft Forums mobile service to you. If you are developers of IT Professionals who often access Microsoft online forums like MSDN, TechNet and Office 365, you can now make the access on your palms through your smart mobile phones.</p>
<hr style="border: 1px solid #cccccc; width: 100%; height: 4px; color: #ffffff;" size="4" width="100%" noshade="noshade" />
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/8420.AccessForumMobile.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/8420.AccessForumMobile.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/8420.AccessForumMobile.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/8420.AccessForumMobile.png" /></a></p>
<hr style="border: 1px solid #cccccc; width: 100%; height: 4px; color: #ffffff;" size="4" width="100%" noshade="noshade" />
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5736.ForDevsAndITPros.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5736.ForDevsAndITPros.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/5736.ForDevsAndITPros.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/5736.ForDevsAndITPros.png" /></a></p>
<hr style="border: 1px solid #cccccc; width: 100%; height: 4px; color: #ffffff;" size="4" width="100%" noshade="noshade" />
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/8308.Features.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/8308.Features.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/8308.Features.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/8308.Features.png" /></a></p>
<hr style="border: 1px solid #cccccc; width: 100%; height: 4px; color: #ffffff;" size="4" width="100%" noshade="noshade" />
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7485.HowToUse.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7485.HowToUse.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/70/84/7485.HowToUse.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-84/7485.HowToUse.png" /></a></p>
<p><br />Surely, this Mobile service is still far from full-fleged and powerful as it supports readonly to the forums content. However, we will try out best to keep moving and make it better and better. Meanwhile, if you have any good ideas for improving this, please feel free to tell us.</p>
<p></p>
<p>&nbsp;</p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>