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 is very limited, which is where these libraries 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 2.0/3.x
  • .NET 4.x
  • .NET Compact Framework 2.0/3.5/3.9
  • .NET Standard 1.6
  • .NET Core 1.0
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 2.0/3.x
  • .NET 4.x
  • .NET Compact Framework 2.0/3.5/3.9
  • .NET Standard 1.6
  • .NET Core 1.0
ECDH with Curve25519 C# implementation of Curve25519 by Hans Wolff, Dmitry Skiba and Matthijs van Duin Apache License 2.0
Rebex.Ed25519.dll

  • .NET 2.0/3.x
  • .NET 4.x
  • .NET Standard 1.6
  • .NET Core 1.0
EdDSA with Ed25519 C++/CLI port of portable implementation of Ed25519 by Orson Peters, based on the SUPERCOP "ref10" implementation zlib 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:

using Rebex.Security.Cryptography;
...

// import NIST and Brainpool curves
AsymmetricKeyAlgorithm.Register(EllipticCurveAlgorithm.Create);

// import Curve25519
AsymmetricKeyAlgorithm.Register(Curve25519.Create);

// import Ed25519
AsymmetricKeyAlgorithm.Register(Ed25519.Create);

Changelog

2016-12-19 - First version of Simple Elliptic Curve Libraries released.
             Suitable for Rebex components version 2016 R3.

Send us feedback

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