marcominetti / openssl-net

C# wrapper for the popular OpenSSL libraries
Other
7 stars 2 forks source link

OpenSSL.NET - README

Description

A managed OpenSSL wrapper written in C# for the 4.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.1g of libcrypto.so/libeay32.dll and libssl.so/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);

}