Re: DPAPI implemented in Crypt32.dll

From: Drew Cooper [MSFT] (dcoop_at_online.microsoft.com)
Date: 02/27/04


Date: Thu, 26 Feb 2004 15:12:26 -0800


"via a COM object I obtained"
Aha! I had to re-read that post a couple of times until I saw that.

The DPAPI API for encrypting data is CryptProtectData. For decrypting, it's
CryptUnprotectData. The COM object must be calling those if it's using
DPAPI.

If you call a COM object and fail with an RPC error, wouldn't you suspect
that the COM object has a bug? COM implies RPC . . .

Also: You probably don't want to copy binaries from an XP install to a Win2k
one. While an app might work ok, it's really unlikely that a system dll
will work on a downlevel platform.

-- 
Drew Cooper [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.
"Alan Croston" <anonymous@discussions.microsoft.com> wrote in message
news:270c01c3fc7e$d0c2ebe0$a301280a@phx.gbl...
> Greetings all,
>
> This is fun (I had hair when I discovered this yesterday,
> none today!)
>
> I have implemented a file encryption solution using
> windows XP. this uses DPAPI and calls it via a COM object
> I obtained. I then make calls to this COM object like
> Encrypt(blob, filepath) and Decrypt(filepath, filename).
>
> This works great on windows xp. I have tested encryption
> on files up to 120 MB. I can also decrypt these files
> (Very useful lol!)
>
> However, i moved the code onto windows 2000 server and
> the call to the Crypt32.dll fails with "Automation Error:
> Remote Procedure Call Failed". It only does this when I
> try to encrypt files over about 300 kbytes. Anything less
> than 300 kbytes works great! Why does it fail when it
> works fine on xp?
>
> I have checked the versions of the dlls and XP has a
> later (larger in size) version of the Crypt32.dll, so
> obviously there were changes between 2000 and XP possibly
> impacting the implementation of the DP API.
>
> 2000 version 5.131.2195.6661 (Supplied with 2000 SP4)
> XP version   5.131.2600.1106 (Supplied with XP SP1)
>
> I have checked my code and produced versions that allow
> me to debug right up to the point where the DPAPI method
> Encrypt / Decrypt is called from my Visual Basic 6 code.
> The method is called... there is a pause... and the when
> I get the err.getLastDLLError I get the RPC failed
> message. So I am 99.999% sure that the version of Crypt32
> is to blame.
>
> Can anyone tell me what is happening? Is there any way
> that I can get around this problem e.g. coping the
> Crypt32.dll over from XP to 2000? Will that work? Can I
> upgrade the 2000 Crypt32 dll?
>
> The really frustrating thing is that there is hardly any
> info on DPAPI on the internet at all and even less of
> Crypt32.dll problems. Surely I cannot be the only person
> on the planet using DPAPI to encrypt / decrypt files!!!
> (Knowing my current luck I am! lol)
>
> Anyway, something for you guys to ponder over if you get
> the chance. I would appreciate anyones info that may help
> me to resolve this!
>
> Thanks in anticipation
>
> Regards
>
> Alan Croston
>
>
>
>


Relevant Pages

  • DPAPI implemented in Crypt32.dll
    ... This works great on windows xp. ... me to debug right up to the point where the DPAPI method ... Encrypt / Decrypt is called from my Visual Basic 6 code. ...
    (microsoft.public.win2000.security)
  • Re: Encryption Key Question
    ... Here's a very quick explanation of how DPAPI works in Windows. ... > used to encrypt the user's secrets. ... the master key can not be decrypted. ... > that there are no universal solutions in security. ...
    (Security-Basics)
  • Re: Size of Entropy with Dpapi Encrypted Connection String
    ... > I am doing TWO things with the dpapi. ... and the symmetric key is used to encrypt and decrypt info in a ... > that was the same number of bytes as the symmetric aes binary key, ... > decrypt some arbitrary text, ...
    (microsoft.public.dotnet.framework.aspnet.security)
  • Re: Web.config or App.config Security
    ... I would be surprised if you could use Data Protection Provider from a Web ... If I understand it correctly, it uses DPAPI, but DPAPI (with ... .config file. ... > encrypt all my configurations files. ...
    (microsoft.public.dotnet.security)
  • Re: Size of Entropy with Dpapi Encrypted Connection String
    ... I am doing TWO things with the dpapi. ... I am decrypting my text encryption string, stored in my web config, ... and the symmetric key is used to encrypt and decrypt info in a ... that was the same number of bytes as the symmetric aes binary key, ...
    (microsoft.public.dotnet.framework.aspnet.security)