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.
These libraries build upon various open-source projects and are licensed under various open-source licenses. See the table below for details.
|Assembly||Supported platforms||Elliptic curve algorithms||Based on||License|
||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|
||ECDH with Curve25519||C# implementation of Curve25519 by Hans Wolff, Dmitry Skiba and Matthijs van Duin||Apache License 2.0|
||EdDSA with Ed25519||C++/CLI port of portable implementation of Ed25519 by Orson Peters, based on the SUPERCOP "ref10" implementation||zlib license|
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);
Imports Rebex.Security.Cryptography ... ' import NIST and Brainpool curves AsymmetricKeyAlgorithm.Register(AddressOf EllipticCurveAlgorithm.Create) ' import Curve25519 AsymmetricKeyAlgorithm.Register(AddressOf Curve25519.Create) ' import Ed25519 AsymmetricKeyAlgorithm.Register(AddressOf Ed25519.Create)
2017-03-29 - Added support for Xamarin platforms (iOS, Android, Mac). 2016-12-19 - First version of Simple Elliptic Curve Libraries released. Suitable for Rebex components version 2016 R3.