<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>CLR Security</title><link>http://www.codeplex.com/clrsecurity/Project/ProjectRss.aspx</link><description>The CLR security team codeplex site provides sample code and libraries of APIs to extend and debug the security APIs that ship with the .NET Framework.  This codeplex site includes Security.Cryptog...</description><item><title>Updated Wiki: Security.AppDomain</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.AppDomain&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.AppDomain
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.aspx" class="externalLink"&gt;AppDomain&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the AppDomainExtensionMethods type.  This type is in the Security namespace (not the System namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.AppDomain"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.permissionset.aspx" class="externalLink"&gt;PermissionSet&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;AppDomain::GetPermissionSet()
&lt;/h3&gt; &lt;br /&gt;The GetPermissionSet method returns the permission set that the current AppDomain is sandboxed with.  This is the permission set which is used if a security demand crosses the AppDomain boundary.  Using this method requires FullTrust.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool AppDomain::IsHomogenous()
&lt;/h3&gt; &lt;br /&gt;The IsHomogenous method detects if an AppDomain is a simple sandbox style domain, created by passing a PermissionSet to the AppDomain.CreateDomain call.  If the domain is a simple sandbox, IsHomogenous returns true; if it is a legacy v1.x domain, IsHomogenous returns false.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool AppDomain::IsSandboxed()
&lt;/h3&gt; &lt;br /&gt;The IsSandboxed method returns true if the current AppDomain is a sandboxed AppDomain.  That is, if the current AppDomain has a grant set other than FullTrust.&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Thu, 06 Nov 2008 18:55:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.AppDomain 20081106065506P</guid></item><item><title>Source code checked in, #16815</title><link>http://www.codeplex.com/clrsecurity/SourceControl/ListDownloadableCommits.aspx</link><description>Add an AppDomain.IsHomogenous extension method to enable detection of simple sandbox domains</description><author>shawnfa</author><pubDate>Thu, 06 Nov 2008 18:53:11 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16815 20081106065311P</guid></item><item><title>Updated Wiki: Security.Reflection.Assembly</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Reflection.Assembly&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.Reflection.Assembly
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx" class="externalLink"&gt;Assembly&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the AssemblyExtensionMethods type.  This type is in the Security.Reflection namespace (not the System.Reflection namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.Reflection.Assembly"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.permissionset.aspx" class="externalLink"&gt;PermissionSet&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;Assembly::GetPermissionSet()
&lt;/h3&gt; &lt;br /&gt;The GetPermissionSet method returns the permission set that an assembly is granted.  This method works for assemblies loaded via implicit loads, or explicit calls to Assembly.Load(String) or Assembly.LoadFrom.  Results may not be accurate for assemblies loaded via Assembly.Load(byte[]), or dynamic assemblies created with AppDomain::DefineDynamicAssembly.&lt;br /&gt; &lt;br /&gt;This method requires FullTrust to use.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.strongname.aspx" class="externalLink"&gt;StrongName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;Assembly::GetStrongName()
&lt;/h3&gt;&lt;i&gt;Exceptions:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; ArgumentException &lt;/td&gt;&lt;td&gt; if the assembly is not strongly named &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;The GetStrongName method returns a StrongName object representing the strong name of the assembly it is called on.  This strong name may be different from the strong name in the assembly's evidence if a host has chosen to load the assembly with custom evidence.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool Assembly::IsFullyTrusted()
&lt;/h3&gt; &lt;br /&gt;The IsFullyTrusted method returns true if the assembly is granted to full trust.  This method may not return accurate results for assemblies loaded from a byte array, or defined dynamically with DefineDynamicAssembly.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool Assembly::IsStrongNamed()
&lt;/h3&gt; &lt;br /&gt;The IsStrongNamed method returns true if the assembly is signed with a strong name key pair.  It does not attempt to detect if the assembly is delay signed and loaded due to a skip verification entry on the machine.&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:46:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.Reflection.Assembly 20081017074641P</guid></item><item><title>Updated Wiki: Security.Policy.StrongName</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.StrongName&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.Security.Policy.StrongName
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.strongname.aspx" class="externalLink"&gt;StrongName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the StrongNameExtensionMethods type.  This type is in the Security.Policy namespace (not the System.Security.Policy namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.Policy.StrongName"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.strongnamemembershipcondition.aspx" class="externalLink"&gt;StrongNameMembershipCondition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; StrongName::CreateMembershipCondition()
&lt;/h3&gt; &lt;br /&gt;The CreateMembershipCondition method builds a membership condition which exactly matches the current strong name (including version).&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:38:04 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.Policy.StrongName 20081017073804P</guid></item><item><title>Updated Wiki: Security.Policy.Evidence</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.Evidence&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.Security.Policy.Evidence
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.evidence.aspx" class="externalLink"&gt;Evidence&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the EvidenceExtensionMethods type.  This type is in the Security.Policy namespace (not the System.Security.Policy namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.Policy.Evidence"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
T Evidence::GetAssemblyEvidence&amp;lt;T&amp;gt;()
&lt;/h3&gt; &lt;br /&gt;GetAssemblyEvidence&amp;lt;T&amp;gt; retrieves the first evidence object of type T supplied by the assembly that the Evidence collection is for.  If no evidence object of type T exists in the assembly evidence list, then null is returned.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
T Evidence::GetHostEvidence&amp;lt;T&amp;gt;()
&lt;/h3&gt; &lt;br /&gt;GetAssemblyEvidence&amp;lt;T&amp;gt; retrieves the first evidence object of type T supplied by the host for the assembly or AppDomain that the Evidence collection is for.  If no evidence object of type T exists in the host evidence list, then null is returned.&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:32:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.Policy.Evidence 20081017073257P</guid></item><item><title>Updated Wiki: Security.Policy.ApplicationTrust</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.ApplicationTrust&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.Security.Policy.ApplicationTrust
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.applicationtrust.aspx" class="externalLink"&gt;ApplicationTrust&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the ApplicationTrustExtensionMethods type.  This type is in the Security.Policy namespace (not the System.Security.Policy namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.Policy.ApplicationTrust"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/5y536ey6.aspx" class="externalLink"&gt;IList&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&amp;lt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.policy.strongname.aspx" class="externalLink"&gt;StrongName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&amp;gt; ApplicationTrust::GetFullTrustAssemblies()
&lt;/h2&gt; &lt;br /&gt;An ApplicationTrust object contains a default grant set as well as a list of assemblies which are fully trusted.  The GetFullTrustAssemblies method retrieves the strong names of assemblies which the ApplicationTrust object considers to be fully trusted.&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:30:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.Policy.ApplicationTrust 20081017073009P</guid></item><item><title>Updated Wiki: Security.SecurityElement</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.SecurityElement&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.Security.SecurityElement
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.securityelement.aspx" class="externalLink"&gt;SecurityElement&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the SecurityElementExtensionMethods type.  This type is in the Security namespace (not the System.Security namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.SecurityElement"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmlelement.aspx" class="externalLink"&gt;XmlElement&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;SecurityElement::ToXmlElement()
&lt;/h3&gt; &lt;br /&gt;ToXmlElement converts a SecurityElement to an equivalent XML tree in the System.Xml namespace.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmlelement.aspx" class="externalLink"&gt;XmlElement&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;SecurityElement::ToXmlElement(&lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx" class="externalLink"&gt;XmlDocument&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; containingDocument)
&lt;/h3&gt;&lt;i&gt;Parameters:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; containingDocument &lt;/td&gt;&lt;td&gt; XML Document that the created SecurityElement should be a member of &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;i&gt;Exceptions:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; ArgumentNullException &lt;/td&gt;&lt;td&gt; if &lt;i&gt;containingDocument&lt;/i&gt; is null &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;ToXmlElement converts a SecurityElement to an equivalent XML tree in the System.Xml namespace.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool SecurityElement::XmlEquals(SecurityElement rhs)
&lt;/h3&gt;&lt;i&gt;Parameters:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; rhs&lt;/td&gt;&lt;td&gt; SecurityElement to compare the current element with &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;i&gt;Exceptions:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; ArgumentNullException &lt;/td&gt;&lt;td&gt; if &lt;i&gt;rhs&lt;/i&gt; is null &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;XmlEquals performs a case-sensitive comparison of two SecurityElement XML trees.  The return value of this method is true if:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;The tags of each element are the same&lt;/li&gt;&lt;li&gt;The attributes of each element are the same&lt;/li&gt;&lt;li&gt;The child elements are XmlEqual to each other (in the order they appear in)&lt;/li&gt;&lt;li&gt;Contained text is equal&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;h3&gt;
bool SecurityElement::XmlEquals(SecurityElement rhs, &lt;a href="http://msdn.microsoft.com/library/en-us/system.stringcomparison.aspx" class="externalLink"&gt;StringComparison&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; comparisonType)
&lt;/h3&gt;&lt;i&gt;Parameters:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; rhs&lt;/td&gt;&lt;td&gt; SecurityElement to compare the current element with &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; comparisonType &lt;/td&gt;&lt;td&gt; type of string comparsions to make &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;i&gt;Exceptions:&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; ArgumentNullException &lt;/td&gt;&lt;td&gt; if &lt;i&gt;rhs&lt;/i&gt; is null &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;XmlEquals performs a comparison of two SecurityElement XML trees using the given string comparison operator.  The return value of this method is true if:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;The tags of each element are the same&lt;/li&gt;&lt;li&gt;The attributes of each element are the same&lt;/li&gt;&lt;li&gt;The child elements are XmlEqual to each other (in the order they appear in)&lt;/li&gt;&lt;li&gt;Contained text is equal&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:21:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.SecurityElement 20081017072120P</guid></item><item><title>Updated Wiki: Security.AppDomain</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.AppDomain&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
System.AppDomain
&lt;/h1&gt; &lt;br /&gt;Several extension methods for the &lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.aspx" class="externalLink"&gt;AppDomain&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; class are provided in the AppDomainExtensionMethods type.  This type is in the Security namespace (not the System namespace), so in order to use these extension methods, you will need to make sure you include this namespace as well as a reference to &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Security.AppDomain"&gt;Security.dll&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
APIs
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.permissionset.aspx" class="externalLink"&gt;PermissionSet&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;AppDomain::GetPermissionSet()
&lt;/h3&gt; &lt;br /&gt;The GetPermissionSet method returns the permission set that the current AppDomain is sandboxed with.  This is the permission set which is used if a security demand crosses the AppDomain boundary.  Using this method requires FullTrust.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
bool AppDomain::IsSandboxed()
&lt;/h3&gt; &lt;br /&gt;The IsSandboxed method returns true if the current AppDomain is a sandboxed AppDomain.  That is, if the current AppDomain has a grant set other than FullTrust.&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:12:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.AppDomain 20081017071211P</guid></item><item><title>Updated Wiki: Security.dll</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Security.dll
&lt;/h1&gt; &lt;br /&gt;Security.dll provides a set of extension methods to ease working with the Code Access Security system in the .NET Framework.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Download
&lt;/h2&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=18493"&gt;Security 1.0&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Class Reference
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.AppDomain&amp;amp;referringTitle=Security.dll"&gt;Security.AppDomain&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the AppDomain type&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.SecurityElement&amp;amp;referringTitle=Security.dll"&gt;Security.SecurityElement&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the SecurityElement type&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.ApplicationTrust&amp;amp;referringTitle=Security.dll"&gt;Security.Policy.ApplicationTrust&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the ApplicationTrust type&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.Evidence&amp;amp;referringTitle=Security.dll"&gt;Security.Policy.Evidence&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the Evidence type&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Policy.StrongName&amp;amp;referringTitle=Security.dll"&gt;Security.Policy.StrongName&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the StrongName type&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Reflection.Assembly&amp;amp;referringTitle=Security.dll"&gt;Security.Reflection.Assembly&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the Assembly type&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:06:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.dll 20081017070606P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Home&amp;version=7</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Welcome to the CLR security team's Codeplex site.  On this site you'll find a set of projects that extend the security APIs shipped with the .NET framework to provide additional functionality.  We also have some tools to help in debugging security related problems in your code.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;: &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.dll&amp;amp;referringTitle=Home"&gt;Security.dll&lt;/a&gt;&lt;br /&gt;Security.dll provides a set of extension methods to ease working with the Code Access Security system in the .NET Framework.  Within this project you will find:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Methods to determine the grant set of an assembly or AppDomain&lt;/li&gt;&lt;li&gt;Methods to help in creating and examining simple sandbox domains&lt;/li&gt;&lt;li&gt;Methods to make working with classes like Evidence and SecurityElement easier&lt;/li&gt;
&lt;/ul&gt;Download &lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=18493"&gt;Security 1.0&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;: &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll&amp;amp;referringTitle=Home"&gt;Security.Cryptography.dll&lt;/a&gt;&lt;br /&gt;Security.Cryptography.dll provides a new set of algorithm implementations to augment the built in .NET framework supported algorithms.  It also provides some APIs to extend the existing framework cryptography APIs.  Within this project you will find:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;A CNG implementation of the AES, RSA, and TripleDES encryption algorithms&lt;/li&gt;&lt;li&gt;A CNG implementation of a random number generator&lt;/li&gt;&lt;li&gt;A class that allows dynamically creating algorithms both from this library as well as all of the algorithms that ship with .NET 3.5&lt;/li&gt;&lt;li&gt;An enumerator over all of the installed CNG providers on the current machine&lt;/li&gt;&lt;li&gt;Extension methods that allow access to all of the keys installed in a CNG provider, as well as all of the algorithms the provider supports&lt;/li&gt;
&lt;/ul&gt;Download &lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607"&gt;Security.Cryptography 1.2&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;: &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.Debug.dll&amp;amp;referringTitle=Home"&gt;Security.Cryptography.Debug.dll&lt;/a&gt;&lt;br /&gt;Have you ever run into an indecipherable cryptographic exception complaining about &amp;quot;Padding is invalid and cannot be removed&amp;quot; when using the .NET Framework's symmetric algorithms?  Since nearly all bugs relating to symmetric algorithms tend to result in this same exception, it can be incredibly difficult to track down exactly what went wrong to cause the exception.  Security.Cryptography.Debug.dll is a tool that can be used in these circumstances in order to help you figure out the root cause of your cryptographic exception.&lt;br /&gt; &lt;br /&gt;Download &lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=15170"&gt;Security.Cryptography.Debug 1.0&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 19:01:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081017070156P</guid></item><item><title>Updated Release: Security 1.0 (Oct 17, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=18493</link><description>&lt;div&gt;
This is the first release of the Security.dll library, which provides extension methods and helper APIs for withing with the .NET Framework Code Access Security system.  This release contains:&lt;br&gt; &lt;br&gt;&lt;b&gt;Extension Methods:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;AppDomain&lt;/li&gt;&lt;li&gt;ApplicationTrust&lt;/li&gt;&lt;li&gt;Assembly&lt;/li&gt;&lt;li&gt;Evidence&lt;/li&gt;&lt;li&gt;SecurityElement&lt;/li&gt;&lt;li&gt;StrongName&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 18:57:10 GMT</pubDate><guid isPermaLink="false">Updated Release: Security 1.0 (Oct 17, 2008) 20081017065710P</guid></item><item><title>Released: Security 1.0 (Oct 17, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=18493</link><description>&lt;div&gt;
This is the first release of the Security.dll library, which provides extension methods and helper APIs for withing with the .NET Framework Code Access Security system.  This release contains:&lt;br&gt; &lt;br&gt;&lt;b&gt;Extension Methods:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;AppDomain&lt;/li&gt;&lt;li&gt;ApplicationTrust&lt;/li&gt;&lt;li&gt;Assembly&lt;/li&gt;&lt;li&gt;Evidence&lt;/li&gt;&lt;li&gt;SecurityElement&lt;/li&gt;&lt;li&gt;StrongName&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author></author><pubDate>Fri, 17 Oct 2008 18:57:10 GMT</pubDate><guid isPermaLink="false">Released: Security 1.0 (Oct 17, 2008) 20081017065710P</guid></item><item><title>Source code checked in, #16444</title><link>http://www.codeplex.com/clrsecurity/SourceControl/ListDownloadableCommits.aspx</link><description>Security.dll 1.0&amp;#58;&amp;#13;&amp;#10;&amp;#13;&amp;#10;  Extension Methods&amp;#58;&amp;#13;&amp;#10;    &amp;#42;AppDomain&amp;#13;&amp;#10;    &amp;#42;ApplicationTrust&amp;#13;&amp;#10;    &amp;#42;Assembly&amp;#13;&amp;#10;    &amp;#42;Evidence&amp;#13;&amp;#10;    &amp;#42;SecurityElement&amp;#13;&amp;#10;    &amp;#42;StrongName</description><author>shawnfa</author><pubDate>Fri, 17 Oct 2008 18:56:33 GMT</pubDate><guid isPermaLink="false">Source code checked in, #16444 20081017065633P</guid></item><item><title>Updated Release: Security.Cryptography 1.2 (Sep 23, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607</link><description>&lt;div&gt;
This update to the &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll"&gt;Security.Cryptography.dll&lt;/a&gt; library adds new classes to support working with X.509 certificates. The release contains all checkins through change set &lt;a href="http://www.codeplex.com/clrsecurity/SourceControl/DirectoryView.aspx?SourcePath=$/clrsecurity/Security.Cryptography&amp;changeSetId=15596"&gt;15596&lt;span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br&gt; &lt;br&gt;&lt;b&gt;Updated APIs:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;CngKey - Adds a CreateSelfSignedCertificate extension method to create an X.509 certificate that contains the given key&lt;/li&gt;&lt;li&gt;X509Certificate - Adds a HasCngKey extension method to detect if a certificate's key is stored in CNG or CAPI&lt;/li&gt;&lt;li&gt;X509Certificate2 - Adds a GetCngPrivateKey extension method to get a certificate's private key if it is stored in CNG&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Tue, 23 Sep 2008 18:02:30 GMT</pubDate><guid isPermaLink="false">Updated Release: Security.Cryptography 1.2 (Sep 23, 2008) 20080923060230P</guid></item><item><title>Released: Security.Cryptography 1.2 (Sep 23, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607</link><description>&lt;div&gt;
This update to the &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll"&gt;Security.Cryptography.dll&lt;/a&gt; library adds new classes to support working with X.509 certificates. The release contains all checkins through change set &lt;a href="http://www.codeplex.com/clrsecurity/SourceControl/DirectoryView.aspx?SourcePath=$/clrsecurity/Security.Cryptography&amp;changeSetId=15596"&gt;15596&lt;span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br&gt; &lt;br&gt;&lt;b&gt;Updated APIs:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;CngKey - Adds a CreateSelfSignedCertificate extension method to create an X.509 certificate that contains the given key&lt;/li&gt;&lt;li&gt;X509Certificate - Adds a HasCngKey extension method to detect if a certificate's key is stored in CNG or CAPI&lt;/li&gt;&lt;li&gt;X509Certificate2 - Adds a GetCngPrivateKey extension method to get a certificate's private key if it is stored in CNG&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author></author><pubDate>Tue, 23 Sep 2008 18:02:30 GMT</pubDate><guid isPermaLink="false">Released: Security.Cryptography 1.2 (Sep 23, 2008) 20080923060230P</guid></item><item><title>Updated Release: Security.Cryptography 1.1 (Aug 25, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=16650</link><description>&lt;div&gt;
This update to the &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll"&gt;Security.Cryptography.dll&lt;/a&gt; library fixes some bugs in the RSACng class as well as a few new classes and methods.  The release contains all checkins through change set &lt;a href="http://www.codeplex.com/clrsecurity/SourceControl/DirectoryView.aspx?SourcePath=&amp;changeSetId=15300"&gt;15300&lt;span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br&gt; &lt;br&gt;&lt;b&gt;Utility Classes&lt;/b&gt;:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;CryptoConfig2 - added an AddAlgorithm method&lt;/li&gt;&lt;li&gt;RSAPKCS1SHA256SignatureDescription&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Tue, 23 Sep 2008 17:54:17 GMT</pubDate><guid isPermaLink="false">Updated Release: Security.Cryptography 1.1 (Aug 25, 2008) 20080923055417P</guid></item><item><title>Updated Wiki: Security.Cryptography.dll</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll&amp;version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Security.Cryptography.dll
&lt;/h1&gt; &lt;br /&gt;Security.Cryptography.dll provides a new set of algorithm implementations to augment the built in .NET framework supported algorithms.  It also provides some APIs to extend the existing framework cryptography APIs.  All of the CNG APIs provided in this library require Windows Vista or greater to run.  The library itself is built upon the .NET Framework version 3.5.  The sources are provided in a Visual Studio 2008 project.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Download
&lt;/h2&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607"&gt;Security.Cryptography 1.2&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Class Reference
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.AesCng&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.AesCng&lt;/a&gt;&lt;/b&gt; - A managed wrapper around the CNG implementation of the AES algorithm&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.CngAlgorithm2&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.CngAlgorithm2&lt;/a&gt;&lt;/b&gt; - A set of additional &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.cngalgorithm.aspx" class="externalLink"&gt;CngAlgorithm&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; objects for algorithms not in the framework's CngAlgorithm type.&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.CngProviderCollection&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.CngProviderCollection&lt;/a&gt;&lt;/b&gt; - Enumerates over the installed CNG providers on the machine&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.CryptoConfig2&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.CryptoConfig2&lt;/a&gt;&lt;/b&gt; - Provides &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.cryptoconfig.aspx" class="externalLink"&gt;CryptoConfig&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; like access to all of the algorithms included in standard CryptoConfig, as well as the algorithms in the .NET 3.5 System.Core.dll assembly and in the Security.Cryptography.dll assembly.&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.RNGCng&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.RNGCng&lt;/a&gt;&lt;/b&gt; - A managed wrapper around the CNG random number generator&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.RSACng&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.RSACng&lt;/a&gt;&lt;/b&gt; - A managed wrapper around the CNG implementation of the RSA algorithm&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.RSAPKCS1SHA256SignatureDescription&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.RSAPKCS1SHA256SignatureDescription&lt;/a&gt;&lt;/b&gt; - A signature description class for RSA-SHA256 signatures.&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.TripleDESCng&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.TripleDESCng&lt;/a&gt;&lt;/b&gt; - A managed wrapper around the CNG implementation of the 3DES algorithm&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=System.Security.Cryptography.CngProvider&amp;amp;referringTitle=Security.Cryptography.dll"&gt;System.Security.Cryptography.CngProvider&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the CngProvider type&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=System.Security.Cryptography.CngKey&amp;amp;referringTitle=Security.Cryptography.dll"&gt;System.Security.Cryptography.CngKey&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the CngKey type&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.X509Certificates.X509CertificateCreationOptions&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.X509Certificates.X509CertificateCreationOptions&lt;/a&gt;&lt;/b&gt; - Flags for use when creating a new X509 certificate&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.X509Certificates.X509CertificateCreationParameters&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.X509Certificates.X509CertificateCreationParameters&lt;/a&gt;&lt;/b&gt; - Configuration parameters for use when creating a new X509 certificate&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.X509Certificates.X509CertificateSignatureAlgorithm&amp;amp;referringTitle=Security.Cryptography.dll"&gt;Security.Cryptography.X509Certificates.X509CertificateSignatureAlgorithm&lt;/a&gt;&lt;/b&gt; - Algorithms which can be used to sign a new X509 certificate&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=System.Security.Cryptography.X509Certificates.X509Certificate&amp;amp;referringTitle=Security.Cryptography.dll"&gt;System.Security.Cryptography.X509Certificates.X509Certificate&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the X509Certificate type&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=System.Security.Cryptography.X509Certificates.X509Certificate2&amp;amp;referringTitle=Security.Cryptography.dll"&gt;System.Security.Cryptography.X509Certificates.X509Certificate2&lt;/a&gt;&lt;/b&gt; - A set of extension methods for the X509Certificate2 type&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Tue, 23 Sep 2008 17:53:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Security.Cryptography.dll 20080923055338P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Home&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Welcome to the CLR security team's Codeplex site.  On this site you'll find a set of projects that extend the security APIs shipped with the .NET framework to provide additional functionality.  We also have some tools to help in debugging security related problems in your code.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;: &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll&amp;amp;referringTitle=Home"&gt;Security.Cryptography.dll&lt;/a&gt;&lt;br /&gt;Security.Cryptography.dll provides a new set of algorithm implementations to augment the built in .NET framework supported algorithms.  It also provides some APIs to extend the existing framework cryptography APIs.  Within this project you will find:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;A CNG implementation of the AES, RSA, and TripleDES encryption algorithms&lt;/li&gt;&lt;li&gt;A CNG implementation of a random number generator&lt;/li&gt;&lt;li&gt;A class that allows dynamically creating algorithms both from this library as well as all of the algorithms that ship with .NET 3.5&lt;/li&gt;&lt;li&gt;An enumerator over all of the installed CNG providers on the current machine&lt;/li&gt;&lt;li&gt;Extension methods that allow access to all of the keys installed in a CNG provider, as well as all of the algorithms the provider supports&lt;/li&gt;
&lt;/ul&gt;Download &lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607"&gt;Security.Cryptography 1.2&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;: &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.Debug.dll&amp;amp;referringTitle=Home"&gt;Security.Cryptography.Debug.dll&lt;/a&gt;&lt;br /&gt;Have you ever run into an indecipherable cryptographic exception complaining about &amp;quot;Padding is invalid and cannot be removed&amp;quot; when using the .NET Framework's symmetric algorithms?  Since nearly all bugs relating to symmetric algorithms tend to result in this same exception, it can be incredibly difficult to track down exactly what went wrong to cause the exception.  Security.Cryptography.Debug.dll is a tool that can be used in these circumstances in order to help you figure out the root cause of your cryptographic exception.&lt;br /&gt; &lt;br /&gt;Download &lt;a href="http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=15170"&gt;Security.Cryptography.Debug 1.0&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Tue, 23 Sep 2008 17:52:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080923055249P</guid></item><item><title>Updated Release: Security.Cryptography 1.2 (Sep 23, 2008)</title><link>http://www.codeplex.com/clrsecurity/Release/ProjectReleases.aspx?ReleaseId=17607</link><description>&lt;div&gt;
This update to the &lt;a href="http://www.codeplex.com/clrsecurity/Wiki/View.aspx?title=Security.Cryptography.dll"&gt;Security.Cryptography.dll&lt;/a&gt; library adds new classes to support working with X.509 certificates. The release contains all checkins through change set &lt;a href="http://www.codeplex.com/clrsecurity/SourceControl/DirectoryView.aspx?SourcePath=$/clrsecurity/Security.Cryptography&amp;changeSetId=15596"&gt;15596&lt;span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br&gt; &lt;br&gt;&lt;b&gt;Updated APIs:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;
&lt;li&gt;CngKey - Adds a CreateSelfSignedCertificate extension method to create an X.509 certificate that contains the given key&lt;/li&gt;&lt;li&gt;X509Certificate - Adds a HasCngKey extension method to detect if a certificate's key is stored in CNG or CAPI&lt;/li&gt;&lt;li&gt;X509Certificate2 - Adds a GetCngPrivateKey extension method to get a certificate's private key if it is stored in CNG&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>shawnfa</author><pubDate>Tue, 23 Sep 2008 17:50:52 GMT</pubDate><guid isPermaLink="false">Updated Release: Security.Cryptography 1.2 (Sep 23, 2008) 20080923055052P</guid></item><item><title>Source code checked in, #15596</title><link>http://www.codeplex.com/clrsecurity/SourceControl/ListDownloadableCommits.aspx</link><description>Add some additional information about the use of DangerousAddRef in the AcquireCngPrivateKey method.</description><author>shawnfa</author><pubDate>Mon, 08 Sep 2008 22:12:46 GMT</pubDate><guid isPermaLink="false">Source code checked in, #15596 20080908101246P</guid></item></channel></rss>