Status of CryptoAPI and advapi32 in Wine?

R.U. Deranged yes_this_is_a_real_address at earthlink.net
Mon Mar 22 15:38:23 CST 2004


I'm trying to get all major functionality of an application, eMule, to work
under Wine. eMule uses the following crypto-related imports:

ADVAPI32.AdjustTokenPrivileges
ADVAPI32.CryptAcquireContextA
ADVAPI32.CryptGenRandom
ADVAPI32.CryptReleaseContext
ADVAPI32.LookupPrivilegeValueA
ADVAPI32.OpenProcessToken
ADVAPI32.RegCloseKey
ADVAPI32.RegCreateKeyExA
ADVAPI32.RegDeleteKeyA
ADVAPI32.RegDeleteValueA
ADVAPI32.RegEnumKeyA
ADVAPI32.RegEnumKeyExA
ADVAPI32.RegOpenKeyA
ADVAPI32.RegOpenKeyExA
ADVAPI32.RegQueryValueA
ADVAPI32.RegQueryValueExA
ADVAPI32.RegSetValueExA

Some of these, ie, CryptAcquireContextA(), when called in turn make calls to
CryptoAPI. It seems CryptoAPI isn't implemented fully in Wine yet because
eMule is unable to (indirectly) utilize CryptoAPI's simple RSA services.

I've tried using the native Win98 and XP advapi32.dll without success, and
also tried using the WinXP native rsaenh.dll along with the following fake
registry modifications:

============
[HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography]
"MachineGuid"="5436453a-bc53-d43a-22a8-88433ae03991"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provide
\Microsoft Base Cryptographic Provider v1.0]
"Image Path"="rsaenh.dll"
"SigInFile"=dword:00000000
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provide
\Microsoft Strong Cryptographic Provider]
"Image Path"="rsaenh.dll"
"SigInFile"=dword:00000000
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Type
\Type 001]
"Name"="Microsoft Strong Cryptographic Provider"
"TypeName"="RSA Full (Signature and Key Exchange)"
============

(The GUID came from a patch I found which was submitted to WineX CVS.)

rsabase.dll likewise doesn't work.

I'm unsure as to what more should be done to make valid CSPs available through 
CryptoAPI/advapi32 to my Wine applications. All I need to get working for
eMule is RSA, but DSS would be nice to have also (though I haven't tested DSS
yet).

What is the current status of CryptoAPI and advapi32 emulation?

I read that someone is working on tying CryptoAPI to libgcrypt. What is the
status of that?

Cheers.




More information about the wine-users mailing list