[Mono-dev] About System.Core.dll System.Security.Cryptography and Cng

Sebastien Pouliot sebastien.pouliot at gmail.com
Wed Feb 16 08:39:59 EST 2011

Hello Juho,

On Wed, 2011-02-16 at 12:19 +0200, Juho Vähä-Herttua wrote:
> Hi,
> I have implemented elliptic curve cryptography (ECC) algorithms on .NET 
> by using the BigInteger struct from .NET 4.0. On Fp curves they seem to 
> be considerably faster (about twice the speed) than the BouncyCastle 
> library http://www.bouncycastle.org/csharp/ I used for comparison. This 
> is probably mostly because of the speed of the BigInteger 
> implementation, because I don't see much difference in the actual 
> arithmetics.
> I have also implemented most of the Cng related enumerations in 
> System.Security.Cryptography 

iirc we already part them (or part of them in our git repository)

> and reverse engineered some 
> ECDiffieHellmanCng class functionality where the documentation is not 
> clear. 

"reverse engineered" means a lot of things to different people. Can you
elaborate on this and ensure it's in compliance with:


> I could send these upstream to Mono, but since there are a lot of 
> files to be added, I'd like to know how should I proceed. 

That would be great :) and a patch will be fine (for review). But first
please read both:

> They would 
> probably need at least reviewing, 


> should I write some tests before they 
> can be accepted? 

Yes, definitively! Unit tests (nunit) are required to ensure it works
correctly (on both MS and Mono runtimes) and ensure no future

> Does Novell have some copyright policy I should 
> consider? Releasing them with the MIT license shouldn't be a problem.

Our class libraries are MIT.X11 licensed, so as long as you can release
this code with that license there should not be any problem.


More information about the Mono-devel-list mailing list