GitXplorerGitXplorer
T

ed25519

public
18 stars
6 forks
1 issues

Commits

List of commits on branch master.
Verified
3092f9e57b259230a2049b7c23cfb6f4ae272178

Support dartjs by using fixnum/int64 on web instead (#4)

llemoony committed 3 years ago
Unverified
25d53b6127786988477e950e3da25e8f986c0689

Update README

TTougee committed 3 years ago
Unverified
110b6de97de4e6cc617cdce1a290c54b1727930a

Typo

TTougee committed 3 years ago
Unverified
394868f13c662c817b20e8b29b947435b29e772e

Bump version to 0.2.1

TTougee committed 4 years ago
Unverified
ed810f2a8eb9e55cf4505b68e816b9e364af1fcb

Add benchmark

TTougee committed 4 years ago
Unverified
dff2074ac79010123e3ef4306aa1f5c5c87b75af

Tweak keypair fields

TTougee committed 4 years ago

README

The README file for this repository.

Ed25519

Dart port of ed25519 from Golang ed25519

Pub package

Usage

import 'package:ed25519_edwards/ed25519_edwards.dart' as ed;

    void signAndVerify() {
      var keyPair = ed.generateKey();
      var privateKey = keyPair.privateKey;
      var publicKey = keyPair.publicKey;
      var message = utf8.encode('test message');
      var sig = ed.sign(privateKey, message as Uint8List);
      var result = ed.verify(publicKey, message, sig);
      assert(result == true);
    
      var wrongMessage = utf8.encode('wrong message');
      var wrongResult = ed.verify(publicKey, wrongMessage as Uint8List, sig);
      assert(wrongResult == false);
    }

APIs

Ed25519
public
seed
newKeyFromSeed
generateKey
sign
verify
Edwards25519
FeZero
FeOne
FeAdd
FeSub
FeCopy
FeCMove
FeFromBytes
FeToBytes
FeIsNegative
FeIsNonZero
FeNeg
FeCombine
FeMul
FeSqaure
FeSquare2
FeInvert
GeDoubleScalarMultVartime
PreComputedGroupElementCMove
GeScalarMultBase
ScMulAdd
ScReduce
ScMinimal

Benchmark

Simulate from pinenacl-dart Benchmark

MacBook Pro (16-inch, 2019), macOS Big Sur, with 2.4GHz i9 32GB

JiT (Dart VM) Benchmark

dart test test/benchmark/ed25519_benchmark.dart

type rate iterations time data throughput
Ed25519 - sign 50.54 MB/s 254 iterations 5025 ms 254.00 MB
Ed25519 - verify 97.38 MB/s 487 iterations 5001 ms 487.00 MB

AoT (native binary)

dart2native test/benchmark/ed25519_benchmark.dart -o ed25519_benchmark
./ed25519_benchmark

type rate iterations time data throughput
Ed25519 - sign 21.64 MB/s 109 iterations 5036 ms 109.00 MB
Ed25519 - verify 37.20 MB/s 187 iterations 5027 ms 187.00 MB

JS (Dart2JS) benchmark (too slow, suggest using other libs for dart2js and flutter web)

dart test test/benchmark/ed25519_benchmark.dart -p chrome

type rate iterations time data throughput
Ed25519 - sign 797.03 KB/s 4 iterations 5139 ms 4.00 MB
Ed25519 - verify 1.53 MB/s 8 iterations 5231 ms 8.00 MB