cryptunprotectdata (crypt32)
Last changed: -203.166.19.130

.
Summary
The CryptUnprotectData function decrypts and does an integrity check of the data in a DATA_BLOB structure. Usually, only a user with the same logon credentials as the encrypter can decrypt the data. In addition, the encryption and decryption must be done on the same computer.

C# Signature:

[
DllImport("Crypt32.dll",
SetLastError=true,
CharSet=System.Runtime.InteropServices.CharSet.Auto)
]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool CryptUnprotectData(
    ref DATA_BLOB pDataIn,
    StringBuilder szDataDescr,
    ref DATA_BLOB pOptionalEntropy,
    IntPtr pvReserved,
    ref CRYPTPROTECT_PROMPTSTRUCT pPromptStruct,
    CryptProtectFlags dwFlags,
    ref DATA_BLOB pDataOut
);

VB .NET Signature:

<DllImport("Crypt32.dll", SetLastError:=True, CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function CryptUnprotectData _
( _
     ByRef pDataIn As DATA_BLOB, _
     ByVal szDataDescr As StringBuilder, _
     ByRef pOptionalEntropy As DATA_BLOB, _
     ByVal pvReserved As IntPtr, _
     ByRef pPromptStruct As CRYPTPROTECT_PROMPTSTRUCT, _
     ByVal dwFlags As Integer, _
     ByRef pDataOut As DATA_BLOB _
) As Boolean
End Function

See also:

DATA_BLOB

CRYPTPROTECT_PROMPTSTRUCT

CryptProtectFlags

CryptProtectData

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

How To Create a DPAPI Library: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secmod/html/secmod21.asp

Alternative Managed API:

In .NET v2.0, the ProtectedData.Unprotect method provides the same functionality.

Documentation