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.
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 |
|
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 |
|
ECDH with Curve25519 | C# implementation of Curve25519 by Hans Wolff, Dmitry Skiba and Matthijs van Duin | Apache License 2.0 |
Rebex.Ed25519.dll |
|
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.