Skip to content

C# .NET Port of the Curve25519 Diffie-Hellman function

License

Notifications You must be signed in to change notification settings

germanf/curve25519

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Curve25519 is an elliptic curve, developed by Dan Bernstein, for fast Diffie-Hellman key agreement.

Ported parts from Java to C# and refactored by Hans Wolff, 17/09/2013.
Original: https://github.com/hanswolff/curve25519/

Ported from C to Java by Dmitry Skiba [sahn0], 23/02/08.
Original: http://code.google.com/p/curve25519-java/

C implementation based on generic 64-bit integer implementation of Curve25519 ECDH
Written by Matthijs van Duin, 200608242056
Original: http://cds.xs4all.nl:8081/ecdh/ (broken link)

Warning! This implementation is susceptible to timing attacks!

Usage Example

// what Alice does
byte[] aliceRandomBytes = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(aliceRandomBytes);

byte[] alicePrivate = Curve25519.ClampPrivateKey(aliceRandomBytes);
byte[] alicePublic = Curve25519.GetPublicKey(alicePrivate);

// what Bob does
byte[] bobRandomBytes = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(bobRandomBytes);

byte[] bobPrivate = Curve25519.ClampPrivateKey(bobRandomBytes);
byte[] bobPublic = Curve25519.GetPublicKey(bobPrivate);

// what Alice does with Bob's public key
byte[] aliceShared = Curve25519.GetSharedSecret(alicePrivate, bobPublic);

// what Bob does with Alice' public key
byte[] bobShared = Curve25519.GetSharedSecret(bobPrivate, alicePublic);

// aliceShared == bobShared

NuGet Package

...can be downloaded from here:
https://www.nuget.org/packages/Curve25519/

ECDSA

You cannot sign and verify messages with the implementation above. If you need an ECDSA you can use Ed25519.

A good port of Ed25519 can be found here:
https://github.com/CodesInChaos/Chaos.NaCl

About

C# .NET Port of the Curve25519 Diffie-Hellman function

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%