You might need to specify the calling convention for the imported functions, especially if you intend to use callbacks (-with delegates) in your code, like: [DllImport("lib\\libeay32.dll" ,CallingConvention=CallingConvention.Cdecl)] Otherwise, you may get stack imbalance\ memory corruption exceptions (The default calling convention in dot net is stdcall).
-----Original Message----- From: owner-openssl-us...@openssl.org [mailto:owner-openssl-us...@openssl.org] On Behalf Of Strauch, Robert Sent: Wednesday, June 23, 2010 3:49 PM To: 'openssl-users@openssl.org' Subject: Re: Integrating OpenSSL as a DLL in Windows Here's my sample code. --- SNIP --- [DllImport("lib\\libeay32.dll")] public static extern IntPtr EVP_MD_CTX_create(); [DllImport("lib\\libeay32.dll")] public static extern IntPtr EVP_md5(); [DllImport("lib\\libeay32.dll")] public static extern int EVP_DigestInit_ex(IntPtr digestContext, IntPtr digestType, IntPtr engine); [DllImport("lib\\libeay32.dll")] public static extern int EVP_DigestUpdate(IntPtr digestContext, String messageText, int messageLength); [DllImport("lib\\libeay32.dll")] public static extern int EVP_DigestFinal_ex(IntPtr digestContext, IntPtr digestValue, IntPtr digestLength); [...] IntPtr digestContext = new IntPtr(); IntPtr digestType = new IntPtr(); IntPtr digestValue = new IntPtr(); String messageText = "Hello world!"; /* Setup MD5 context */ digestContext = EVP_MD_CTX_create(); digestType = EVP_md5(); /* Context setup successful */ if (EVP_DigestInit_ex(digestContext, digestType, IntPtr.Zero) == 1) { /* Perform hashing */ if (EVP_DigestUpdate(digestContext, messageText, messageText.Length) == 1) { /* Hashing successful */ if (EVP_DigestFinal_ex(digestContext, digestValue, IntPtr.Zero) == 1) } else { /* Something went wrong */ } } else { /* Something went wrong */ } [...] --- SNIP --- > Hello, > > I've been using OpenSSL for quite a time but now it's time > for me to integrate some functionality into my own > application (C#). That is: decrypting with a private key and > building hashsums. As far as I understood I need the > libeay32.dll to achieve this. However I cannot find something > like an API documentiation which describes how to call > OpenSSL functions from this DLL. > > Could someone assist me in this? > > Sincerely, > Robert > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org