Simple Elliptic Curve Libraries

Suitable as external plugins for Rebex components based on Rebex SSH and Rebex TLS/SSL.

Overview

Elliptic Curve Cryptography (ECC) is an attractive alternative to classic public-key algorithms based on modular exponentiation. Compared to the algortihms such as RSA, DSA or Diffie-Hellman, elliptic curve cryptography offers equivalent security with smaller key sizes.

Unfortunately, built-in support for ECC algorithms in Microsoft Windows and .NET Framework used to be very limited, and although this got a bit better with Windows 10 and .NET Core 2.1, these libraries still come in handy.

Source Code on Github

Download Simple Elliptic Curve Libraries »

Licensing

These libraries build upon various open-source projects and are licensed under various open-source licenses. See the table below for details.

Libraries

Assembly Supported platforms Elliptic curve algorithms Based on License
Rebex.Castle.dll

  • .NET Framework 4.0-4.8
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.0-3.1
  • .NET Core 1.0-1.1
  • Mono 4.x, 5.x, 6.x
  • Xamarin.iOS (10 and higher)
  • Xamarin.Android (9 and higher)
  • Xamarin.Mac
  • Universal Windows Platform build 16299 and higher
ECDH and ECDSA with NIST P-256/P-384/P-521 or Brainpool P-256/P-384/P-512 R1 Bouncy Castle C# API by The Legion of the Bouncy Castle Adaptation of MIT X11 License
Rebex.Curve25519.dll

  • .NET Framework 4.0-4.8
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.0-3.1
  • .NET Core 1.0-1.1
  • Mono 4.x, 5.x, 6.x
  • Xamarin.iOS (10 and higher)
  • Xamarin.Android (9 and higher)
  • Xamarin.Mac
  • Universal Windows Platform build 16299 and higher
ECDH with Curve25519 C# implementation of Curve25519 by Hans Wolff, Dmitry Skiba and Matthijs van Duin Apache License 2.0
Rebex.Ed25519.dll

  • .NET Framework 4.0-4.8
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.0-3.1
  • .NET Core 1.0-1.1
  • Mono 4.x, 5.x, 6.x
  • Xamarin.iOS (10 and higher)
  • Xamarin.Android (9 and higher)
  • Xamarin.Mac
  • Universal Windows Platform build 16299 and higher
EdDSA with Ed25519 C# implementation of Ed25519 by by Christian Winnerlein, based on the SUPERCOP "ref10" implementation. Public domain license

Using elliptic curves in Rebex components

These plugins can be used with Rebex components 2016 R3. For details, see Elliptic Curve Cryptography support in Rebex SSH and Rebex TLS/SSL article from Rebex Knowledge Base.

To get started quickly, just reference suitable DLLs and register the desired ECC plugins:

C#

using Rebex.Security.Cryptography;
...

// register NIST and Brainpool plugin
AsymmetricKeyAlgorithm.Register(EllipticCurveAlgorithm.Create);

// register Curve25519 plugin
AsymmetricKeyAlgorithm.Register(Curve25519.Create);

// register Ed25519 plugin
AsymmetricKeyAlgorithm.Register(Ed25519.Create);

VB.NET

Imports Rebex.Security.Cryptography
...

' register NIST and Brainpool plugin
AsymmetricKeyAlgorithm.Register(AddressOf EllipticCurveAlgorithm.Create)

' register Curve25519 plugin
AsymmetricKeyAlgorithm.Register(AddressOf Curve25519.Create)

' register Ed25519 plugin
AsymmetricKeyAlgorithm.Register(AddressOf Ed25519.Create)

Changelog

2020-01-21 - v1.2.0 - Unified platform support. Switched to C# Ed25519 implementation.
2019-03-12 - v1.0.0 - Added support for Xamarin platforms (iOS, Android) to Rebex.Ed25519
2017-03-29 - v0.9.2 - Added support for Xamarin platforms (iOS, Android, Mac
2016-12-19 - v0.9.0 - First version of Simple Elliptic Curve Libraries released.

Send us feedback

Do you have any comments, questions or suggestions? Let us know at our support forum or contact us at support@rebex.net.