OpenSSL.NET - README Description ----------- A managed OpenSSL wrapper written in C# for the 2.0 .NET Framework that exposes both the Crypto API and the SSL API. This a must for .NET developers that need crypto but don't want to use Microsoft's SSPI. This wrapper is based on version 1.0.0d of libeay32.dll and ssleay32.dll. Wrapper Example --------------- The following is a partial example to show the general pattern of wrapping onto the C API. Take DSA and the following C prototypes: DSA * DSA_new(void); void DSA_free(DSA *dsa); int DSA_size(const DSA *dsa); int DSA_generate_key(DSA *dsa); int DSA_sign(int dummy, const unsigned char *dgst, int len, unsigned char *sigret, unsigned int *siglen, DSA *dsa); int DSA_verify(int dummy, const unsigned char *dgst, int len, const unsigned char *sigbuf, int siglen, DSA *dsa); Which gets wrapped as something akin to: public class DSA : IDisposable { // calls DSA_new() public DSA(); // calls DSA_free() as needed ~DSA(); // calls DSA_free() as needed public void Dispose(); // returns DSA_size() public int Size { get; } // calls DSA_generate_key() public void GenerateKeys(); // calls DSA_sign() public byte[] Sign(byte[] msg); // returns DSA_verify() public bool Verify(byte[] msg, byte[] sig); }