<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Microsoft_CryptoAPI</id>
	<title>Microsoft CryptoAPI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Microsoft_CryptoAPI"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Microsoft_CryptoAPI&amp;action=history"/>
	<updated>2026-05-05T21:03:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Microsoft_CryptoAPI&amp;diff=2231577&amp;oldid=prev</id>
		<title>125.90.10.178 at 08:17, 27 June 2025</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Microsoft_CryptoAPI&amp;diff=2231577&amp;oldid=prev"/>
		<updated>2025-06-27T08:17:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Application programming interface}}&lt;br /&gt;
{{Confusing|date=January 2009}}&lt;br /&gt;
The Microsoft Windows platform specific &amp;#039;&amp;#039;&amp;#039;Cryptographic Application Programming Interface&amp;#039;&amp;#039;&amp;#039; (also known variously as &amp;#039;&amp;#039;&amp;#039;CryptoAPI&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Microsoft Cryptography API&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;MS-CAPI&amp;#039;&amp;#039;&amp;#039; or simply &amp;#039;&amp;#039;&amp;#039;CAPI&amp;#039;&amp;#039;&amp;#039;) is an [[application programming interface]] included with [[Microsoft Windows]] [[operating system]]s that provides services to enable developers to secure Windows-based applications using [[cryptography]]. It is a set of [[Dynamic-link library|dynamically linked libraries]] that provides an [[abstraction layer]] which isolates programmers from the code used to encrypt the data. The Crypto API was first introduced in [[Windows 95 OSR2]]&amp;lt;ref&amp;gt;https://www.geoffchappell.com/notes/windows/archive/cryptoapi/index.htm&amp;lt;/ref&amp;gt; and [[Windows NT 4.0]]&amp;lt;ref&amp;gt;[http://www.microsoft.com/msj/archive/S413.aspx Poking Around Under the Hood: A Programmer&amp;#039;s View of Windows NT 4.0]&amp;lt;/ref&amp;gt; and enhanced in subsequent versions.&lt;br /&gt;
&lt;br /&gt;
CryptoAPI supports both [[Public-key cryptography|public-key]] and [[Symmetric key algorithm|symmetric key]] cryptography, though persistent symmetric keys are not supported. It includes functionality for encrypting and decrypting data and for [[authentication]] using [[digital certificate]]s. It also includes a [[cryptographically secure pseudorandom number generator]] function [[CryptGenRandom]].&lt;br /&gt;
&lt;br /&gt;
CryptoAPI works with a number of CSPs ([[Cryptographic Service Provider]]s) installed on the machine. CSPs are the modules that do the actual work of encoding and decoding data by performing the cryptographic functions. Vendors of [[Hardware security module|HSMs]] may supply a CSP which works with their hardware.&lt;br /&gt;
&lt;br /&gt;
==Cryptography API: Next Generation==&lt;br /&gt;
&lt;br /&gt;
[[Windows Vista]] features an update to the Crypto API known as &amp;#039;&amp;#039;&amp;#039;Cryptography API: Next Generation&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;CNG&amp;#039;&amp;#039;&amp;#039;). It has better API factoring to allow the same functions to work using a wide range of cryptographic algorithms, and includes a number of newer algorithms that are part of the [[National Security Agency]] (NSA) [[NSA Suite B Cryptography|Suite B]].&amp;lt;ref&amp;gt;[http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml Suite B] {{webarchive|url=https://web.archive.org/web/20090207005135/http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml |date=2009-02-07 }}&amp;lt;/ref&amp;gt; It is also flexible, featuring support for plugging custom cryptographic APIs into the CNG runtime. However, CNG Key Storage Providers still do not support symmetric keys.&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/bb204778%28v=vs.85%29.aspx Key Storage and Retrieval, Microsoft]&amp;lt;/ref&amp;gt; CNG works in both [[user mode|user]] and [[kernel mode]], and also supports all of the algorithms from the CryptoAPI. The Microsoft provider that implements CNG is housed in Bcrypt.dll.&lt;br /&gt;
&lt;br /&gt;
CNG also supports [[elliptic curve cryptography]] which, because it uses shorter keys for the same expected [[level of security]], is more efficient than RSA.&amp;lt;ref&amp;gt;[https://www.nsa.gov/business/programs/elliptic_curve.shtml The Case for Elliptic Curve Cryptography, NSA]&amp;lt;/ref&amp;gt; The CNG API integrates with the [[smart card]] subsystem by including a Base Smart Card Cryptographic Service Provider (Base CSP) module which encapsulates the smart card API. Smart card manufacturers just have to make their devices compatible with this, rather than provide a from-scratch solution.&lt;br /&gt;
&lt;br /&gt;
CNG also adds support for [[Dual_EC_DRBG]],&amp;lt;ref name=&amp;quot;Schneier&amp;quot;&amp;gt;{{cite web |url=http://www.schneier.com/blog/archives/2007/12/dual_ec_drbg_ad.html |title=Dual_EC_DRBG Added to Windows Vista |last=Schneier |first=Bruce |author-link=Bruce Schneier |date=December 17, 2007 |work=Schneier on Security |access-date=January 13, 2010}}&amp;lt;/ref&amp;gt; a [[pseudorandom number generator]] defined in [[NIST SP 800-90A]] that could expose the user to eavesdropping by the [[National Security Agency]] since it contains a [[kleptography|kleptographic]] backdoor, unless the developer remembers to generate new base points with a different cryptographically secure pseudorandom number generator or a [[true random number generator]] and then publish the generated seed in order to remove the NSA backdoor. It is also very slow.&amp;lt;ref name=&amp;quot;Schneier2&amp;quot;&amp;gt;{{cite web |url=http://www.schneier.com/blog/archives/2007/11/the_strange_sto.html |title=The Strange Story of Dual_EC_DRBG |last=Schneier |first=Bruce |author-link=Bruce Schneier |date=November 15, 2007 |work=Schneier on Security |access-date=January 12, 2010}}&amp;lt;/ref&amp;gt; It is only used when called for explicitly.&lt;br /&gt;
&lt;br /&gt;
CNG also replaces the default PRNG with [[CTR_DRBG]] using AES as the block cipher, because the earlier RNG which is defined in the now superseded FIPS 186-2 is based on either [[Data Encryption Standard|DES]] or [[SHA-1]], both which have been broken.&amp;lt;ref&amp;gt;{{cite web |url=http://csrc.nist.gov/publications/fips/archive/fips186-2/fips186-2.pdf |title=FIPS PUB 186-2 |publisher=[[National Institute of Standards and Technology]] |work=[[Federal Information Processing Standard]]s |date=January 27, 2000 |access-date=January 13, 2010}}&amp;lt;/ref&amp;gt; CTR_DRBG is one of the two algorithms in NIST SP 800-90 endorsed by [[Bruce Schneier|Schneier]], the other being Hash_DRBG.&amp;lt;ref name=&amp;quot;Schneier2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[CAPICOM]]&lt;br /&gt;
* [[DPAPI]]&lt;br /&gt;
* [[Encrypting File System]]&lt;br /&gt;
* [[Public-key cryptography]]&lt;br /&gt;
* [[Cryptographic Service Provider]]&lt;br /&gt;
* [[PKCS11|PKCS#11]]&lt;br /&gt;
* [[Crypto API (Linux)]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/aa380256.aspx Cryptography Reference on MSDN]&lt;br /&gt;
* [https://web.archive.org/web/20130212010016/http://www.cryptodox.com/Microsoft_CAPI Microsoft CAPI] at CryptoDox&lt;br /&gt;
&lt;br /&gt;
{{Microsoft APIs}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Cryptographic Api}}&lt;br /&gt;
[[Category:Cryptographic software]]&lt;br /&gt;
[[Category:Microsoft application programming interfaces]]&lt;br /&gt;
[[Category:Microsoft Windows security technology]]&lt;/div&gt;</summary>
		<author><name>125.90.10.178</name></author>
	</entry>
</feed>