INFO: Simple Elliptic Curve Libraries

Simple Elliptic Curve Libraries

Suitable as external plugins for Rebex libraries 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 9/8/7/6/5
  • .NET Framework 4.0-4.8.1
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.1-3.1
  • Mono 5.x, 6.x
  • Xamarin.iOS (13.10 or higher)
  • Xamarin.Android (10.1 or 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 9/8/7/6/5
  • .NET Framework 4.0-4.8.1
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.1-3.1
  • Mono 5.x, 6.x
  • Xamarin.iOS (13.10 and higher)
  • Xamarin.Android (10.1 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 9/8/7/6/5
  • .NET Framework 4.0-4.8.1
  • .NET Framework 2.0-3.5 SP1
  • .NET Compact Framework 3.5-3.9
  • .NET Core 2.1-3.1
  • Mono 5.x, 6.x
  • Xamarin.iOS (13.10 and higher)
  • Xamarin.Android (10.1 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 libraries

These plugins can be used with Rebex libraries. 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 curves
AsymmetricKeyAlgorithm.Register(EllipticCurveAlgorithm.Create);
    
// register Curve25519
AsymmetricKeyAlgorithm.Register(Curve25519.Create);
    
// register Ed25519
AsymmetricKeyAlgorithm.Register(Ed25519.Create);

VB.NET

Imports Rebex.Security.Cryptography
...

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

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

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

Changelog

2020-05-29 - v1.2.1 - No longer using code signing for .NET Compact Framework binaries.
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 Rebex support forum or contact us.