Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

C# wrapper for the popular OpenSSL libraries

tag: 0.4.3
README
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 0.9.8k 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);
}
Something went wrong with that request. Please try again.