DPAPI and WM 2003 SE/WM 5

Hi,
I was wondering if there was anyone else who is having some difficulties using the DPAPI Crypto calls of WM 2003 SE/ WM 5.0.

What I am doing
=============
I am creating a library that wraps the provides RSA, 3DES, and RijnDael cryptoghraphic providers. As a part of this, the use of symmetric keys for the 3DES and RijnDael presents me with an interesting problem: how to securely store the symmetrtic key.

To this end, I have gone down the path of using the DPAPI Crypto unmanaged API. I have tried using P/Invoke, as well as using the OpenNETCF 1.3 ProtectedData classes, but to no avail.

The encrypt works great, and produces encrypted data nicely. However, I run into problems when I try to Unprotect the data. After much cursing and gnashing of teeth, I found the error message:

"The data is invalid."

The following is the code that I am using:

Imports OpenNETCF.Security.Cryptography

...

saltBytes = Encoding.ASCII.GetBytes(desParams.SaltValue)
derivedPassword = New PasswordDeriveBytes(desParams.Password, saltBytes)
derivedKeyBytes = derivedPassword.GetBytes(DEFAULT_KEY_SIZE)
encryptedKeyBytes = ProtectedData.Protect(derivedKeyBytes, saltBytes, DataProtectionScope.LocalMachine)
decryptedKeyBytes = ProtectedData.Unprotect(encryptedKeyBytes, saltBytes, DataProtectionScope.LocalMachine)

desParams.saltValue = "1Password!"
desParams.Password = "1Password!"
DEFAULT_KEY_SIZE = 16
I am using the OpenNETCF 1.3, with CF 2.0.
I have also tried using P/Invoke API calls, and get the same problems.

Any one out there have any ideas?

Cheers

Richard Angus

[1734 byte] By [rcangus] at [2008-2-25]
# 1
Looks like this has already been answered under:
http://www.pcreview.co.uk/forums/thread-2085250.php

where the author of the code calls out a bug in their library code in this version and points to a version with a fix. Cross-linking if anyone else is running into similar issues or tracking this thread.

Rajesh.

RajeshChandrashekaran at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices VB and C# Projects...