[Mono-dev] BouncyCastle C# port under Mono

Sebastien Pouliot sebastien.pouliot at gmail.com
Mon Aug 21 08:37:39 EDT 2006

Hello Peter,

On Mon, 2006-08-21 at 16:17 +1000, Peter Dettman wrote:
> Hi all,
> I want to report on my recent experiences getting the C# port of  
> BouncyCastle Crypto API (http://www.bouncycastle.org/csharp/) running on 
> Mono. It will be a reasonably brief report as it turned out to be mostly 
> painless :).
> (BC is written entirely in C# for .NET 1.1 by the way).

BouncyCastle is a great cryptographic library. However it's C# port
doesn't use the cryptographic base classes of the FX so it somewhat
limits it's usefulness (e.g. yet another API to learn and difficult
interop with existing code).

> Here's what I did:
> - Installed Mono  and MonoDevelop 0.10 via the Ubuntu package 
> manager.
> - Imported the existing VS2003 solution file in MonoDevelop, and built 
> everything, with no significant issues.
> - The existing NAnt build file also seemed to work without modification 
> (although I am having a little trouble running the nunit tests via nant).
> - Ran our regression tests revealing only one failure, which I tracked 
> down to a bug in the x86 runtime (Bug# 79087), fixed in svn.
> ...and that's all there was to it.
> I certainly expected it to be more painful; that it wasn't is to the 
> credit of the Mono developers.
> The regression tests take a few minutes to run, allowing a (very) 
> ballpark performance observation that Mono is about twice as slow as 
> MS.NET for running these tests. I guess anyone concerned with 
> performance of Mono might find some or all of these tests a useful 
> benchmark.

The results are similar to running our cryptographic code on top of the
MS runtime, i.e. they get twice as fast.

> I would be interested in hearing from people who are able to test 
> BC/Mono on other architectures than x86. The crypto algorithms do a lot 
> of bit/byte twiddling, and could potentially shake out similar problems 
> in other runtimes to the bug above.

You can get an approximate idea of the time required by other
architectures when looking at monobuild, compare the unit tests
execution time with the runtime build time. However the results will be
more "general" (and better reflect real-life scenarios) than CPU-bound
cryptographic tests.

> Cheers,
> Pete.

Thanks for the report!
Sebastien Pouliot  <sebastien at ximian.com>
Blog: http://pages.infinit.net/ctech/

More information about the Mono-devel-list mailing list